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

例子如下,我搞不懂能用简单的 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 학습자의 빠른 성장을 도와주세요!