我有一个如下所示的文件结构:
.
└── base/
├── archives/
│ ├── foo.zip
│ ├── bar.rar
│ └── baz.7z
├── unzipped-1/
│ └── complex subdir tree/
│ ├── selected files from archives
│ └── files not from archives
├── unzipped-2/
│ └── same deal as unzipped-1
└── etc.
随着时间的推移,内容archives/
会发生变化,我选择从这些档案中提取哪些文件也会发生变化。在unzipped/
目录中,大约 95% 的文件来自档案。其余文件是通过其他方式添加的。
我想创建整个目录树的压缩备份,从 开始base/
。我希望压缩备份的文件大小尽可能小。时间和内存要求对我来说不是问题。
从逻辑上讲,使用一个足够智能的归档工具来检测某些文件是否来自当前备份中包含的存档是有意义的。无需同时压缩源存档和提取的文件:相反,此工具只需记录应从源存档中提取文件的位置。
澄清:在提取过程中,不仅需要将完整的档案提取回archives/
,还需要将每个档案中的选定文件提取到unzipped/
。
我怎样才能做到这一点?
答案1
您需要从压缩档案中创建文件列表,并在压缩文件夹时将其用作排除列表base
。
假设 7Zip 为工具,并假设文件名在不同的文件夹/档案中不会重复,但内容不同:
可以找到许多列出档案中裸文件名的帖子,例如 7z 仅列出文件名
要排除,请使用带
-x @listfile
参数的 7Zip。例如,请参阅帖子 7zip:如何使用排除列表文件排除文件(不是文件类型)?