通过命令行使用绝对路径压缩文件

通过命令行使用绝对路径压缩文件

有没有办法通过命令行在 Linux 中压缩文件以包含绝对路径?

我有一个 Python 程序,可以检查 zip 和 tar 中的绝对路径,并且想创建一个 zip 文件来检查该函数是否有效。

我能够使用 tar 成功完成此操作。我也在 Google 上搜索了这个问题的答案,并查看了 zip 文档和手册,但还没有找到明确的答案。

答案1

$> zip file.zip $PWD/test.txt
adding: path/to/test.txt (deflated 5%)
$> unzip -l file.zip
Archive:  file.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
       20  03-11-2019 21:32   path/to/test.txt
---------                     -------
       20                     1 file

还有一个开关:

$> zip -jj file.zip test.txt
adding: test.txt (deflated 5%)
$> unzip -l file.zip 
Archive:  file.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
       20  03-11-2019 21:32   path/to/test.txt
---------                     -------
       20                     1 files

它会给你完全相同的结果,但如果你从一开始就这样做,/那么你实际上做不到,但你可以在使用-d选项解压缩时指定这一点。

是的!这是编辑,我突然想到也许您是在谈论 gz、xz、bzip2?如果是这样,您需要先存档它们,它们没有像 tar 那样的文件系统概念。zip、rar、7z,它们都做类似的事情。

答案2

在 ZIP 文件格式中,文件路径始终是相对的,例如

  file name: (Variable)

      The name of the file, with optional relative path.
      The path stored should not contain a drive or
      device letter, or a leading slash.  All slashes
      should be forward slashes '/' as opposed to
      backwards slashes '\' for compatibility with Amiga
      and Unix file systems etc.

当然,可以修补 ZIP 文件以强制使用前导斜杠,但所有常规应用程序通常都受到保护以防止这种明显的黑客攻击(*)。

(*) 更令人讨厌的黑客攻击是长度接近无限的文件,由连续的 0 组成,编码为几个字节。解压缩该文件通常会使您的机器崩溃。现在所有 ZIP 处理实用程序都会检测到这种情况。

相关内容