codebites/cli-7zip

7-zip CLI 的包装器,用于压缩、解压和操作存档。

v0.1.3 2024-07-09 09:12 UTC

This package is auto-updated.

Last update: 2024-09-09 09:38:45 UTC


README

描述

这是对 7-zip CLI 二进制文件的简单包装。我尝试抽象出最常用的命令,如 verifyextractcreateadd。它将尝试自动在您的系统上找到 7zz 二进制文件。我选择使用 7zz,因为它静态链接且独立,因此非常适合无需任何依赖项的打包。您也可以通过将其传递给构造函数来使用其他兼容的二进制文件,如 7zr7za。如果它无法在您的系统上找到 7zz,它将默认使用 ./bin 文件夹中捆绑的二进制文件。目前我只捆绑了 Linux x86_64。您还可以通过 Cli7zip 类的构造函数将库应查找二进制文件的附加路径。

因为我们使用的是完整版本,所以我们支持所有存档格式,而不仅仅是 .7z。根据 7-zip 网站的说明,它应该支持以下格式

  • 打包/解包:7z、XZ、BZIP2、GZIP、TAR、ZIP 和 WIM
  • 仅解包:APFS、AR、ARJ、CAB、CHM、CPIO、CramFS、DMG、EXT、FAT、GPT、HFS、IHEX、ISO、LZH、LZMA、MBR、MSI、NSIS、NTFS、QCOW2、RAR、RPM、SquashFS、UDF、UEFI、VDI、VHD、VHDX、VMDK、XAR 和 Z

先决条件

  • PHP >= 8.2

安装

  • composer require codebites/cli-7zip

使用方法

<?php

use Codebites\Cli7zip\Cli7zip;

// Init
$cli7zip = new Cli7zip();

// Init with custom paths
$cli7zip = new Cli7zip('7zz', ['/path/to/my/binaries_folder']);

// Extract archive without folder creation
$success = $cli7zip->extractArchive('/my/archive.7z', '/my/existing/target/folder');

// Extract archive with folder creation
$success = $cli7zip->extractArchive('/my/archive.7z', '/my/non-existing/target/folder', true);

// Compress directory as 7z
$success = $cli7zip->compressDir('/my/folder/to/compress', '/my/archive.7z', '7z');

// Compress directory as Zip
$archivePath = $cli7zip->compressDir('/my/folder/to/compress', '/my/archive.zip', 'zip');

// Add files to existing archive
$success = $cli7zip->addFilesToArchive('/my/archive.7z', '/my/first/file.txt', '/my/seconde/file2.txt');

// Add string as file to existing archive
$success = $cli7zip->addStringToArchive('/my/archive.7z', 'Hello, World!', 'filename.txt');

警告

不要在生产环境中使用! 这是非常实验性的,并且没有经过实战测试。我花了一个小时左右写了这个用于我遇到的某个用例。如果有任何兴趣,我将尝试继续改进这个库。

许可信息

本项目包括从 7-zip 网站下载的二进制文件,下载自 Github。没有进行任何修改。7-zip 二进制文件在 GNU Lesser General Public License (LGPL) 下分发。许可协议包含在本存储库中。

  • 7-zip 二进制文件位于 bin 目录。
  • LGPL 许可证可以在 licenses/LGPL-3.0.txt 中找到。