例子如下,我搞不懂能用简单的 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包都來了再解開。