执行以下操作的惯用方法是什么
- tar 到标准输出
- 从标准输出读取此 tar 输出并提取到其他文件夹。
我的解决方案是
tar --to-stdout .. | tar -C somefolder -xvf -
但也许有更惯用的方法来实现它。
答案1
相同-f -
选项也适用于涂焦油。
tar -cf - something | tar -C somefolder -xvf -
GNU tar 默认使用 stdio:
tar -c something | tar -C somefolder -xv
rsync 也很流行。
rsync -av something/ somefolder/
答案2
这里只是添加另一个用例。我在一个几乎磁盘空间不足的系统上有一个大型目录结构,并且希望在另一台有大量空间的机器上最终得到目录结构的 tar.gz 文件。
tar -czf - big-dir | ssh user@host 'cat > /path/to/big-dir.tar.gz'
这节省了网络开销,并且意味着如果您想使用 rsync 进行传输,则不必在另一端使用 tar。
答案3
我的声誉不足以发布有关使用 netcat 的评论。
在接收端运行:
netcat -l 5555 > /path/to/dest.tar.gz
或netcat -l 5555 | tar -C /path/to/expanded/tar -xz
在发送端运行:
tar -C /path/to/source -cz files | netcat <target IP/hostname> 5555
如果您的网络速度很快,就不必费心压缩和解压 tar。多年来,我曾使用过此文件的某些变体来进行各种恢复。