{"id":13573728,"url":"https://github.com/vasi/pixz","last_synced_at":"2025-05-14T19:01:52.571Z","repository":{"id":778530,"uuid":"469964","full_name":"vasi/pixz","owner":"vasi","description":"Parallel, indexed xz compressor","archived":false,"fork":false,"pushed_at":"2025-03-08T07:16:52.000Z","size":1408,"stargazers_count":735,"open_issues_count":36,"forks_count":62,"subscribers_count":38,"default_branch":"master","last_synced_at":"2025-04-02T09:41:51.610Z","etag":null,"topics":["hacktoberfest"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-2-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vasi.png","metadata":{"files":{"readme":"README.md","changelog":"NEWS","contributing":null,"funding":null,"license":"LICENSE","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":"2010-01-13T05:52:38.000Z","updated_at":"2025-03-31T04:22:22.000Z","dependencies_parsed_at":"2024-05-01T22:02:44.475Z","dependency_job_id":"54a0411b-177d-465c-9a94-03d3dd234a50","html_url":"https://github.com/vasi/pixz","commit_stats":{"total_commits":224,"total_committers":18,"mean_commits":"12.444444444444445","dds":0.5714285714285714,"last_synced_commit":"d2131cc19f736473bae4618a49363fa876027240"},"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vasi%2Fpixz","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vasi%2Fpixz/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vasi%2Fpixz/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vasi%2Fpixz/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vasi","download_url":"https://codeload.github.com/vasi/pixz/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248027406,"owners_count":21035594,"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":["hacktoberfest"],"created_at":"2024-08-01T15:00:40.347Z","updated_at":"2025-04-09T11:03:56.960Z","avatar_url":"https://github.com/vasi.png","language":"C","funding_links":[],"categories":["Compression","C","压缩","Compression ##"],"sub_categories":[],"readme":"pixz\n====\n\n[![Build Status](https://travis-ci.org/vasi/pixz.svg?branch=master)](https://travis-ci.org/vasi/pixz)\n\nPixz (pronounced *pixie*) is a parallel, indexing version of `xz`.\n\nRepository: https://github.com/vasi/pixz\n\nDownloads: https://github.com/vasi/pixz/releases\n\npixz vs xz\n----------\n\nThe existing [XZ Utils](http://tukaani.org/xz/) provide great compression in the `.xz` file format,\nbut they produce just one big block of compressed data. Pixz instead produces a collection of\nsmaller blocks which makes random access to the original data possible. This is especially useful\nfor large tarballs.\n\n### Differences to xz\n\n-   `pixz` automatically indexes tarballs during compression (unless the `-t` argument is used)\n-   `pixz` supports parallel decompression, which `xz` does not\n-   `pixz` defaults to using all available CPU cores, while `xz` defaults to using only one core\n-   `pixz` provides `-i` and `-o` command line options to specify input and output file\n-   `pixz` does not need the command line option `-z` (or `--compress`). Instead, it compresses by default, and decompresses if `-d` is passed.\n-   `pixz` uses different logic to decide whether to use stdin/stdout. `pixz somefile` will always output to another file, while `pixz` with no filenames will always use stdin/stdout. There's no `-c` argument to explicitly request stdout.\n-   Some other flags mean different things for `pixz` and `xz`, including `-f`, `-l`, `-q` and `-t`. Please read the manpages for more detail on these.\n\nBuilding pixz\n-------------\n\nGeneral help about the building process's configuration step can be acquired via:\n\n```\n./configure --help\n```\n\n### Dependencies\n\n-   pthreads\n-   liblzma 4.999.9-beta-212 or later (from the xz distribution)\n-   libarchive 2.8 or later\n-   AsciiDoc to generate the man page\n\n### Build from Release Tarball\n\n```\n./configure\nmake\nmake install\n```\n\nYou many need `sudo` permissions to run `make install`.\n\n### Build from GitHub\n\n```\ngit clone https://github.com/vasi/pixz.git\ncd pixz\n./autogen.sh\n./configure\nmake\nmake install\n```\n\nYou many need `sudo` permissions to run `make install`.\n\nUsage\n-----\n\n### Single Files\n\nCompress a single file (no tarball, just compression), multi-core:\n\n    pixz bar bar.xz\n\nDecompress it, multi-core:\n\n    pixz -d bar.xz bar\n\n### Tarballs\n\nCompress and index a tarball, multi-core:\n\n    pixz foo.tar foo.tpxz\n\nVery quickly list the contents of the compressed tarball:\n\n    pixz -l foo.tpxz\n\nDecompress the tarball, multi-core:\n\n    pixz -d foo.tpxz foo.tar\n\nVery quickly extract a single file, multi-core, also verifies that contents match index:\n\n    pixz -x dir/file \u003c foo.tpxz | tar x\n\nCreate a tarball using pixz for multi-core compression:\n\n    tar -Ipixz -cf foo.tpxz foo/\n\n### Specifying Input and Output\n\nThese are the same (also work for `-x`, `-d` and `-l` as well):\n\n    pixz foo.tar foo.tpxz\n    pixz \u003c foo.tar \u003e foo.tpxz\n    pixz -i foo.tar -o foo.tpxz\n\nExtract the files from `foo.tpxz` into `foo.tar`:\n\n    pixz -x -i foo.tpxz -o foo.tar file1 file2 ...\n\nCompress to `foo.tpxz`, removing the original:\n\n    pixz foo.tar\n\nExtract to `foo.tar`, removing the original:\n\n    pixz -d foo.tpxz\n\n### Other Flags\n\nFaster, worse compression:\n\n    pixz -1 foo.tar\n\nBetter, slower compression:\n\n    pixz -9 foo.tar\n\nUse exactly 2 threads:\n\n    pixz -p 2 foo.tar\n\nCompress, but do not treat it as a tarball, i.e. do not index it:\n\n    pixz -t foo.tar\n\nDecompress, but do not check that contents match index:\n\n    pixz -d -t foo.tpxz\n\nList the xz blocks instead of files:\n\n    pixz -l -t foo.tpxz\n\nFor even more tuning flags, check the manual page:\n\n    man pixz\n\nComparison to other Tools\n-------------------------\n\n### plzip\n\n-   about equally complex and efficient\n-   lzip format seems less-used\n-   version 1 is theoretically indexable, I think\n\n### ChopZip\n\n-   written in Python, much simpler\n-   more flexible, supports arbitrary compression programs\n-   uses streams instead of blocks, not indexable\n-   splits input and then combines output, much higher disk usage\n\n### pxz\n\n-   simpler code\n-   uses OpenMP instead of pthreads\n-   uses streams instead of blocks, not indexable\n-   uses temporary files and does not combine them until the whole file is compressed, high disk and\n    memory usage\n\n### pbzip2\n\n-   not indexable\n-   appears slow\n-   bzip2 algorithm is non-ideal\n\n### pigz\n\n-   not indexable\n\n### dictzip, idzip\n\n-   not parallel\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvasi%2Fpixz","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvasi%2Fpixz","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvasi%2Fpixz/lists"}