如何从命令行创建 tar.7z 文件?

alp*_*l74 23 compression tar 7zip

我想把我去年的作业拉上拉链。我如何从命令行 Ubuntu tar 和压缩整个文件夹(我没有 GUI)。

ort*_*ang 26

使用以下单行:

tar cf - <source folder> | 7z a -si <Destination archive>.tar.7z
Run Code Online (Sandbox Code Playgroud)


小智 10

这是不是一个好主意,直接与7Z spcially在Unix / Linux系统压缩:7z格式不保留权限和或用户/组信息。所以:首先tar,然后压缩。

正如在http://en.wikipedia.org/wiki/7z#Limitations 的7zip wiki 页面上所报道的:

限制

7z 格式不存储文件系统权限(例如 UNIX 所有者/组权限或 NTFS ACL),因此可能不适用于备份/存档目的。类 UNIX 系统上的解决方法是在使用 7z 压缩之前将数据转换为 tar 比特流。


wal*_*tor 9

阅读man tar。它提供:

     -a, --auto-compress
       use archive suffix to determine the compression program
     -j, --bzip2
     --lzip
     --lzma
     --lzop
     -z, --gzip, --gunzip --ungzip
     -Z, --compress, --uncompress
Run Code Online (Sandbox Code Playgroud)

或者,如果这些都不适合您,并且您有一个读取 的压缩程序stdin,您可以:

tar cf- $HOME | my_compression_program >/tmp/compressed.output
Run Code Online (Sandbox Code Playgroud)

请注意,我正在将输出写入$HOME(备份到您正在备份的目录会导致文件增长不受限制)以外的其他地方。

或者,您可以阅读man 7z- 看起来您可以这样做

dir="directory to save"
7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=on /tmp/archive.7z $dir 
Run Code Online (Sandbox Code Playgroud)


小智 7

我建议你使用:

tar cf - foldername | 7z a -si -m0=lzma2 -mx=3 foldername.tar.7z
Run Code Online (Sandbox Code Playgroud)

为显着的加速增加。

它的优点是使用 lzma2 ( -m0=lzma2)(它利用系统上的最大可用内核和“快速压缩”预设 ( -mx=3),这基本上是快速且足够好的。请注意,LZMA2 不仅在压缩时利用所有内核,而且在减压。