我正在尝试创建一个 ZIP 存档,其中包含 5 个 PDF 和一个附加 ZIP 文件(位于当前工作文件夹上方的文件夹中)。这似乎有效,但只是在一定程度上有效。
例如:
$ ls -lh
total 5.0M
-rw-r--r-- 1 root root 227K Apr 8 18:53 activity.pdf
-rw-r--r-- 1 root root 2.2M Apr 8 18:53 activity1.pdf
-rw-r--r-- 1 root root 279K Apr 8 18:53 activity2.pdf
-rw-r--r-- 1 root root 761K Apr 8 18:53 activity3.pdf
-rw-r--r-- 1 root root 1.6M Apr 8 18:53 activity4.pdf
$ ls -lh ..
total 11M
-rw-r--r-- 1 root root 11M Apr 5 12:16 Another_Archive.zip
压缩 5 个 PDF 文件和对于上一个文件夹中存在的 ZIP,我正在执行以下操作:
$ zip Final_Archive.zip *.pdf ../Another_Archive.zip
adding: activity.pdf (deflated 12%)
adding: activity1.pdf (deflated 10%)
adding: activity2.pdf (deflated 11%)
adding: activity3.pdf (deflated 9%)
adding: activity4.pdf (deflated 11%)
adding: ../Another_Archive.zip (stored 0%)
现在,每当我unzip
从 CLI 运行时,我都可以正确地看到一切:
$ unzip Final_Archive.zip
Archive: Final_Archive.zip
inflating: activity.pdf
inflating: activity1.pdf
inflating: activity2.pdf
inflating: activity3.pdf
inflating: activity4.pdf
warning: skipped "../" path component(s) in ../Another_Archive.zip
extracting: Another_Archive.zip
$ ls -lh
total 31M
-rw-r--r-- 1 root root 11M Apr 5 12:16 Another_Archive.zip
-rw-r--r-- 1 root root 15M Apr 8 19:02 Final_Archive.zip
-rw-r--r-- 1 root root 227K Apr 8 18:53 activity.pdf
-rw-r--r-- 1 root root 2.2M Apr 8 18:53 activity1.pdf
-rw-r--r-- 1 root root 279K Apr 8 18:53 activity2.pdf
-rw-r--r-- 1 root root 761K Apr 8 18:53 activity3.pdf
-rw-r--r-- 1 root root 1.6M Apr 8 18:53 activity4.pdf
但是,如果我从 Mac OS 解压缩文件(只需双击 zip 文件),它就会提取所有内容但文件Another_Archive.zip
。见下文:
如果我从 MacOS 的 CLI 中解压它,它就可以正常工作。这是由于 MacOS 上的解档过程出现某种问题,还是由于创建 zip 文件的方式出现问题?
答案1
我想 Finder 拒绝将文件从您正在使用的文件夹中提取到父文件夹中,因为这不符合用户的期望并且可能很危险(破坏您认为安全的文件。)
因此,请勿在 zip 文件中包含父文件夹的路径。
您可以在与 PDF 相同的文件夹中创建 zip 的符号链接:
ln -s ../Another_Archive.zip .
zip Final_Archive.zip *.pdf Another_Archive.zip
或者,您可以将 PDF 打包到 zip 中,然后将存档添加到其中。
zip Final_Archive.zip *.pdf
cd ..
zip directory/Final_Archive.zip Another_Archive.zip
或者,如果您zip
有-j
选项(“垃圾(不记录)目录名称”),这将导致它存储没有目录路径的文件。
zip -j Final_Archive.zip *.pdf ../Another_Archive.zip