例子如下,我搞不懂能用简单的 cp -r /etc /tmp
干嘛还要用tar?tar -cvf - /etc | tar -xvf -
和cp相比到底有什么特别之处?
范例八:将 /etc/ 打包后直接解开在 /tmp 底下,而不产生文件!
[root@linux ~]# cd /tmp
[root@linux tmp]# tar -cvf - /etc | tar -xvf -
# 这个动作有点像是 cp -r /etc /tmp 啦~依旧是有其有用途的!
# 要注意的地方在於输出档变成 - 而输入档也变成 - ,又有一个 | 存在~
# 这分别代表 standard output, standard input 与管线命令啦!
黄舟2017-04-17 12:03:52
有一个常见的体验:大量散碎的传输很浪费时间。比如说:备份和恢复网站文件的时候,一般都不会直接上传下载,而是习惯性的打个包先…
这个玩法也是一样。如果直接cp命令,那么其本质是读一个文件,然后写一个文件。而通过tar管道接力,就可以充分利用管道缓冲区的尺寸,那么本质上就是读一个缓冲区的大小,然后写一个缓冲区的大小。这样对于小文件就能够自然而然的实现一次读一批、一次写一批。
tar能够这样做,也仰仗于tar包是一个便于顺序流入、顺序流出的格式。tar格式基本上是:[TAR文件头][文件实际内容][TAR文件头][文件实际内容] …… [TAR文件头][文件实际内容][TAR文件尾]
,所以后一级的tar就可以流入一点数据处理一点,而不必等待整个tar包都来了再解开。