omnizip 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.rspec +3 -0
- data/.rubocop.yml +32 -0
- data/.rubocop_todo.yml +754 -0
- data/COPYING +502 -0
- data/Gemfile +17 -0
- data/LICENSE +12 -0
- data/README.adoc +1045 -0
- data/Rakefile +12 -0
- data/benchmark/README.md +260 -0
- data/benchmark/benchmark_suite.rb +125 -0
- data/benchmark/compression_bench.rb +181 -0
- data/benchmark/filter_bench.rb +180 -0
- data/benchmark/models/benchmark_result.rb +59 -0
- data/benchmark/models/comparison_result.rb +69 -0
- data/benchmark/profile_suite.rb +167 -0
- data/benchmark/reporter.rb +150 -0
- data/benchmark/run_benchmarks.rb +66 -0
- data/benchmark/test_data.rb +137 -0
- data/config/formats/rar3_spec.yml +91 -0
- data/config/formats/rar5_spec.yml +102 -0
- data/docs/.github/workflows/docs.yml +142 -0
- data/docs/.gitignore +21 -0
- data/docs/.lychee.toml +67 -0
- data/docs/Gemfile +13 -0
- data/docs/RAR_WRITE_SUPPORT.md +26 -0
- data/docs/README.md +101 -0
- data/docs/_config.yml +112 -0
- data/docs/assets/logo.svg +1 -0
- data/docs/assets/omnizip-logo.pdf +1540 -11
- data/docs/comparison/feature-matrix.adoc +694 -0
- data/docs/comparison/index.adoc +113 -0
- data/docs/comparison/vs-7zip.adoc +309 -0
- data/docs/comparison/vs-peazip.adoc +77 -0
- data/docs/comparison/vs-rubyzip.adoc +342 -0
- data/docs/comparison/vs-winrar.adoc +100 -0
- data/docs/compatibility.adoc +579 -0
- data/docs/concepts/index.adoc +129 -0
- data/docs/developer/architecture.adoc +256 -0
- data/docs/developer/contributing.adoc +158 -0
- data/docs/developer/index.adoc +25 -0
- data/docs/developer/testing.adoc +212 -0
- data/docs/getting-started/basic-usage.adoc +271 -0
- data/docs/getting-started/index.adoc +42 -0
- data/docs/getting-started/installation.adoc +138 -0
- data/docs/getting-started/quick-start.adoc +185 -0
- data/docs/getting-started/your-first-archive.adoc +218 -0
- data/docs/guides/advanced-features/encryption.adoc +300 -0
- data/docs/guides/advanced-features/index.adoc +49 -0
- data/docs/guides/advanced-features/parallel-processing.adoc +246 -0
- data/docs/guides/advanced-features/progress-tracking.adoc +320 -0
- data/docs/guides/advanced-features/streaming.adoc +212 -0
- data/docs/guides/archive-formats/gzip-format.adoc +107 -0
- data/docs/guides/archive-formats/index.adoc +130 -0
- data/docs/guides/archive-formats/rar-format.adoc +104 -0
- data/docs/guides/archive-formats/rar5.adoc +521 -0
- data/docs/guides/archive-formats/seven-zip-format.adoc +35 -0
- data/docs/guides/archive-formats/tar-format.adoc +106 -0
- data/docs/guides/archive-formats/xz-format.adoc +118 -0
- data/docs/guides/archive-formats/zip-format.adoc +35 -0
- data/docs/guides/compression-algorithms/bzip2.adoc +113 -0
- data/docs/guides/compression-algorithms/deflate.adoc +319 -0
- data/docs/guides/compression-algorithms/index.adoc +190 -0
- data/docs/guides/compression-algorithms/lzma.adoc +398 -0
- data/docs/guides/compression-algorithms/lzma2.adoc +327 -0
- data/docs/guides/compression-algorithms/ppmd.adoc +316 -0
- data/docs/guides/compression-algorithms/zstandard.adoc +361 -0
- data/docs/guides/creating-archives.adoc +354 -0
- data/docs/guides/extracting-archives.adoc +53 -0
- data/docs/guides/format-conversion.adoc +64 -0
- data/docs/guides/index.adoc +49 -0
- data/docs/guides/migration-rubyzip.adoc +217 -0
- data/docs/guides/parity-archives.adoc +605 -0
- data/docs/guides/performance-tuning.adoc +88 -0
- data/docs/index.adoc +218 -0
- data/docs/lychee.toml +67 -0
- data/docs/reference/api/overview.adoc +188 -0
- data/docs/reference/cli/compress-command.adoc +114 -0
- data/docs/reference/cli/overview.adoc +140 -0
- data/docs/reference/index.adoc +26 -0
- data/docs/resources/faq.adoc +185 -0
- data/docs/resources/quick-reference.adoc +222 -0
- data/docs/troubleshooting/index.adoc +208 -0
- data/examples/api_comparison.rb +205 -0
- data/examples/deflate64_example.rb +96 -0
- data/examples/par2_demo.rb +121 -0
- data/examples/quick_start_native.rb +150 -0
- data/examples/quick_start_rubyzip.rb +115 -0
- data/examples/rubyzip_compatibility_demo.rb +194 -0
- data/exe/omnizip +27 -0
- data/lib/omnizip/algorithm.rb +130 -0
- data/lib/omnizip/algorithm_registry.rb +86 -0
- data/lib/omnizip/algorithms/.keep +0 -0
- data/lib/omnizip/algorithms/bzip2/bwt.rb +225 -0
- data/lib/omnizip/algorithms/bzip2/decoder.rb +193 -0
- data/lib/omnizip/algorithms/bzip2/encoder.rb +237 -0
- data/lib/omnizip/algorithms/bzip2/huffman.rb +206 -0
- data/lib/omnizip/algorithms/bzip2/mtf.rb +101 -0
- data/lib/omnizip/algorithms/bzip2/rle.rb +151 -0
- data/lib/omnizip/algorithms/bzip2.rb +130 -0
- data/lib/omnizip/algorithms/deflate/constants.rb +28 -0
- data/lib/omnizip/algorithms/deflate/decoder.rb +38 -0
- data/lib/omnizip/algorithms/deflate/encoder.rb +46 -0
- data/lib/omnizip/algorithms/deflate.rb +128 -0
- data/lib/omnizip/algorithms/deflate64/constants.rb +45 -0
- data/lib/omnizip/algorithms/deflate64/decoder.rb +153 -0
- data/lib/omnizip/algorithms/deflate64/encoder.rb +98 -0
- data/lib/omnizip/algorithms/deflate64/huffman_coder.rb +354 -0
- data/lib/omnizip/algorithms/deflate64/lz77_encoder.rb +142 -0
- data/lib/omnizip/algorithms/deflate64.rb +109 -0
- data/lib/omnizip/algorithms/lzma/bit_model.rb +120 -0
- data/lib/omnizip/algorithms/lzma/constants.rb +112 -0
- data/lib/omnizip/algorithms/lzma/decoder.rb +148 -0
- data/lib/omnizip/algorithms/lzma/dictionary.rb +69 -0
- data/lib/omnizip/algorithms/lzma/distance_coder.rb +415 -0
- data/lib/omnizip/algorithms/lzma/encoder.rb +142 -0
- data/lib/omnizip/algorithms/lzma/length_coder.rb +260 -0
- data/lib/omnizip/algorithms/lzma/literal_decoder.rb +320 -0
- data/lib/omnizip/algorithms/lzma/literal_encoder.rb +210 -0
- data/lib/omnizip/algorithms/lzma/lzip_decoder.rb +341 -0
- data/lib/omnizip/algorithms/lzma/lzma_alone_decoder.rb +192 -0
- data/lib/omnizip/algorithms/lzma/lzma_state.rb +128 -0
- data/lib/omnizip/algorithms/lzma/match.rb +32 -0
- data/lib/omnizip/algorithms/lzma/match_finder.rb +205 -0
- data/lib/omnizip/algorithms/lzma/match_finder_config.rb +142 -0
- data/lib/omnizip/algorithms/lzma/match_finder_factory.rb +88 -0
- data/lib/omnizip/algorithms/lzma/optimal_encoder.rb +130 -0
- data/lib/omnizip/algorithms/lzma/probability_models.rb +72 -0
- data/lib/omnizip/algorithms/lzma/range_coder.rb +85 -0
- data/lib/omnizip/algorithms/lzma/range_decoder.rb +434 -0
- data/lib/omnizip/algorithms/lzma/range_encoder.rb +194 -0
- data/lib/omnizip/algorithms/lzma/state.rb +127 -0
- data/lib/omnizip/algorithms/lzma/xz_buffered_range_encoder.rb +325 -0
- data/lib/omnizip/algorithms/lzma/xz_encoder.rb +426 -0
- data/lib/omnizip/algorithms/lzma/xz_encoder_fast.rb +645 -0
- data/lib/omnizip/algorithms/lzma/xz_match_finder_adapter.rb +227 -0
- data/lib/omnizip/algorithms/lzma/xz_price_calculator.rb +169 -0
- data/lib/omnizip/algorithms/lzma/xz_probability_models.rb +261 -0
- data/lib/omnizip/algorithms/lzma/xz_range_encoder.rb +223 -0
- data/lib/omnizip/algorithms/lzma/xz_range_encoder_exact.rb +331 -0
- data/lib/omnizip/algorithms/lzma/xz_state.rb +116 -0
- data/lib/omnizip/algorithms/lzma/xz_utils_decoder.rb +2055 -0
- data/lib/omnizip/algorithms/lzma.rb +238 -0
- data/lib/omnizip/algorithms/lzma2/chunk_manager.rb +182 -0
- data/lib/omnizip/algorithms/lzma2/constants.rb +41 -0
- data/lib/omnizip/algorithms/lzma2/encoder.rb +147 -0
- data/lib/omnizip/algorithms/lzma2/lzma2_chunk.rb +161 -0
- data/lib/omnizip/algorithms/lzma2/properties.rb +179 -0
- data/lib/omnizip/algorithms/lzma2/simple_lzma2_encoder.rb +127 -0
- data/lib/omnizip/algorithms/lzma2/xz_encoder_adapter.rb +85 -0
- data/lib/omnizip/algorithms/lzma2.rb +141 -0
- data/lib/omnizip/algorithms/ppmd7/constants.rb +74 -0
- data/lib/omnizip/algorithms/ppmd7/context.rb +154 -0
- data/lib/omnizip/algorithms/ppmd7/decoder.rb +126 -0
- data/lib/omnizip/algorithms/ppmd7/encoder.rb +163 -0
- data/lib/omnizip/algorithms/ppmd7/model.rb +248 -0
- data/lib/omnizip/algorithms/ppmd7/symbol_state.rb +57 -0
- data/lib/omnizip/algorithms/ppmd7.rb +116 -0
- data/lib/omnizip/algorithms/ppmd8/constants.rb +61 -0
- data/lib/omnizip/algorithms/ppmd8/context.rb +34 -0
- data/lib/omnizip/algorithms/ppmd8/decoder.rb +107 -0
- data/lib/omnizip/algorithms/ppmd8/encoder.rb +138 -0
- data/lib/omnizip/algorithms/ppmd8/model.rb +250 -0
- data/lib/omnizip/algorithms/ppmd8/restoration_method.rb +78 -0
- data/lib/omnizip/algorithms/ppmd8.rb +82 -0
- data/lib/omnizip/algorithms/ppmd_base.rb +138 -0
- data/lib/omnizip/algorithms/sevenzip_lzma2.rb +123 -0
- data/lib/omnizip/algorithms/xz_lzma2.rb +118 -0
- data/lib/omnizip/algorithms/zstandard/constants.rb +25 -0
- data/lib/omnizip/algorithms/zstandard/decoder.rb +46 -0
- data/lib/omnizip/algorithms/zstandard/encoder.rb +51 -0
- data/lib/omnizip/algorithms/zstandard.rb +138 -0
- data/lib/omnizip/buffer/memory_archive.rb +251 -0
- data/lib/omnizip/buffer/memory_extractor.rb +224 -0
- data/lib/omnizip/buffer.rb +176 -0
- data/lib/omnizip/checksum_registry.rb +114 -0
- data/lib/omnizip/checksums/crc32.rb +100 -0
- data/lib/omnizip/checksums/crc64.rb +101 -0
- data/lib/omnizip/checksums/crc_base.rb +158 -0
- data/lib/omnizip/checksums/verifier.rb +131 -0
- data/lib/omnizip/chunked/memory_manager.rb +194 -0
- data/lib/omnizip/chunked/reader.rb +78 -0
- data/lib/omnizip/chunked/writer.rb +120 -0
- data/lib/omnizip/chunked.rb +129 -0
- data/lib/omnizip/cli/output_formatter.rb +104 -0
- data/lib/omnizip/cli.rb +572 -0
- data/lib/omnizip/commands/.keep +0 -0
- data/lib/omnizip/commands/archive_create_command.rb +427 -0
- data/lib/omnizip/commands/archive_extract_command.rb +272 -0
- data/lib/omnizip/commands/archive_list_command.rb +218 -0
- data/lib/omnizip/commands/archive_repair_command.rb +131 -0
- data/lib/omnizip/commands/archive_verify_command.rb +117 -0
- data/lib/omnizip/commands/compress_command.rb +117 -0
- data/lib/omnizip/commands/decompress_command.rb +120 -0
- data/lib/omnizip/commands/list_command.rb +53 -0
- data/lib/omnizip/commands/metadata_command.rb +153 -0
- data/lib/omnizip/commands/parity_create_command.rb +122 -0
- data/lib/omnizip/commands/parity_repair_command.rb +122 -0
- data/lib/omnizip/commands/parity_verify_command.rb +124 -0
- data/lib/omnizip/commands/profile_list_command.rb +56 -0
- data/lib/omnizip/commands/profile_show_command.rb +44 -0
- data/lib/omnizip/convenience.rb +359 -0
- data/lib/omnizip/converter/conversion_registry.rb +49 -0
- data/lib/omnizip/converter/conversion_strategy.rb +121 -0
- data/lib/omnizip/converter/seven_zip_to_zip_strategy.rb +97 -0
- data/lib/omnizip/converter/zip_to_seven_zip_strategy.rb +112 -0
- data/lib/omnizip/converter.rb +105 -0
- data/lib/omnizip/crypto/aes256/cipher.rb +100 -0
- data/lib/omnizip/crypto/aes256/constants.rb +28 -0
- data/lib/omnizip/crypto/aes256/key_derivation.rb +101 -0
- data/lib/omnizip/crypto/aes256.rb +102 -0
- data/lib/omnizip/error.rb +106 -0
- data/lib/omnizip/eta/exponential_smoothing_estimator.rb +98 -0
- data/lib/omnizip/eta/moving_average_estimator.rb +99 -0
- data/lib/omnizip/eta/rate_calculator.rb +104 -0
- data/lib/omnizip/eta/sample_history.rb +143 -0
- data/lib/omnizip/eta/time_estimator.rb +106 -0
- data/lib/omnizip/eta.rb +63 -0
- data/lib/omnizip/extraction/filter_chain.rb +177 -0
- data/lib/omnizip/extraction/glob_pattern.rb +140 -0
- data/lib/omnizip/extraction/pattern_matcher.rb +70 -0
- data/lib/omnizip/extraction/predicate_pattern.rb +52 -0
- data/lib/omnizip/extraction/regex_pattern.rb +50 -0
- data/lib/omnizip/extraction/selective_extractor.rb +240 -0
- data/lib/omnizip/extraction.rb +111 -0
- data/lib/omnizip/file_type/mime_classifier.rb +144 -0
- data/lib/omnizip/file_type.rb +113 -0
- data/lib/omnizip/filter.rb +139 -0
- data/lib/omnizip/filter_pipeline.rb +108 -0
- data/lib/omnizip/filter_registry.rb +166 -0
- data/lib/omnizip/filters/bcj.rb +279 -0
- data/lib/omnizip/filters/bcj2/constants.rb +53 -0
- data/lib/omnizip/filters/bcj2/decoder.rb +200 -0
- data/lib/omnizip/filters/bcj2/encoder.rb +61 -0
- data/lib/omnizip/filters/bcj2/stream_data.rb +93 -0
- data/lib/omnizip/filters/bcj2.rb +99 -0
- data/lib/omnizip/filters/bcj_arm.rb +176 -0
- data/lib/omnizip/filters/bcj_arm64.rb +244 -0
- data/lib/omnizip/filters/bcj_ia64.rb +196 -0
- data/lib/omnizip/filters/bcj_ppc.rb +190 -0
- data/lib/omnizip/filters/bcj_sparc.rb +176 -0
- data/lib/omnizip/filters/bcj_x86.rb +193 -0
- data/lib/omnizip/filters/delta.rb +196 -0
- data/lib/omnizip/filters/filter_base.rb +72 -0
- data/lib/omnizip/filters/registry.rb +123 -0
- data/lib/omnizip/filters/xz_delta.rb +258 -0
- data/lib/omnizip/format_detector.rb +162 -0
- data/lib/omnizip/format_registry.rb +59 -0
- data/lib/omnizip/formats/.keep +0 -0
- data/lib/omnizip/formats/bzip2_file.rb +172 -0
- data/lib/omnizip/formats/cpio/constants.rb +55 -0
- data/lib/omnizip/formats/cpio/entry.rb +385 -0
- data/lib/omnizip/formats/cpio/reader.rb +196 -0
- data/lib/omnizip/formats/cpio/writer.rb +234 -0
- data/lib/omnizip/formats/cpio.rb +140 -0
- data/lib/omnizip/formats/format_spec_loader.rb +230 -0
- data/lib/omnizip/formats/gzip.rb +238 -0
- data/lib/omnizip/formats/iso/directory_builder.rb +297 -0
- data/lib/omnizip/formats/iso/directory_record.rb +152 -0
- data/lib/omnizip/formats/iso/joliet.rb +204 -0
- data/lib/omnizip/formats/iso/path_table.rb +125 -0
- data/lib/omnizip/formats/iso/reader.rb +197 -0
- data/lib/omnizip/formats/iso/rock_ridge.rb +349 -0
- data/lib/omnizip/formats/iso/volume_builder.rb +320 -0
- data/lib/omnizip/formats/iso/volume_descriptor.rb +168 -0
- data/lib/omnizip/formats/iso/writer.rb +530 -0
- data/lib/omnizip/formats/iso.rb +140 -0
- data/lib/omnizip/formats/lzip.rb +175 -0
- data/lib/omnizip/formats/lzma_alone.rb +171 -0
- data/lib/omnizip/formats/rar/archive_repairer.rb +243 -0
- data/lib/omnizip/formats/rar/archive_verifier.rb +195 -0
- data/lib/omnizip/formats/rar/block_parser.rb +243 -0
- data/lib/omnizip/formats/rar/compression/bit_stream.rb +180 -0
- data/lib/omnizip/formats/rar/compression/dispatcher.rb +217 -0
- data/lib/omnizip/formats/rar/compression/lz77_huffman/decoder.rb +216 -0
- data/lib/omnizip/formats/rar/compression/lz77_huffman/encoder.rb +158 -0
- data/lib/omnizip/formats/rar/compression/lz77_huffman/huffman_builder.rb +217 -0
- data/lib/omnizip/formats/rar/compression/lz77_huffman/huffman_coder.rb +189 -0
- data/lib/omnizip/formats/rar/compression/lz77_huffman/match_finder.rb +135 -0
- data/lib/omnizip/formats/rar/compression/lz77_huffman/sliding_window.rb +165 -0
- data/lib/omnizip/formats/rar/compression/ppmd/context.rb +105 -0
- data/lib/omnizip/formats/rar/compression/ppmd/decoder.rb +219 -0
- data/lib/omnizip/formats/rar/compression/ppmd/encoder.rb +262 -0
- data/lib/omnizip/formats/rar/compression_method_registry.rb +106 -0
- data/lib/omnizip/formats/rar/constants.rb +82 -0
- data/lib/omnizip/formats/rar/decompressor.rb +238 -0
- data/lib/omnizip/formats/rar/external_writer.rb +312 -0
- data/lib/omnizip/formats/rar/header.rb +192 -0
- data/lib/omnizip/formats/rar/license_validator.rb +109 -0
- data/lib/omnizip/formats/rar/models/rar_archive.rb +77 -0
- data/lib/omnizip/formats/rar/models/rar_entry.rb +65 -0
- data/lib/omnizip/formats/rar/models/rar_volume.rb +56 -0
- data/lib/omnizip/formats/rar/parity_handler.rb +292 -0
- data/lib/omnizip/formats/rar/rar5/compression/lzma.rb +202 -0
- data/lib/omnizip/formats/rar/rar5/compression/lzss.rb +578 -0
- data/lib/omnizip/formats/rar/rar5/compression/store.rb +60 -0
- data/lib/omnizip/formats/rar/rar5/crc32.rb +39 -0
- data/lib/omnizip/formats/rar/rar5/encryption/aes256_cbc.rb +97 -0
- data/lib/omnizip/formats/rar/rar5/encryption/encryption_header.rb +114 -0
- data/lib/omnizip/formats/rar/rar5/encryption/encryption_manager.rb +166 -0
- data/lib/omnizip/formats/rar/rar5/encryption/key_derivation.rb +97 -0
- data/lib/omnizip/formats/rar/rar5/header.rb +187 -0
- data/lib/omnizip/formats/rar/rar5/models/encryption_options.rb +74 -0
- data/lib/omnizip/formats/rar/rar5/models/recovery_options.rb +63 -0
- data/lib/omnizip/formats/rar/rar5/models/solid_options.rb +63 -0
- data/lib/omnizip/formats/rar/rar5/models/volume_options.rb +74 -0
- data/lib/omnizip/formats/rar/rar5/multi_volume/ARCHITECTURE.md +290 -0
- data/lib/omnizip/formats/rar/rar5/multi_volume/volume_manager.rb +264 -0
- data/lib/omnizip/formats/rar/rar5/multi_volume/volume_splitter.rb +155 -0
- data/lib/omnizip/formats/rar/rar5/multi_volume/volume_writer.rb +194 -0
- data/lib/omnizip/formats/rar/rar5/solid/solid_encoder.rb +109 -0
- data/lib/omnizip/formats/rar/rar5/solid/solid_manager.rb +142 -0
- data/lib/omnizip/formats/rar/rar5/solid/solid_stream.rb +121 -0
- data/lib/omnizip/formats/rar/rar5/vint.rb +65 -0
- data/lib/omnizip/formats/rar/rar5/writer.rb +466 -0
- data/lib/omnizip/formats/rar/rar_format_base.rb +241 -0
- data/lib/omnizip/formats/rar/reader.rb +366 -0
- data/lib/omnizip/formats/rar/recovery_record.rb +245 -0
- data/lib/omnizip/formats/rar/volume_manager.rb +168 -0
- data/lib/omnizip/formats/rar/writer.rb +431 -0
- data/lib/omnizip/formats/rar.rb +205 -0
- data/lib/omnizip/formats/rar3/compressor.rb +73 -0
- data/lib/omnizip/formats/rar3/decompressor.rb +66 -0
- data/lib/omnizip/formats/rar3/reader.rb +386 -0
- data/lib/omnizip/formats/rar3/writer.rb +219 -0
- data/lib/omnizip/formats/rar5/compressor.rb +73 -0
- data/lib/omnizip/formats/rar5/decompressor.rb +66 -0
- data/lib/omnizip/formats/rar5/reader.rb +342 -0
- data/lib/omnizip/formats/rar5/writer.rb +214 -0
- data/lib/omnizip/formats/seven_zip/coder_chain.rb +150 -0
- data/lib/omnizip/formats/seven_zip/constants.rb +126 -0
- data/lib/omnizip/formats/seven_zip/encoded_header.rb +114 -0
- data/lib/omnizip/formats/seven_zip/encrypted_header.rb +142 -0
- data/lib/omnizip/formats/seven_zip/file_collector.rb +144 -0
- data/lib/omnizip/formats/seven_zip/header.rb +106 -0
- data/lib/omnizip/formats/seven_zip/header_encryptor.rb +134 -0
- data/lib/omnizip/formats/seven_zip/header_writer.rb +466 -0
- data/lib/omnizip/formats/seven_zip/models/coder_info.rb +30 -0
- data/lib/omnizip/formats/seven_zip/models/file_entry.rb +58 -0
- data/lib/omnizip/formats/seven_zip/models/folder.rb +69 -0
- data/lib/omnizip/formats/seven_zip/models/stream_info.rb +42 -0
- data/lib/omnizip/formats/seven_zip/parser.rb +660 -0
- data/lib/omnizip/formats/seven_zip/reader.rb +458 -0
- data/lib/omnizip/formats/seven_zip/split_archive_reader.rb +632 -0
- data/lib/omnizip/formats/seven_zip/split_archive_writer.rb +315 -0
- data/lib/omnizip/formats/seven_zip/stream_compressor.rb +151 -0
- data/lib/omnizip/formats/seven_zip/stream_decompressor.rb +162 -0
- data/lib/omnizip/formats/seven_zip/writer.rb +740 -0
- data/lib/omnizip/formats/seven_zip.rb +93 -0
- data/lib/omnizip/formats/tar/constants.rb +73 -0
- data/lib/omnizip/formats/tar/entry.rb +94 -0
- data/lib/omnizip/formats/tar/header.rb +168 -0
- data/lib/omnizip/formats/tar/reader.rb +121 -0
- data/lib/omnizip/formats/tar/writer.rb +216 -0
- data/lib/omnizip/formats/tar.rb +84 -0
- data/lib/omnizip/formats/xz/reader.rb +116 -0
- data/lib/omnizip/formats/xz.rb +237 -0
- data/lib/omnizip/formats/xz_impl/block_decoder.rb +754 -0
- data/lib/omnizip/formats/xz_impl/block_encoder.rb +306 -0
- data/lib/omnizip/formats/xz_impl/block_header.rb +210 -0
- data/lib/omnizip/formats/xz_impl/block_header_parser.rb +186 -0
- data/lib/omnizip/formats/xz_impl/constants.rb +49 -0
- data/lib/omnizip/formats/xz_impl/index_decoder.rb +174 -0
- data/lib/omnizip/formats/xz_impl/index_encoder.rb +122 -0
- data/lib/omnizip/formats/xz_impl/stream_decoder.rb +468 -0
- data/lib/omnizip/formats/xz_impl/stream_encoder.rb +99 -0
- data/lib/omnizip/formats/xz_impl/stream_footer.rb +81 -0
- data/lib/omnizip/formats/xz_impl/stream_footer_parser.rb +117 -0
- data/lib/omnizip/formats/xz_impl/stream_header.rb +55 -0
- data/lib/omnizip/formats/xz_impl/stream_header_parser.rb +108 -0
- data/lib/omnizip/formats/xz_impl/vli.rb +128 -0
- data/lib/omnizip/formats/xz_impl/writer.rb +421 -0
- data/lib/omnizip/formats/zip/central_directory_header.rb +195 -0
- data/lib/omnizip/formats/zip/constants.rb +69 -0
- data/lib/omnizip/formats/zip/end_of_central_directory.rb +133 -0
- data/lib/omnizip/formats/zip/local_file_header.rb +138 -0
- data/lib/omnizip/formats/zip/reader.rb +250 -0
- data/lib/omnizip/formats/zip/unix_extra_field.rb +153 -0
- data/lib/omnizip/formats/zip/writer.rb +375 -0
- data/lib/omnizip/formats/zip/zip64_end_of_central_directory.rb +104 -0
- data/lib/omnizip/formats/zip/zip64_end_of_central_directory_locator.rb +66 -0
- data/lib/omnizip/formats/zip/zip64_extra_field.rb +114 -0
- data/lib/omnizip/formats/zip.rb +50 -0
- data/lib/omnizip/implementations/base/lzma2_decoder_base.rb +75 -0
- data/lib/omnizip/implementations/base/lzma2_encoder_base.rb +128 -0
- data/lib/omnizip/implementations/base/lzma_decoder_base.rb +83 -0
- data/lib/omnizip/implementations/base/lzma_encoder_base.rb +108 -0
- data/lib/omnizip/implementations/base/state_machine_base.rb +182 -0
- data/lib/omnizip/implementations/seven_zip/lzma/decoder.rb +421 -0
- data/lib/omnizip/implementations/seven_zip/lzma/encoder.rb +465 -0
- data/lib/omnizip/implementations/seven_zip/lzma/match_finder.rb +288 -0
- data/lib/omnizip/implementations/seven_zip/lzma/range_decoder.rb +200 -0
- data/lib/omnizip/implementations/seven_zip/lzma/range_encoder.rb +197 -0
- data/lib/omnizip/implementations/seven_zip/lzma/state_machine.rb +141 -0
- data/lib/omnizip/implementations/seven_zip/lzma2/encoder.rb +519 -0
- data/lib/omnizip/implementations/xz_utils/lzma2/decoder.rb +723 -0
- data/lib/omnizip/implementations/xz_utils/lzma2/encoder.rb +750 -0
- data/lib/omnizip/io/buffered_input.rb +146 -0
- data/lib/omnizip/io/buffered_output.rb +105 -0
- data/lib/omnizip/io/stream_manager.rb +115 -0
- data/lib/omnizip/link_handler/hard_link.rb +79 -0
- data/lib/omnizip/link_handler/symbolic_link.rb +74 -0
- data/lib/omnizip/link_handler.rb +124 -0
- data/lib/omnizip/metadata/archive_metadata.rb +114 -0
- data/lib/omnizip/metadata/entry_metadata.rb +146 -0
- data/lib/omnizip/metadata/metadata_editor.rb +171 -0
- data/lib/omnizip/metadata/metadata_registry.rb +64 -0
- data/lib/omnizip/metadata/metadata_validator.rb +99 -0
- data/lib/omnizip/metadata.rb +57 -0
- data/lib/omnizip/models/.keep +0 -0
- data/lib/omnizip/models/algorithm_metadata.rb +73 -0
- data/lib/omnizip/models/compression_options.rb +71 -0
- data/lib/omnizip/models/conversion_options.rb +87 -0
- data/lib/omnizip/models/conversion_result.rb +135 -0
- data/lib/omnizip/models/eta_result.rb +46 -0
- data/lib/omnizip/models/extraction_rule.rb +115 -0
- data/lib/omnizip/models/filter_chain.rb +144 -0
- data/lib/omnizip/models/filter_config.rb +183 -0
- data/lib/omnizip/models/match_result.rb +124 -0
- data/lib/omnizip/models/optimization_suggestion.rb +91 -0
- data/lib/omnizip/models/parallel_options.rb +104 -0
- data/lib/omnizip/models/performance_result.rb +79 -0
- data/lib/omnizip/models/profile_report.rb +82 -0
- data/lib/omnizip/models/progress_options.rb +38 -0
- data/lib/omnizip/models/split_options.rb +116 -0
- data/lib/omnizip/optimization_registry.rb +81 -0
- data/lib/omnizip/parallel/job_queue.rb +209 -0
- data/lib/omnizip/parallel/job_scheduler.rb +203 -0
- data/lib/omnizip/parallel/parallel_compressor.rb +347 -0
- data/lib/omnizip/parallel/parallel_extractor.rb +329 -0
- data/lib/omnizip/parallel/worker_pool.rb +223 -0
- data/lib/omnizip/parallel.rb +149 -0
- data/lib/omnizip/parity/chunked_block_processor.rb +196 -0
- data/lib/omnizip/parity/galois16.rb +145 -0
- data/lib/omnizip/parity/models/creator_packet.rb +73 -0
- data/lib/omnizip/parity/models/file_description_packet.rb +133 -0
- data/lib/omnizip/parity/models/ifsc_packet.rb +123 -0
- data/lib/omnizip/parity/models/main_packet.rb +128 -0
- data/lib/omnizip/parity/models/packet.rb +156 -0
- data/lib/omnizip/parity/models/packet_registry.rb +109 -0
- data/lib/omnizip/parity/models/recovery_slice_packet.rb +78 -0
- data/lib/omnizip/parity/par2_creator.rb +531 -0
- data/lib/omnizip/parity/par2_repairer.rb +407 -0
- data/lib/omnizip/parity/par2_verifier.rb +364 -0
- data/lib/omnizip/parity/par2cmdline_algorithm.rb +110 -0
- data/lib/omnizip/parity/par2cmdline_coefficients.rb +78 -0
- data/lib/omnizip/parity/reed_solomon_decoder.rb +266 -0
- data/lib/omnizip/parity/reed_solomon_encoder.rb +111 -0
- data/lib/omnizip/parity/reed_solomon_matrix.rb +342 -0
- data/lib/omnizip/parity.rb +186 -0
- data/lib/omnizip/password/encryption_registry.rb +65 -0
- data/lib/omnizip/password/encryption_strategy.rb +96 -0
- data/lib/omnizip/password/password_validator.rb +129 -0
- data/lib/omnizip/password/winzip_aes_strategy.rb +192 -0
- data/lib/omnizip/password/zip_crypto_strategy.rb +141 -0
- data/lib/omnizip/password.rb +87 -0
- data/lib/omnizip/pipe/stream_compressor.rb +124 -0
- data/lib/omnizip/pipe/stream_decompressor.rb +174 -0
- data/lib/omnizip/pipe.rb +121 -0
- data/lib/omnizip/platform/ntfs_streams.rb +201 -0
- data/lib/omnizip/platform.rb +189 -0
- data/lib/omnizip/profile/archive_profile.rb +39 -0
- data/lib/omnizip/profile/balanced_profile.rb +33 -0
- data/lib/omnizip/profile/binary_profile.rb +36 -0
- data/lib/omnizip/profile/compression_profile.rb +158 -0
- data/lib/omnizip/profile/custom_profile.rb +157 -0
- data/lib/omnizip/profile/fast_profile.rb +33 -0
- data/lib/omnizip/profile/maximum_profile.rb +33 -0
- data/lib/omnizip/profile/profile_detector.rb +110 -0
- data/lib/omnizip/profile/profile_registry.rb +161 -0
- data/lib/omnizip/profile/text_profile.rb +36 -0
- data/lib/omnizip/profile.rb +190 -0
- data/lib/omnizip/profiler/memory_profiler.rb +66 -0
- data/lib/omnizip/profiler/method_profiler.rb +49 -0
- data/lib/omnizip/profiler/report_generator.rb +169 -0
- data/lib/omnizip/profiler.rb +204 -0
- data/lib/omnizip/progress/callback_reporter.rb +36 -0
- data/lib/omnizip/progress/console_reporter.rb +62 -0
- data/lib/omnizip/progress/log_reporter.rb +91 -0
- data/lib/omnizip/progress/operation_progress.rb +118 -0
- data/lib/omnizip/progress/progress_bar.rb +156 -0
- data/lib/omnizip/progress/progress_reporter.rb +40 -0
- data/lib/omnizip/progress/progress_tracker.rb +190 -0
- data/lib/omnizip/progress/silent_reporter.rb +24 -0
- data/lib/omnizip/progress.rb +127 -0
- data/lib/omnizip/rubyzip_compat.rb +63 -0
- data/lib/omnizip/temp/safe_extract.rb +168 -0
- data/lib/omnizip/temp/temp_file.rb +124 -0
- data/lib/omnizip/temp/temp_file_pool.rb +109 -0
- data/lib/omnizip/temp.rb +181 -0
- data/lib/omnizip/version.rb +5 -0
- data/lib/omnizip/zip/entry.rb +156 -0
- data/lib/omnizip/zip/file.rb +485 -0
- data/lib/omnizip/zip/input_stream.rb +273 -0
- data/lib/omnizip/zip/output_stream.rb +324 -0
- data/lib/omnizip.rb +156 -0
- data/readme-docs/advanced-features.adoc +515 -0
- data/readme-docs/api-usage.adoc +444 -0
- data/readme-docs/architecture.adoc +449 -0
- data/readme-docs/archive-formats.adoc +479 -0
- data/readme-docs/cli-usage.adoc +222 -0
- data/readme-docs/compression-algorithms.adoc +442 -0
- data/readme-docs/compression-profiles.adoc +247 -0
- data/readme-docs/encryption-checksums.adoc +328 -0
- data/readme-docs/format-converter.adoc +325 -0
- data/readme-docs/installation.adoc +228 -0
- data/readme-docs/par2-archives.adoc +608 -0
- data/readme-docs/performance-profiler.adoc +389 -0
- data/readme-docs/preprocessing-filters.adoc +280 -0
- data/xz-file-format-1.2.1.txt +1174 -0
- metadata +617 -0
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Reference
|
|
3
|
+
nav_order: 50
|
|
4
|
+
has_children: true
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
== Reference
|
|
8
|
+
|
|
9
|
+
Complete technical reference for Omnizip CLI and Ruby API.
|
|
10
|
+
|
|
11
|
+
=== Command-Line Interface
|
|
12
|
+
|
|
13
|
+
* link:cli/overview.html[CLI Overview] - Command-line interface introduction
|
|
14
|
+
* link:cli/compress-command.html[compress] - Compress files command reference
|
|
15
|
+
|
|
16
|
+
=== Ruby API
|
|
17
|
+
|
|
18
|
+
* link:api/overview.html[API Overview] - Ruby API introduction and examples
|
|
19
|
+
|
|
20
|
+
== Additional Resources
|
|
21
|
+
|
|
22
|
+
For more detailed guides, see:
|
|
23
|
+
|
|
24
|
+
* link:../guides/[How-To Guides] - Step-by-step guides for common tasks
|
|
25
|
+
* link:../getting-started/[Getting Started] - Installation and quick start
|
|
26
|
+
* link:../comparison/[Comparison] - Compare with other tools
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: FAQ
|
|
3
|
+
nav_order: 71
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
== Frequently Asked Questions
|
|
7
|
+
|
|
8
|
+
=== General Questions
|
|
9
|
+
|
|
10
|
+
==== What is Omnizip?
|
|
11
|
+
|
|
12
|
+
Omnizip is a pure Ruby compression library supporting multiple compression algorithms (LZMA, LZMA2, BZip2, PPMd, Deflate, Zstandard) and archive formats (7z, ZIP, RAR, TAR, etc.) with zero external dependencies.
|
|
13
|
+
|
|
14
|
+
==== Why use Omnizip?
|
|
15
|
+
|
|
16
|
+
* **Portability** - Works on all Ruby platforms (MRI, JRuby, TruffleRuby)
|
|
17
|
+
* **No Dependencies** - Zero external dependencies or native extensions
|
|
18
|
+
* **Comprehensive** - Support for 10+ archive formats and 6 compression algorithms
|
|
19
|
+
* **Extensible** - Registry-based plugin architecture
|
|
20
|
+
|
|
21
|
+
==== How fast is Omnizip?
|
|
22
|
+
|
|
23
|
+
Pure Ruby implementation is 10-60x slower than native implementations:
|
|
24
|
+
|
|
25
|
+
* LZMA encode: 13-15x slower
|
|
26
|
+
* LZMA decode: 8-10x slower
|
|
27
|
+
* BWT transform: 50-60x slower
|
|
28
|
+
|
|
29
|
+
This is an acceptable trade-off for maximum portability.
|
|
30
|
+
|
|
31
|
+
=== Installation
|
|
32
|
+
|
|
33
|
+
==== What Ruby version is required?
|
|
34
|
+
|
|
35
|
+
Ruby 3.0 or higher is required.
|
|
36
|
+
|
|
37
|
+
==== Does Omnizip work on JRuby?
|
|
38
|
+
|
|
39
|
+
Yes, Omnizip works on JRuby 9.4+.
|
|
40
|
+
|
|
41
|
+
==== Does Omnizip work on TruffleRuby?
|
|
42
|
+
|
|
43
|
+
Yes, Omnizip works on TruffleRuby 22+.
|
|
44
|
+
|
|
45
|
+
=== Usage
|
|
46
|
+
|
|
47
|
+
==== How do I compress a file?
|
|
48
|
+
|
|
49
|
+
[source,bash]
|
|
50
|
+
----
|
|
51
|
+
omnizip compress input.txt output.lzma
|
|
52
|
+
----
|
|
53
|
+
|
|
54
|
+
[source,ruby]
|
|
55
|
+
----
|
|
56
|
+
Omnizip.compress_file('input.txt', 'output.lzma')
|
|
57
|
+
----
|
|
58
|
+
|
|
59
|
+
==== How do I create an archive?
|
|
60
|
+
|
|
61
|
+
[source,bash]
|
|
62
|
+
----
|
|
63
|
+
omnizip archive create backup.7z documents/
|
|
64
|
+
----
|
|
65
|
+
|
|
66
|
+
[source,ruby]
|
|
67
|
+
----
|
|
68
|
+
writer = Omnizip::Formats::SevenZip::Writer.new('backup.7z')
|
|
69
|
+
writer.add_directory('documents/')
|
|
70
|
+
writer.close
|
|
71
|
+
----
|
|
72
|
+
|
|
73
|
+
==== How do I extract an archive?
|
|
74
|
+
|
|
75
|
+
[source,bash]
|
|
76
|
+
----
|
|
77
|
+
omnizip archive extract backup.7z output/
|
|
78
|
+
----
|
|
79
|
+
|
|
80
|
+
[source,ruby]
|
|
81
|
+
----
|
|
82
|
+
reader = Omnizip::Formats::SevenZip::Reader.new('backup.7z')
|
|
83
|
+
reader.extract_all('output/')
|
|
84
|
+
reader.close
|
|
85
|
+
----
|
|
86
|
+
|
|
87
|
+
==== What compression level should I use?
|
|
88
|
+
|
|
89
|
+
* **Levels 1-3**: Fast compression for temporary files
|
|
90
|
+
* **Levels 4-6**: Balanced speed/ratio for general use (default: 5)
|
|
91
|
+
* **Levels 7-9**: Maximum compression for storage
|
|
92
|
+
|
|
93
|
+
=== Compatibility
|
|
94
|
+
|
|
95
|
+
==== Can Omnizip extract 7-Zip archives?
|
|
96
|
+
|
|
97
|
+
Yes, Omnizip can extract archives created by 7-Zip.
|
|
98
|
+
|
|
99
|
+
==== Can Omnizip create ZIP files?
|
|
100
|
+
|
|
101
|
+
Yes, Omnizip can create ZIP files compatible with all ZIP tools.
|
|
102
|
+
|
|
103
|
+
==== Can Omnizip create RAR archives?
|
|
104
|
+
|
|
105
|
+
Yes, Omnizip can create RAR5 archives using pure Ruby implementation.
|
|
106
|
+
|
|
107
|
+
=== Performance
|
|
108
|
+
|
|
109
|
+
==== How can I speed up compression?
|
|
110
|
+
|
|
111
|
+
1. Use lower compression levels (--level 1-3)
|
|
112
|
+
2. Use faster algorithms (zstandard, deflate)
|
|
113
|
+
3. Enable parallel processing (--threads)
|
|
114
|
+
4. Use compression profiles for automatic selection
|
|
115
|
+
|
|
116
|
+
==== Why is compression slow?
|
|
117
|
+
|
|
118
|
+
Pure Ruby implementation prioritizes portability over performance. Native implementations are 10-60x faster but require platform-specific compilation.
|
|
119
|
+
|
|
120
|
+
=== Troubleshooting
|
|
121
|
+
|
|
122
|
+
==== Compression failed with "Algorithm not found"
|
|
123
|
+
|
|
124
|
+
Ensure the algorithm name is correct:
|
|
125
|
+
|
|
126
|
+
[source,bash]
|
|
127
|
+
----
|
|
128
|
+
omnizip list # See available algorithms
|
|
129
|
+
----
|
|
130
|
+
|
|
131
|
+
==== Archive extraction failed
|
|
132
|
+
|
|
133
|
+
Verify the archive is not corrupted:
|
|
134
|
+
|
|
135
|
+
[source,bash]
|
|
136
|
+
----
|
|
137
|
+
omnizip archive list archive.7z
|
|
138
|
+
----
|
|
139
|
+
|
|
140
|
+
Try different extraction options or check file integrity.
|
|
141
|
+
|
|
142
|
+
==== Out of memory error
|
|
143
|
+
|
|
144
|
+
For large files, consider:
|
|
145
|
+
|
|
146
|
+
1. Using chunked processing
|
|
147
|
+
2. Reducing compression level
|
|
148
|
+
3. Using faster algorithms
|
|
149
|
+
|
|
150
|
+
=== Advanced
|
|
151
|
+
|
|
152
|
+
==== How do I use filters?
|
|
153
|
+
|
|
154
|
+
[source,bash]
|
|
155
|
+
----
|
|
156
|
+
omnizip archive create binaries.7z app.exe --filters bcj_x86
|
|
157
|
+
----
|
|
158
|
+
|
|
159
|
+
[source,ruby]
|
|
160
|
+
----
|
|
161
|
+
writer = Omnizip::Formats::SevenZip::Writer.new('binaries.7z',
|
|
162
|
+
filters: [:bcj_x86]
|
|
163
|
+
)
|
|
164
|
+
----
|
|
165
|
+
|
|
166
|
+
==== How do I encrypt archives?
|
|
167
|
+
|
|
168
|
+
[source,bash]
|
|
169
|
+
----
|
|
170
|
+
omnizip archive create secure.7z data/ --password "PASSWORD"
|
|
171
|
+
----
|
|
172
|
+
|
|
173
|
+
[source,ruby]
|
|
174
|
+
----
|
|
175
|
+
writer = Omnizip::Formats::SevenZip::Writer.new('secure.7z',
|
|
176
|
+
password: 'PASSWORD'
|
|
177
|
+
)
|
|
178
|
+
----
|
|
179
|
+
|
|
180
|
+
=== See Also
|
|
181
|
+
|
|
182
|
+
* link:../getting-started/[Getting Started]
|
|
183
|
+
* link:../guides/[Usage Guides]
|
|
184
|
+
* link:../troubleshooting/[Troubleshooting]
|
|
185
|
+
* link:../resources/quick-reference[Quick Reference]
|
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Quick Reference
|
|
3
|
+
nav_order: 70
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
== Quick Reference
|
|
7
|
+
|
|
8
|
+
Cheat sheet for common Omnizip operations.
|
|
9
|
+
|
|
10
|
+
=== Command-Line Quick Reference
|
|
11
|
+
|
|
12
|
+
==== File Compression
|
|
13
|
+
|
|
14
|
+
[source,bash]
|
|
15
|
+
----
|
|
16
|
+
# Basic compression
|
|
17
|
+
omnizip compress INPUT OUTPUT
|
|
18
|
+
|
|
19
|
+
# With algorithm and level
|
|
20
|
+
omnizip compress INPUT OUTPUT --algorithm ALGORITHM --level N
|
|
21
|
+
|
|
22
|
+
# Pipe mode
|
|
23
|
+
cat INPUT | omnizip compress - OUTPUT
|
|
24
|
+
----
|
|
25
|
+
|
|
26
|
+
==== Archive Operations
|
|
27
|
+
|
|
28
|
+
[source,bash]
|
|
29
|
+
----
|
|
30
|
+
# Create archive
|
|
31
|
+
omnizip archive create OUTPUT INPUT...
|
|
32
|
+
|
|
33
|
+
# Extract archive
|
|
34
|
+
omnizip archive extract ARCHIVE [OUTPUT_DIR]
|
|
35
|
+
|
|
36
|
+
# List contents
|
|
37
|
+
omnizip archive list ARCHIVE
|
|
38
|
+
----
|
|
39
|
+
|
|
40
|
+
==== Common Options
|
|
41
|
+
|
|
42
|
+
`--algorithm`:: Compression algorithm (lzma, lzma2, bzip2, ppmd7, deflate, zstandard)
|
|
43
|
+
`--level N`:: Compression level (1-9)
|
|
44
|
+
`--verbose`, `-v`:: Verbose output
|
|
45
|
+
`--help`, `-h`:: Show help
|
|
46
|
+
|
|
47
|
+
=== Ruby API Quick Reference
|
|
48
|
+
|
|
49
|
+
==== Convenience Methods
|
|
50
|
+
|
|
51
|
+
[source,ruby]
|
|
52
|
+
----
|
|
53
|
+
# Compress file
|
|
54
|
+
Omnizip.compress_file('input.txt', 'output.lzma')
|
|
55
|
+
|
|
56
|
+
# Decompress file
|
|
57
|
+
Omnizip.decompress_file('output.lzma', 'restored.txt')
|
|
58
|
+
|
|
59
|
+
# Extract archive
|
|
60
|
+
Omnizip.extract_archive('archive.7z', 'output/')
|
|
61
|
+
|
|
62
|
+
# List archive
|
|
63
|
+
Omnizip.list_archive('archive.7z')
|
|
64
|
+
----
|
|
65
|
+
|
|
66
|
+
==== Registry Methods
|
|
67
|
+
|
|
68
|
+
[source,ruby]
|
|
69
|
+
----
|
|
70
|
+
# Get algorithm
|
|
71
|
+
algorithm = Omnizip::AlgorithmRegistry.get(:lzma2).new(level: 9)
|
|
72
|
+
|
|
73
|
+
# Get format writer
|
|
74
|
+
writer = Omnizip::FormatRegistry.get(:seven_zip).new_writer('archive.7z')
|
|
75
|
+
----
|
|
76
|
+
|
|
77
|
+
=== Compression Algorithm Quick Reference
|
|
78
|
+
|
|
79
|
+
[cols="1,1,2,2"]
|
|
80
|
+
|===
|
|
81
|
+
|Algorithm |Option |Speed |Best For
|
|
82
|
+
|
|
83
|
+
|LZMA
|
|
84
|
+
|--algorithm lzma
|
|
85
|
+
|Slow
|
|
86
|
+
|Maximum compression
|
|
87
|
+
|
|
88
|
+
|LZMA2
|
|
89
|
+
|--algorithm lzma2 (default)
|
|
90
|
+
|Slow
|
|
91
|
+
|Archives, backups
|
|
92
|
+
|
|
93
|
+
|BZip2
|
|
94
|
+
|--algorithm bzip2
|
|
95
|
+
|Medium
|
|
96
|
+
|Text files
|
|
97
|
+
|
|
98
|
+
|PPMd7
|
|
99
|
+
|--algorithm ppmd7
|
|
100
|
+
|Medium
|
|
101
|
+
|Text, documents
|
|
102
|
+
|
|
103
|
+
|Deflate
|
|
104
|
+
|--algorithm deflate
|
|
105
|
+
|Fast
|
|
106
|
+
|Compatibility
|
|
107
|
+
|
|
108
|
+
|Zstandard
|
|
109
|
+
|--algorithm zstandard
|
|
110
|
+
|Very Fast
|
|
111
|
+
|Speed-sensitive
|
|
112
|
+
|===
|
|
113
|
+
|
|
114
|
+
=== Compression Level Quick Reference
|
|
115
|
+
|
|
116
|
+
[cols="1,1,2"]
|
|
117
|
+
|===
|
|
118
|
+
|Level |Option |Use Case
|
|
119
|
+
|
|
120
|
+
|1
|
|
121
|
+
|--level 1
|
|
122
|
+
|Fastest, temporary files
|
|
123
|
+
|
|
124
|
+
|3
|
|
125
|
+
|--level 3
|
|
126
|
+
|Fast, frequent operations
|
|
127
|
+
|
|
128
|
+
|5
|
|
129
|
+
|--level 5 (default)
|
|
130
|
+
|Balanced, general use
|
|
131
|
+
|
|
132
|
+
|7
|
|
133
|
+
|--level 7
|
|
134
|
+
|High compression, storage
|
|
135
|
+
|
|
136
|
+
|9
|
|
137
|
+
|--level 9
|
|
138
|
+
|Maximum compression
|
|
139
|
+
|===
|
|
140
|
+
|
|
141
|
+
=== Archive Format Quick Reference
|
|
142
|
+
|
|
143
|
+
[cols="1,2,2"]
|
|
144
|
+
|===
|
|
145
|
+
|Format |Extension |Best For
|
|
146
|
+
|
|
147
|
+
|7z
|
|
148
|
+
|.7z
|
|
149
|
+
|Maximum compression, solid archives
|
|
150
|
+
|
|
151
|
+
|ZIP
|
|
152
|
+
|.zip
|
|
153
|
+
|Cross-platform compatibility
|
|
154
|
+
|
|
155
|
+
|RAR4/RAR5
|
|
156
|
+
|.rar
|
|
157
|
+
|Binary distribution, multi-volume
|
|
158
|
+
|
|
159
|
+
|TAR
|
|
160
|
+
|.tar
|
|
161
|
+
|Unix backups
|
|
162
|
+
|
|
163
|
+
|GZIP
|
|
164
|
+
|.gz
|
|
165
|
+
|Single file compression
|
|
166
|
+
|
|
167
|
+
|XZ
|
|
168
|
+
|.xz
|
|
169
|
+
|System packages
|
|
170
|
+
|===
|
|
171
|
+
|
|
172
|
+
=== Common Patterns
|
|
173
|
+
|
|
174
|
+
==== Backup Script
|
|
175
|
+
|
|
176
|
+
[source,bash]
|
|
177
|
+
----
|
|
178
|
+
#!/bin/bash
|
|
179
|
+
DATE=$(date +%Y%m%d)
|
|
180
|
+
omnizip archive create "backup_${DATE}.7z" \
|
|
181
|
+
documents/ projects/ \
|
|
182
|
+
--level 7 --solid
|
|
183
|
+
----
|
|
184
|
+
|
|
185
|
+
==== Batch Compression
|
|
186
|
+
|
|
187
|
+
[source,bash]
|
|
188
|
+
----
|
|
189
|
+
for file in *.txt; do
|
|
190
|
+
omnizip compress "$file" "${file}.lzma" --level 5
|
|
191
|
+
done
|
|
192
|
+
----
|
|
193
|
+
|
|
194
|
+
==== Ruby Backup Script
|
|
195
|
+
|
|
196
|
+
[source,ruby]
|
|
197
|
+
----
|
|
198
|
+
require 'omnizip'
|
|
199
|
+
require 'time'
|
|
200
|
+
|
|
201
|
+
timestamp = Time.now.strftime('%Y%m%d')
|
|
202
|
+
archive_name = "backup_#{timestamp}.7z"
|
|
203
|
+
|
|
204
|
+
writer = Omnizip::Formats::SevenZip::Writer.new(archive_name,
|
|
205
|
+
level: 7,
|
|
206
|
+
solid: true
|
|
207
|
+
)
|
|
208
|
+
|
|
209
|
+
%w[documents projects].each do |dir|
|
|
210
|
+
writer.add_directory(dir) if Dir.exist?(dir)
|
|
211
|
+
end
|
|
212
|
+
|
|
213
|
+
writer.close
|
|
214
|
+
puts "Created #{archive_name}"
|
|
215
|
+
----
|
|
216
|
+
|
|
217
|
+
=== See Also
|
|
218
|
+
|
|
219
|
+
* link:../getting-started/quick-start[Quick Start Guide]
|
|
220
|
+
* link:../guides/basic-usage/[Basic Usage Guides]
|
|
221
|
+
* link:../reference/cli/[CLI Reference]
|
|
222
|
+
* link:../reference/api/[API Reference]
|
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Troubleshooting
|
|
3
|
+
nav_order: 80
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
== Troubleshooting
|
|
7
|
+
|
|
8
|
+
Common problems and solutions when using Omnizip.
|
|
9
|
+
|
|
10
|
+
=== Common Issues
|
|
11
|
+
|
|
12
|
+
==== "Algorithm not found" Error
|
|
13
|
+
|
|
14
|
+
**Problem**: Compression fails with algorithm not found error.
|
|
15
|
+
|
|
16
|
+
**Solution**: Check available algorithms:
|
|
17
|
+
|
|
18
|
+
[source,bash]
|
|
19
|
+
----
|
|
20
|
+
omnizip list
|
|
21
|
+
----
|
|
22
|
+
|
|
23
|
+
[source,ruby]
|
|
24
|
+
----
|
|
25
|
+
Omnizip::AlgorithmRegistry.registered.each do |name|
|
|
26
|
+
puts name
|
|
27
|
+
end
|
|
28
|
+
----
|
|
29
|
+
|
|
30
|
+
**Causes**:
|
|
31
|
+
* Typo in algorithm name
|
|
32
|
+
* Algorithm not registered
|
|
33
|
+
|
|
34
|
+
==== "File not found" Error
|
|
35
|
+
|
|
36
|
+
**Problem**: Cannot read input file.
|
|
37
|
+
|
|
38
|
+
**Solution**: Verify file paths and permissions:
|
|
39
|
+
|
|
40
|
+
[source,bash]
|
|
41
|
+
----
|
|
42
|
+
# Check file exists
|
|
43
|
+
ls -la input.txt
|
|
44
|
+
|
|
45
|
+
# Check permissions
|
|
46
|
+
chmod +r input.txt
|
|
47
|
+
----
|
|
48
|
+
|
|
49
|
+
==== "Out of memory" Error
|
|
50
|
+
|
|
51
|
+
**Problem**: Large file compression fails.
|
|
52
|
+
|
|
53
|
+
**Solutions**:
|
|
54
|
+
|
|
55
|
+
1. Use lower compression level:
|
|
56
|
+
[source,bash]
|
|
57
|
+
----
|
|
58
|
+
omnizip compress large.txt output.lzma --level 1
|
|
59
|
+
----
|
|
60
|
+
|
|
61
|
+
2. Use faster algorithm:
|
|
62
|
+
[source,bash]
|
|
63
|
+
----
|
|
64
|
+
omnizip compress large.txt output.zst --algorithm zstandard
|
|
65
|
+
----
|
|
66
|
+
|
|
67
|
+
3. Use chunked processing:
|
|
68
|
+
[source,ruby]
|
|
69
|
+
----
|
|
70
|
+
Omnizip.compress_file_chunked('large.txt', 'output.lzma',
|
|
71
|
+
chunk_size: 10 * 1024 * 1024
|
|
72
|
+
)
|
|
73
|
+
----
|
|
74
|
+
|
|
75
|
+
==== "Archive corrupted" Error
|
|
76
|
+
|
|
77
|
+
**Problem**: Cannot extract archive.
|
|
78
|
+
|
|
79
|
+
**Solutions**:
|
|
80
|
+
|
|
81
|
+
1. Verify archive integrity:
|
|
82
|
+
[source,bash]
|
|
83
|
+
----
|
|
84
|
+
omnizip archive list archive.7z
|
|
85
|
+
----
|
|
86
|
+
|
|
87
|
+
2. Try recovery mode:
|
|
88
|
+
[source,ruby]
|
|
89
|
+
----
|
|
90
|
+
reader = Omnizip::Formats::SevenZip::Reader.new('archive.7z',
|
|
91
|
+
salvage_mode: true
|
|
92
|
+
)
|
|
93
|
+
reader.extract_all('output/')
|
|
94
|
+
----
|
|
95
|
+
|
|
96
|
+
3. Check CRC:
|
|
97
|
+
[source,ruby]
|
|
98
|
+
----
|
|
99
|
+
if Omnizip::Checksums.verify_file('archive.7z', :crc32)
|
|
100
|
+
puts "Archive is valid"
|
|
101
|
+
else
|
|
102
|
+
puts "Archive is corrupted"
|
|
103
|
+
end
|
|
104
|
+
----
|
|
105
|
+
|
|
106
|
+
=== Performance Issues
|
|
107
|
+
|
|
108
|
+
==== Slow Compression
|
|
109
|
+
|
|
110
|
+
**Solutions**:
|
|
111
|
+
|
|
112
|
+
1. Use lower compression level:
|
|
113
|
+
[source,bash]
|
|
114
|
+
----
|
|
115
|
+
omnizip compress input.txt output.lzma --level 3
|
|
116
|
+
----
|
|
117
|
+
|
|
118
|
+
2. Use faster algorithm:
|
|
119
|
+
[source,bash]
|
|
120
|
+
----
|
|
121
|
+
omnizip compress input.txt output.zst --algorithm zstandard
|
|
122
|
+
----
|
|
123
|
+
|
|
124
|
+
3. Enable parallel processing:
|
|
125
|
+
[source,ruby]
|
|
126
|
+
----
|
|
127
|
+
Omnizip.compress_file('input.txt', 'output.lzma',
|
|
128
|
+
parallel: true,
|
|
129
|
+
threads: 4
|
|
130
|
+
)
|
|
131
|
+
----
|
|
132
|
+
|
|
133
|
+
==== Slow Decompression
|
|
134
|
+
|
|
135
|
+
**Solutions**:
|
|
136
|
+
|
|
137
|
+
1. Use buffered reading:
|
|
138
|
+
[source,ruby]
|
|
139
|
+
----
|
|
140
|
+
reader = Omnizip::Formats::SevenZip::Reader.new('archive.7z',
|
|
141
|
+
buffer_size: 1024 * 1024
|
|
142
|
+
)
|
|
143
|
+
reader.extract_all('output/')
|
|
144
|
+
----
|
|
145
|
+
|
|
146
|
+
2. Extract specific files only:
|
|
147
|
+
[source,bash]
|
|
148
|
+
----
|
|
149
|
+
omnizip archive extract archive.7z output/ \
|
|
150
|
+
--pattern 'important.txt'
|
|
151
|
+
----
|
|
152
|
+
|
|
153
|
+
=== Format-Specific Issues
|
|
154
|
+
|
|
155
|
+
==== 7z Issues
|
|
156
|
+
|
|
157
|
+
**Problem**: 7z archive not compatible with 7-Zip.
|
|
158
|
+
|
|
159
|
+
**Solution**: Ensure standard options:
|
|
160
|
+
|
|
161
|
+
[source,ruby]
|
|
162
|
+
----
|
|
163
|
+
writer = Omnizip::Formats::SevenZip::Writer.new('archive.7z',
|
|
164
|
+
algorithm: :lzma2,
|
|
165
|
+
level: 5 # Standard level
|
|
166
|
+
)
|
|
167
|
+
----
|
|
168
|
+
|
|
169
|
+
==== ZIP Issues
|
|
170
|
+
|
|
171
|
+
**Problem**: ZIP not readable by other tools.
|
|
172
|
+
|
|
173
|
+
**Solution**: Use Deflate algorithm:
|
|
174
|
+
|
|
175
|
+
[source,bash]
|
|
176
|
+
----
|
|
177
|
+
omnizip archive create archive.zip files/ \
|
|
178
|
+
--algorithm deflate --level 5
|
|
179
|
+
----
|
|
180
|
+
|
|
181
|
+
==== RAR Issues
|
|
182
|
+
|
|
183
|
+
**Problem**: RAR extraction fails.
|
|
184
|
+
|
|
185
|
+
**Solution**: Verify RAR version:
|
|
186
|
+
|
|
187
|
+
[source,ruby]
|
|
188
|
+
----
|
|
189
|
+
# Try RAR4 reader
|
|
190
|
+
reader = Omnizip::Formats::Rar::Reader.new('archive.rar')
|
|
191
|
+
|
|
192
|
+
# Or RAR5 reader
|
|
193
|
+
reader = Omnizip::Formats::Rar::Rar5::Reader.new('archive.rar')
|
|
194
|
+
----
|
|
195
|
+
|
|
196
|
+
### Getting Help
|
|
197
|
+
|
|
198
|
+
If you continue to have issues:
|
|
199
|
+
|
|
200
|
+
1. Check link:../resources/faq[FAQ]
|
|
201
|
+
2. Review link:../guides/[usage guides]
|
|
202
|
+
3. Search link:https://github.com/metanorma/omnizip/issues[GitHub issues]
|
|
203
|
+
4. Create a new issue with:
|
|
204
|
+
* Omnizip version
|
|
205
|
+
* Ruby version
|
|
206
|
+
* Operating system
|
|
207
|
+
* Error message
|
|
208
|
+
* Minimal reproduction code
|