我們有一個檔案系統:/foo
我們得到了另一個檔案系統:/bar
問:如何將 /foo 中的所有檔案複製到 /bar ?
我們沒有空間來壓縮它們,只能複製它們。但檔案系統中可能存在符號連結、硬連結。所以需要保存這些以及所有者、權限、結構、隱藏檔案!什麼是最好的方法?
額外:帶有奇怪字元的文件或區塊/字元文件
更新:我們可以使用 gzip 嗎?如果需要透過網路複製,壓縮將非常有用。
答案1
銳的評論差不多就夠了;這應該複製所有內容,包括隱藏文件:
cd /foo; tar cpf - . | (cd /bar; tar xpvf -)
(運行為root
)。
如果要壓縮兩個tar
進程之間複製的數據,可以在管道中新增壓縮器和解壓縮器:
cd /foo; tar cpf - . | gzip -9 | (cd /bar; gunzip | tar xpvf -)
如果您的版本tar
支援它,您可以使用該z
標誌:
cd /foo; tar cpzf - . | (cd /bar; tar xpzvf -)
(該-p
標誌在某些平台上預設啟用root
,我不確定 AIX 是否如此。)
答案2
Tar - 雖然非常通用 - 並不了解與 inode 數據相關的許多潛在問題。我強烈推薦一個變體
cd $src; find . | backup -if - | (cd $target; restore -xqf -)
幾年前,我將其編寫成一個“漂亮的腳本” - 但主要是我只是在命令列上使用上面的內容。
對於漂亮的腳本(從 2009 年開始!哎呀!)請參閱:http://www.rootvg.net/content/view/301/309/