linux - 鸟哥书中关于tar模拟cp命令的疑问
怪我咯
怪我咯 2017-04-17 12:01:52
0
4
320

例子如下,我搞不懂能用简单的 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 与管线命令啦!

怪我咯
怪我咯

走同样的路,发现不同的人生

全部回复(4)
黄舟

有一个常见的体验:大量散碎的传输很浪费时间。比如说:备份和恢复网站文件的时候,一般都不会直接上传下载,而是习惯性的打个包先…

这个玩法也是一样。如果直接cp命令,那么其本质是读一个文件,然后写一个文件。而通过tar管道接力,就可以充分利用管道缓冲区的尺寸,那么本质上就是读一个缓冲区的大小,然后写一个缓冲区的大小。这样对于小文件就能够自然而然的实现一次读一批、一次写一批。

tar能够这样做,也仰仗于tar包是一个便于顺序流入、顺序流出的格式。tar格式基本上是:[TAR文件头][文件实际内容][TAR文件头][文件实际内容] …… [TAR文件头][文件实际内容][TAR文件尾],所以后一级的tar就可以流入一点数据处理一点,而不必等待整个tar包都来了再解开。

左手右手慢动作

性能问题。
cp命令会逐个读取文件,然后写入到新的位置。
tar命令会尽可能多地读取文件内容,然后才成批写入新的位置。

刘奇

我觉得唯一的特别之处就是tar可以让被复制的文件在屏幕上显示出来,cp什么都不显示

小葫芦

我觉得还有一个原因,就是用tar处理可以保留文件权限,如果是cp的话,最终结果文件是什么权限,就不好说了。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!