7z 压缩选项

7z 压缩选项

我想通过用 C# 编写的程序创建一个档案,然后解压缩它。

该档案将包含来自完全不同位置的文件夹,分为 3 个主要细分部分。

基本上,组 A 可以有文件夹 \x\y\z、\x\y\m、\x\p\q,组 B 可以有文件夹 \x\p\r、\x\y\t... 因此,原始位置只能提供划分的轻微迹象,我不能使用路径进行分组。

我希望可以使用 7z 选项将文件夹放在 zip 内的不同文件夹中,但我找不到任何这样的选项,所以我想在一个大 zip 内创建 3 个 zip。

我看到的问题是,数据量很大(数百、数千 GB),据我所知,使用 zip 压缩不是一个好主意。(数据类型:主要是图像类型,可能是 tif 或其他未压缩的格式,但也可能是 jpg)

如果我可以使用 rar 进行 zip 压缩,那就太好了...但是 7z 在压缩时不使用 rar,只在解压缩时使用 rar。

我不想安装多个程序——我只会安装 7z。

7z 有以下打包选项(来自其网站):7z、XZ、BZIP2、GZIP、TAR、ZIP 和 WIM。我会将其中一个选项用于内部档案,然后将 7z 选项用于外部档案。

最好的选择是什么?(为了获得更好的档案,并且不会创建比一次性完成更大的 zip 文件)

编辑:Windows!

答案1

如果您使用的是 Linux,则可以创建指向硬盘上文件夹路径的符号链接,并将这些文件夹添加到存档中。哎呀,您也可以在 Windows 上使用符号链接执行此操作。

例如:

您有文件夹/a、、/b/c/d在 Windows 上为C:\a、等等)

您希望档案库内的文件夹结构是:

/SUBDIVISION-1/a
/SUBDIVISION-1/b
/SUBDIVISION-2/c
/SUBDIVISION-3/d

或者对文件夹进行一些任意的细分。

因此,当你要压缩时,你只需要

mkdir /SUBDIVISION-1
mkdir /SUBDIVISION-2
mkdir /SUBDIVISION-3

然后

ln -s /a /SUBDIVISION-1/a
ln -s /b /SUBDIVISION-1/b
ln -s /c /SUBDIVISION-2/c
ln -s /d /SUBDIVISION-3/d

并且每个细分内可以有任意数量的目录,从 0 到 1 到N

在 Windows 上,您无法使用该ln命令;您必须使用链接命令。

您需要一个足够智能的程序来跟踪符号链接(在 Linux 上),但在 Windows 上,它应该是自动的……存档不应该只是将符号链接放在那里;它应该在取消引用符号链接后找到数据。至少如果您使用 Win32 子系统(我推断 7z 就是这样的),它应该是这样的。

根据 OP (来自cmd.exeshell) 的隐式请求,Windows 版本:

mkdir C:\SUBDIVISION-1
mkdir C:\SUBDIVISION-2
mkdir C:\SUBDIVISION-3

然后

mklink /d C:\SUBDIVISION-1\a C:\a
mklink /d C:\SUBDIVISION-1\b C:\b
mklink /d C:\SUBDIVISION-2\c C:\c
mklink /d C:\SUBDIVISION-3\d C:\d

相关内容