{"id":15728700,"url":"https://github.com/chantsune/portable-network-archive","last_synced_at":"2025-12-26T03:36:10.291Z","repository":{"id":65429135,"uuid":"239524390","full_name":"ChanTsune/Portable-Network-Archive","owner":"ChanTsune","description":"PNA (Portable Network Archive) is a highly scalable archive format that can be compressed, encrypted, and split. Also, its data structure is inspired by the PNG data structure.","archived":false,"fork":false,"pushed_at":"2025-04-13T04:10:53.000Z","size":3666,"stargazers_count":11,"open_issues_count":29,"forks_count":1,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-04-13T04:52:21.637Z","etag":null,"topics":["archive","archive-format","compression","data-structures","file-format","rust","rust-lang","zstd"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ChanTsune.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE-APACHE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-02-10T13:56:54.000Z","updated_at":"2025-04-13T04:10:55.000Z","dependencies_parsed_at":"2023-11-12T16:13:08.455Z","dependency_job_id":"f468b533-2a82-4e86-87c3-64516e5fc1c9","html_url":"https://github.com/ChanTsune/Portable-Network-Archive","commit_stats":{"total_commits":1554,"total_committers":3,"mean_commits":518.0,"dds":"0.11196911196911197","last_synced_commit":"f9a1d5bb6fa7212ed2b47948c91831b509dfa206"},"previous_names":[],"tags_count":89,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ChanTsune%2FPortable-Network-Archive","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ChanTsune%2FPortable-Network-Archive/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ChanTsune%2FPortable-Network-Archive/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ChanTsune%2FPortable-Network-Archive/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ChanTsune","download_url":"https://codeload.github.com/ChanTsune/Portable-Network-Archive/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248665767,"owners_count":21142123,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["archive","archive-format","compression","data-structures","file-format","rust","rust-lang","zstd"],"created_at":"2024-10-03T23:05:23.566Z","updated_at":"2025-12-26T03:36:10.286Z","avatar_url":"https://github.com/ChanTsune.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Portable Network Archive (PNA)\n\n[![Crates.io](https://img.shields.io/crates/v/portable-network-archive.svg)](https://crates.io/crates/portable-network-archive)\n[![Downloads](https://img.shields.io/crates/d/portable-network-archive.svg)](https://crates.io/crates/portable-network-archive)\n[![Docs.rs](https://docs.rs/portable-network-archive/badge.svg)](https://docs.rs/portable-network-archive)\n[![Test](https://github.com/ChanTsune/Portable-Network-Archive/actions/workflows/test.yml/badge.svg)](https://github.com/ChanTsune/Portable-Network-Archive/actions/workflows/test.yml)\n![License](https://img.shields.io/crates/l/portable-network-archive.svg)\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"./icon.svg\" alt=\"PNA\" width=\"100\"/\u003e\n\u003c/div\u003e\n\n**Portable Network Archive (PNA)** is a flexible, secure, and cross-platform archive format inspired by the PNG data structure. It combines the simplicity of ZIP with the robustness of TAR, providing efficient compression, strong encryption, and seamless splitting and streaming capabilities.\n\n### Why PNA?\n\n**Portable Network Archive (PNA): A Flexible, Secure, and Cross-Platform Archive Format**\n- **Portability:** Works seamlessly across multiple platforms, combining the strengths of TAR and ZIP formats.\n- **Compression Flexibility:** Advanced per-file and archive-wide compression options reduce the need for full archive decompression.\n- **Encryption \u0026 Security:** Supports 256-bit AES and Camellia for robust protection of sensitive data.\n- **Splittable Structure**: Based on PNG’s data unit structure, enabling the easy division of large archives into smaller parts.\n- **Streamability:** Supports serial read and write operations, making it suitable for streaming processing, similar to a TAR format.\n- **Extensibility**: Designed to accommodate future extensions and private add-ons, ensuring compatibility with the basic PNA format while allowing for flexible customization.\n- **Error Resilience:** File integrity checks and error detection ensure data is secure during transmission.\n\nAdditionally, the PNA specification includes a rationale appendix to help developers understand key design choices, making implementation more straightforward.\n\n## Features\n\n- **File Compression and Decompression**\n  - [x] Supports zlib, zstd, and xz.\n\n- **File Encryption and Decryption**\n  - [x] Supports 256-bit AES and 256-bit Camellia.\n\n- **Solid Mode**\n  - [x] Compresses and encrypts the entire archive as a single block.\n\n- **File Attribute Preservation (Maintains and restores)**\n  - [x] File permissions.\n  - [x] File timestamps.\n  - [x] Extended attributes.\n  - [x] Access Control Lists (ACLs) (experimental).\n\n## CLI Supported Platform\n- Cross-platform support including Windows, Linux, macOS, and FreeBSD  \n  _(Support for additional platforms planned.)_\n\n## Installation\n\n### Via Shell (Prebuilt Binary)\n\n#### On Linux or macOS\n\n```sh\ncurl --proto '=https' --tlsv1.2 -LsSf 'https://github.com/ChanTsune/Portable-Network-Archive/releases/latest/download/portable-network-archive-installer.sh' | sh\n```\n\n#### On Windows\n\n```powershell\npowershell -ExecutionPolicy Bypass -c \"irm https://github.com/ChanTsune/Portable-Network-Archive/releases/latest/download/portable-network-archive-installer.ps1 | iex\"\n```\n\n### Via Cargo\n\n```sh\ncargo install portable-network-archive\n```\n\n### From Source (via Cargo)\n\n```sh\ncargo install --git https://github.com/ChanTsune/Portable-Network-Archive.git portable-network-archive\n```\n\n## Basic Usage\n\nNote on archive argument style\n- The positional archive argument `\u003cARCHIVE\u003e` is deprecated since version 0.28.0. Use `-f/--file \u003cARCHIVE\u003e` instead. The positional form is still accepted for backward compatibility and will emit a warning. It will be removed in a future release.\n\nCreate an archive:\n```sh\npna create -f \u003cARCHIVE\u003e [FILES]...\n```\n\nExtract an archive:\n```sh\npna extract -f \u003cARCHIVE\u003e\n```\n\nList archive contents:\n```sh\npna list -f \u003cARCHIVE\u003e\n```\n\nFor more commands and options:\n```sh\npna --help\n```\n\nSee also the [CLI Reference](./docs/cli-reference.md) for detailed command documentation.\n\n## Specification\n\nDetailed information is available in the [Specification](https://portable-network-archive.github.io/Portable-Network-Archive-Specification/) document.\n\n# License\n\nThis project is licensed under either of\n\n* Apache License, Version 2.0, ([LICENSE-APACHE](./LICENSE-APACHE) or \u003chttp://www.apache.org/licenses/LICENSE-2.0\u003e)\n* MIT license ([LICENSE-MIT](./LICENSE-MIT) or \u003chttp://opensource.org/licenses/MIT\u003e)\n\nat your option.\n\n### Contribution\n\nUnless you explicitly state otherwise, any contribution intentionally submitted\nfor inclusion in this project by you, as defined in the Apache-2.0 license,\nshall be dual licensed as above, without any additional terms or conditions.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchantsune%2Fportable-network-archive","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchantsune%2Fportable-network-archive","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchantsune%2Fportable-network-archive/lists"}