日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

同步 UNIX 文件

有許多工具可以用來跨 Unix?目錄同步文件,但是要想有效且安全地完成這個任務(wù),就需要多做一些工作 。本文介紹跨 UNIX 文件系統(tǒng)和不同的計算機系統(tǒng)安全地同步文件的解決方案,包括如何為了執(zhí)行備份同步文件的加密版本 。
文件同步就是在一個位置添加、修改或刪除文件時,在另一個位置添加、修改或刪除同一個文件的過程 。本文討論三個實用程序,cp、tar 和 rsync,它們都有助于同步 UNIX 文件 。cp 和 tar 命令的同步功能有限,而 rsync 提供很全面的選項;盡管如此,它們都有各自適用的場合 。
用 cp 命令執(zhí)行直接復(fù)制
盡管 cp 命令并不是真正的同步命令,但它可能是在兩個位置之間復(fù)制文件的最簡單方法 。對于單一文件復(fù)制,cp 顯然是非常高效的:$ cp source destination 。
要想復(fù)制整個目錄結(jié)構(gòu),可以使用 -r 選項遞歸地把整個目錄結(jié)構(gòu)從一個位置復(fù)制到另一個位置:$ cp -r source destination 。這種復(fù)制方法僅僅遞歸地復(fù)制文件和目錄 。文件的權(quán)限、所有者和其他元數(shù)據(jù)并不會復(fù)制到目標位置 。可以使用 -p 選項保留復(fù)制的每個文件和目錄的所有者、權(quán)限和時間:$ cp -pr source destination 。
使用 cp 命令是最容易最公認的文件復(fù)制方法,但是 cp 的效率很低,而且如果不使用 NFS 這樣的遠程文件系統(tǒng)解決方案,就不可能把目錄復(fù)制到遠程系統(tǒng)上 。
使用 tar
tar(tape archive 的簡寫)實用程序原來用于高效地把目錄結(jié)構(gòu)(包括文件和文件元數(shù)據(jù))轉(zhuǎn)換為二進制流,然后就可以把二進制流寫到備份磁帶上 。
通常使用 tar 創(chuàng)建一個包含所需目錄的 .tar 文件:$ tar cf mydir.tar ./mydir 。c 選項讓 tar 創(chuàng)建新的存檔文件,f 選項使用后面的參數(shù)指定要創(chuàng)建的存檔文件的名稱 (mydir.tar) 。其余參數(shù)指定應(yīng)該包含在存檔文件中的文件或目錄 。tar 命令自動地遞歸遍歷目錄結(jié)構(gòu),所以如果指定包含一個目錄,tar 將在存檔文件中包含這個目錄以及其中的所有文件和目錄 。
tar 的一個重要特點是,用戶指定的路徑名被看作絕對路徑 。也就是說,如果為 tar 指定完整的目錄位置,例如 /etc 目錄:$ tar cf etc.tar /etc 。那么,在默認情況下,tar 將把文件提取到它們的絕對位置 。例如,如果提取這個存檔文件:$ tar xf etc.tar,就會在 /etc 目錄中重新創(chuàng)建文件和目錄結(jié)構(gòu) 。這可能會產(chǎn)生破壞(可能會覆蓋 /etc 中希望保留的文件) 。這個問題有兩種解決方法 。第一種是使用 GNU tar,它支持通過 --strip-path 選項從提取的路徑中刪除元素 。
另一個簡單的解決方法是進入父目錄,然后使用相對路徑(見清單 1) 。
清單 1. 進入父目錄并使用相對路徑
 $ cd /
$ tar cf etc.tar ./etc
在提取存檔文件時,會在相對位置重新創(chuàng)建文件 ??梢允褂眠@種方法幫助同步目錄 。因為 tar 創(chuàng)建目錄結(jié)構(gòu)的字節(jié)流,可以通過結(jié)合使用 tar 和管道把文件從一個位置復(fù)制到另一個位置:$ tar cf - ./etc |( cd /backup; tar xf - ) ?!? 指定 tar 應(yīng)該使用標準輸出(在寫時)或標準輸入(在讀時) 。圓括號讓語句在一個子 shell 中執(zhí)行 ??匆幌鹿艿婪懊娴拇a,它創(chuàng)建文件的字節(jié)流并發(fā)送到標準輸出 。在管道符后面,切換到另一個目錄,然后從標準輸入提取字節(jié)流 。
要想保留文件的所有者和權(quán)限,可以使用 p 選項保留每個文件和目錄的元數(shù)據(jù):$ tar cfp - ./etc |( cd /backup; tar xfp - ) 。
掌握這種基本結(jié)構(gòu)之后,就可以執(zhí)行更復(fù)雜的操作 。例如,可以只復(fù)制在特定時間之后修改過的文件:$ tar cf - --newer 20090101 ./etc |(cd /backup; tar xf - ) 。這個命令創(chuàng)建在 2009 年 1 月 1 日之后修改過的文件的拷貝 。

推薦閱讀