当前位置: 首页>>技术教程>>正文


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

, ,

问题描述

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

最佳答案

使用以下 one-liner:

tar cf - <source folder> | 7z a -si <Destination archive>.tar.7z

次佳答案

特别是在 unix/linux 系统上直接使用 7z 压缩并不是一个好主意:7z 不保留权限和/或用户/组信息。所以:先tar,然后压缩。

据 7zip wiki 页面 http://en.wikipedia.org/wiki/7z#Limitations 报道:

\\n

Limitations

\\n

The 7z format does not store filesystem permissions (such as UNIX\\n owner/group permissions or NTFS ACLs), and hence can be inappropriate\\n for backup/archival purposes. A workaround on UNIX-like systems for\\n this is to convert data to a tar bitstream before compressing with 7z.

\\n

第三种答案

读取 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

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

tar cf- $HOME | my_compression_program >/tmp/compressed.output

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

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

dir="directory to save"
7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=on /tmp/archive.7z $dir 

第四种答案

我建议您使用:

tar cf - foldername | 7z a -si -m0=lzma2 -mx=3 foldername.tar.7z

显著提高加速速度。

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

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/13891.html,未经允许,请勿转载。