国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術(shù)文章
文章詳情頁

如何移動UNIX目錄

瀏覽:114日期:2024-06-21 11:54:20

有時候,您需要將整個 Unix 目錄樹復(fù)制到相同系統(tǒng)中其他的位置或不同的系統(tǒng)。有許多種不同的方法可以完成這項操作,但并非所有的方法都可以保持信息數(shù)量不變或兼容于不同的系統(tǒng)。本文討論了 UNIX 中各種可用的選項,以及如何最好地使用它們來完成相應(yīng)的任務(wù)。

關(guān)于本系列

通常,UNIX® 管理員都擁有一套常用的輔助進(jìn)程管理的關(guān)鍵實用工具、訣竅和系統(tǒng)。本文提供了各種用于簡化各個過程的關(guān)鍵實用工具、命令行鏈和腳本。這些工具中的一部分來自于操作系統(tǒng),而大部分的訣竅則來源于長期的經(jīng)驗積累和減輕系統(tǒng)管理員的工作壓力的要求。本系列文章主要專注于最大限度地利用各種 UNIX 環(huán)境中可用的工具,包括簡化異類環(huán)境中的管理任務(wù)的方法。

使用 cp

如果您使用 -r 命令行選項遞歸到其子目錄中,標(biāo)準(zhǔn)的 cp 命令可用于復(fù)制整個目錄樹。該選項將對非標(biāo)準(zhǔn)的文件執(zhí)行未知的操作。有些 UNIX 變種和 GNU cp 工具支持 -R 選項,使用該選項可以正確地復(fù)制命名管道、鏈接和其他的文件。

對于最簡單的應(yīng)用,cp 命令可以將目錄復(fù)制到具有不同名稱的新目錄(請參見清單 1)。

清單 1. cp 命令—將一個目錄復(fù)制到具有不同名稱的新目錄

$ cp -r srcdir destdir

然而,當(dāng)在 cp 命令中指定源文件和目標(biāo)位置時,您應(yīng)該加以小心,因為其處理方式可能對結(jié)果有很大的影響。例如,假設(shè)您希望將目錄 /home/mc 復(fù)制到目錄 /export/home/mc。如果 /export/home/mc 不存在,那么清單 2 會將目錄 /home/mc 復(fù)制到 /export/home/mc。

清單 2. 在 cp 命令中指定源文件和目標(biāo)位置

$ cp -r /home/mc /export/home/mc

然而,如果 /export/home/mc 已經(jīng)存在,那么清單 2 會將目錄 /home/mc 復(fù)制到這個目錄中,并創(chuàng)建新的目錄 /export/home/mc/mc。

要將一個目錄中的內(nèi)容復(fù)制到一個已有的目錄中,可以選擇源目錄中的文件,如清單 3 所示。

清單 3. 將一個目錄中的內(nèi)容復(fù)制到一個已有的目錄中

$ cp -r /home/mc/* /export/home/mc

cp 工具有一個非常有用的選項,-p 命令行選項,它還可以確保維持每個文件的權(quán)限和所有權(quán)。

使用 tar

tar 命令最初用來將文件歸檔到磁帶(確切地說,是磁帶驅(qū)動器)。例如,您可以使用清單 4 中的命令,將當(dāng)前目錄中的文件復(fù)制到磁帶上。

清單 4. 使用 tar 將當(dāng)前目錄中的文件復(fù)制到磁帶

$ tar cf /dev/rmt0 .

可以對清單 4 進(jìn)行如下分析:

c 選項創(chuàng)建一個新的存檔。 f 選項使用命令行中的下一個選項作為目標(biāo)名稱。在這個示例中,使用第一個原始磁帶設(shè)備 (/dev/rmt0)。您還可以使用其中所有的信息創(chuàng)建一個 tar 文件。 . 告訴 tar 將所有的文件和目錄(以及當(dāng)前目錄下所有的文件和目錄)添加到這個存檔文件中。

然而,除了可以將文件和目錄結(jié)構(gòu)復(fù)制到磁帶,您還可以使用 tar 將它們復(fù)制到一個文件。更有用的是,您可以將文件復(fù)制到標(biāo)準(zhǔn)輸出,然后可以使用管道從標(biāo)準(zhǔn)輸入中提取這些文件,并將它們從一個地方復(fù)制到另一個地方。通常在系統(tǒng)中復(fù)制和重新創(chuàng)建非標(biāo)準(zhǔn)的文件類型時,tar 命令更加可靠,因為 cp 命令不支持 -R 命令行選項。

例如,清單 5 顯示了如何將文件從當(dāng)前目錄復(fù)制到一個已有的目錄。

清單 5. 將文件從當(dāng)前目錄復(fù)制到一個已有的目錄

$ tar cf - . | (cd DIR; tar xf - )

可以對清單 5 進(jìn)行如下分析:

tar cf - . 對當(dāng)前目錄中的文件創(chuàng)建一個新的存檔,輸出到標(biāo)準(zhǔn)輸出。 cd DIR 更改了目錄。請注意,這個目錄在進(jìn)行文件復(fù)制之前應(yīng)該已經(jīng)存在。 tar xf - 從標(biāo)準(zhǔn)輸入中提取文件。 通過使用圓括號將上面的兩個部分括起來,可以有效地將它們作為一個而不是兩個命令來處理,并且 cd 命令在提取存檔之前進(jìn)行。 兩者之間的管道 (|) 將第一個 tar 的標(biāo)準(zhǔn)輸出傳入到第二個 tar 的標(biāo)準(zhǔn)輸入,并且高效地將文件復(fù)制到一個并不存在的存檔文件,然后再從其中提取文件。

如果您顯式地指定了路徑,那么 tar 命令可以保持存檔中所包含的文件的完整路徑。清單 6 使用顯式的路徑將文件復(fù)制到存檔中,這意味著,不能將這些文件提取到其他的地方,只能返回到它們的初始位置。

清單 6. 顯式地指定路徑

$ tar cf myhome.tar /home/mc

有些 tar 變種可以去掉開頭的正斜杠,這使得您可以將文件提取到任何位置。要確保總可以將文件放到需要的位置,您應(yīng)該使用清單 7 中的命令從當(dāng)前目錄中添加文件。

清單 7. 從當(dāng)前目錄添加文件

$ cd /home/mc$ tar cf myhome.tar .

與 cp 相比,tar 命令有一個優(yōu)點,那就是通過添加 v 命令行選項以打開詳細(xì)模式,您可以在將文件從源復(fù)制到目標(biāo)的過程中監(jiān)視文件的傳輸。通常,最好是在提取文件的 tar 命令中使用這個選項,而不是在創(chuàng)建存檔的 tar 命令中使用,因為它可以確保正確地對文件進(jìn)行復(fù)制,而不是證實對其進(jìn)行了正確的讀取(請參見清單 8)。

清單 8. 添加 v 命令行選項

$ tar cf - .|(cd /tmp/mc; tar xvf -)././.bash_aliases./.bash_history./.bash_path./.bash_profile./.bash_vars./.bashrc./xmlsimple.pl./rest.xml...

請注意,如果系統(tǒng)的 tar 不支持長路徑名,那么它可能不支持更新的 tar 格式。GNU tar 支持新的 tar 格式,并且支持長的或者非常深的路徑名。

缺省情況下,大多數(shù) tar 變種可以正確地復(fù)制和重新創(chuàng)建文件和目錄,并保持相同的所有權(quán)和權(quán)限信息,然而,如果作為 root 用戶運(yùn)行,那么有些變種會改寫這個信息,并在提取文件的時候改變其所有權(quán)。您可以使用 p 選項確保保持相應(yīng)的權(quán)限和所有權(quán)(請參見清單 9)。

清單 9. 使用 p 選項

$ tar cpf - .|(cd /tmp/mc; tar xvpf -)

最后,您還可以通過擴(kuò)展這個命令的后半部分(請參見清單 10),創(chuàng)建一個新的目錄作為復(fù)制這些文件的目標(biāo)。

清單 10. 創(chuàng)建一個新的目錄作為復(fù)制文件的目標(biāo)

$ tar cpf - .|(mkdir /tmp/mc; cd /tmp/mc; tar xvpf -)

就其本身而言,tar 是一種非常有用的工具,可用于復(fù)制文件和目錄結(jié)構(gòu)。然而,當(dāng)您使用它通過網(wǎng)絡(luò)來復(fù)制文件時,才能真正體現(xiàn)出它的價值。在研究這種訣竅之前,先來使用另一種存檔工具 cpio,這也是一種基本的處理方法。

使用 cpio

cpio 工具類似于 tar 工具,但是除了接受指定的文件或目錄之外,您必須為它提供一個文件列表。如果您只希望復(fù)制特定的文件,那么這個工具可能更加實用。例如,要創(chuàng)建一個包含特定目錄的 cpio 存檔,您可以使用清單 11 中的命令。

清單 11. 創(chuàng)建包含特定目錄的 cpio 存檔

$ ls ./dira ./dirc |cpio -ov > diranc.cpio

這個命令的 ls 部分輸出將要復(fù)制的文件列表(在本示例中是兩個目錄中的內(nèi)容)。后半部分是用于將它們復(fù)制到存檔中的 cpio 命令。對這個命令進(jìn)行分析,其中包括兩個選項:

o 選項將文件復(fù)制到存檔。 v 選項在復(fù)制文件時顯示文件列表,這可用于對復(fù)制過程進(jìn)行確認(rèn)。

通過將 cpio 的輸出重定向到一個新的文件,可以創(chuàng)建實際的存檔。

上面的命令存在一定的局限,它只能復(fù)制那些顯式列出的文件。要復(fù)制整個目錄,最好的方法是使用 find 命令(請參見清單 12)。

清單 12. 使用 find 命令復(fù)制整個目錄

$ find . |cpio -ov >archive.cpio

要從 cpio 存檔中提取,可以使用 i 命令行選項。您還應(yīng)該使用 d 選項確保重新創(chuàng)建那些在存檔中存在、而在目標(biāo)結(jié)構(gòu)中不存在的目錄。同時使用這兩個選項,您可以將文件從一個目錄復(fù)制到另一個目錄,如清單 13 所示。

清單 13. 同時使用 i 和 d 選項

$ find . |cpio -ov |(cd /tmp/mc; cpio -idv)../.bash_aliases./.bash_history./.bash_path./.bash_profile./.bash_vars./.bashrc./xmlsimple.pl./rest.xml46 blocks..bash_aliases.bash_history.bash_path.bash_profile.bash_vars.bashrcxmlsimple.plrest.xml46 blocks

因為在這個命令的兩個部分中都使用了詳細(xì)模式,所以可以確認(rèn)創(chuàng)建的和提取的存檔的大小是否相同。在本示例中,這兩項操作都使用了 46 個塊。

請注意,如果目標(biāo)中的文件具有相同的、或更新的修改時間,那么 cpio 不會覆蓋這些文件。

通過網(wǎng)絡(luò)進(jìn)行復(fù)制

在 Unix 中通過網(wǎng)絡(luò)傳輸文件的常用方法是使用網(wǎng)絡(luò)文件系統(tǒng) (NFS) 裝入遠(yuǎn)程目錄,然后進(jìn)行與本地目錄之間的復(fù)制。這是一種比較簡單的解決方案,但對于各種各樣的情況,它并不總是可行的或?qū)嵱玫摹?/p>

通過網(wǎng)絡(luò)復(fù)制文件的最簡單的方法之一是使用 tar 或 cpio 創(chuàng)建存檔文件,然后可以通過網(wǎng)絡(luò)傳輸這個存檔文件。這種方法具有一些優(yōu)點,比如可以自由選擇如何以及何時進(jìn)行文件的復(fù)制,但它也有一些缺點,包括復(fù)制過程的復(fù)雜性,以及在源系統(tǒng)中創(chuàng)建存檔和將該存檔復(fù)制到目標(biāo)系統(tǒng)時保存完整的重復(fù)文件的磁盤空間需求。

正如您所看到的,創(chuàng)建存檔非常簡單:

清單 14. 創(chuàng)建一個存檔

$ tar cf mydir.tar .

然后,您可以使用合適的方法對該文件進(jìn)行復(fù)制,例如,使用 cp 和 NFS 復(fù)制該文件,或使用 FTP 或 SFTP 將該文件傳輸?shù)竭h(yuǎn)程系統(tǒng)。

然而,使用存檔文件的方法并不是一種特別高效的方法。您可以通過壓縮來提高其效率。

使用壓縮

如果您使用 cpio 或 tar 創(chuàng)建存檔文件,并通過慢速的連接對文件進(jìn)行復(fù)制(例如 WAN 或 Internet,而不是 LAN 環(huán)境),那么可以在傳輸存檔文件前對其進(jìn)行壓縮處理,這樣會節(jié)省傳輸?shù)臅r間。可以根據(jù)您所需的壓縮級別選擇合適的壓縮格式。

使用存檔的方法非常簡單。您可以選擇在創(chuàng)建存檔之后對其進(jìn)行壓縮,如清單 15 所示。

清單 15. 在創(chuàng)建存檔之后對其進(jìn)行壓縮

$ tar cf mydir.tar .$ bzip2 mydir.tar

要完成這項操作,您還可以使用管道生成存檔的壓縮版本(請參見清單 16)。

清單 16. 使用管道生成存檔的壓縮版本

$ tar cf - .| bzip2 >mydir.tar.bz2

清單 16 中方法的優(yōu)點是,它可以使用各種版本的 tar、cpio 或任何其他的存檔工具。它還適用于各種不同的平臺,而這些平臺中的不同變種的 tar 可能并不一定支持聯(lián)機(jī)壓縮處理。如果安裝了 GNU 版本的 tar,那么您可以使用帶 z 命令行選項的 tar 命令,這樣就可以使用 Gzip 進(jìn)行壓縮處理(請參見清單 17)。

清單 17. 使用帶 z 命令行選項的 tar

$ tar zcf mydir.tar.gz .

在系統(tǒng)之間進(jìn)行目錄復(fù)制的另一種方法是,使用清單 16 中所示的管道解決方案,但需要使用遠(yuǎn)程 Shell 工具作為目標(biāo)。

直接通過網(wǎng)絡(luò)進(jìn)行復(fù)制

將典型的 tar 或 cpio 命令的輸出通過管道傳遞到遠(yuǎn)程 Shell 中,如遠(yuǎn)程 Shell (rsh) 或安全 Shell (ssh),您可以直接通過網(wǎng)絡(luò)進(jìn)行復(fù)制。使用哪一種遠(yuǎn)程 Shell 技術(shù),完全取決于您的環(huán)境中可以使用的 Shell。前者 (rsh) 是一種標(biāo)準(zhǔn)的遠(yuǎn)程 Shell 系統(tǒng),它提供了基本的身份驗證安全性,但不提供加密功能,而后者 (ssh) 提供了基本的身份驗證和數(shù)據(jù)加密功能。

這兩種方法使用了相同的基本命令行結(jié)構(gòu)(請參見清單 18)。

清單 18. 直接通過網(wǎng)絡(luò)進(jìn)行復(fù)制

$ tar cf - ./*|rsh remotehost tar xf - -C /remotedir

除了在遠(yuǎn)程系統(tǒng)中執(zhí)行目標(biāo) tar 命令之外,這個命令類似于本地化的 tar。因為在這兩個命令之間使用了管道,所以系統(tǒng)能夠正常工作。

請記住,根據(jù)遠(yuǎn)程 Shell 的配置,在遠(yuǎn)程計算機(jī)上進(jìn)行身份驗證時,您可能需要輸入密碼。ssh 可能也會使用相同的處理方法。清單 19 指定了用戶/主機(jī)的組合。

清單 19. 指定在遠(yuǎn)程計算機(jī)上進(jìn)行身份驗證所使用的用戶/主機(jī)的組合

$ tar cf - ./*|ssh user@remotehost tar xf - -C /remotedir

為了在慢速的連接上實現(xiàn)更好的性能,您應(yīng)該使用壓縮處理,如清單 20 所示。

清單 20. 在直接通過網(wǎng)絡(luò)進(jìn)行復(fù)制的過程中使用壓縮處理

$ tar czf - ./*|ssh user@remotehost tar xzf - -C /remotedir

rsh 和 ssh 具有比較簡單的命令行格式,這使得從遠(yuǎn)程系統(tǒng)中進(jìn)行復(fù)制的過程變得更加簡單。例如,rcp 與 rsh 非常接近,您可以使用清單 21 中的命令。

清單 21. 使用 rcp 復(fù)制遠(yuǎn)程系統(tǒng)中的文件

$ rcp -r filename remotehost:/remotedir

您必須使用 -r 命令行選項,這樣可以對目錄進(jìn)行遞歸地復(fù)制。

scp 命令非常接近于 ssh,它使用了相同的結(jié)構(gòu)(請參見清單 22)。

清單 22. 使用 scp

$ scp -r filename remotehost:/remotedir

通過網(wǎng)絡(luò)進(jìn)行同步

上面所有的解決方案都主要考慮對文件的復(fù)制,包括本地的以及通過網(wǎng)絡(luò)的復(fù)制。然而,它們在每次進(jìn)行復(fù)制操作時,都會復(fù)制整個目錄結(jié)構(gòu),而這并不總是必需的。有時,您只需要復(fù)制那些在上次復(fù)制操作之后進(jìn)行過更改的文件,從本質(zhì)上說是進(jìn)行同步,而不是徹底的再次復(fù)制。

如果您使用 tar 或 cpio,那么通過顯式地指定存檔中需要包含的文件,您可以實現(xiàn)基于時間的同步。例如,如果您使用 cron 來運(yùn)行同步任務(wù),那么您可以使用下面的命令,創(chuàng)建僅包括在前一天進(jìn)行了更改的文件的存檔(請參見清單 23)。

清單 23. 創(chuàng)建僅包括在前一天進(jìn)行了更改的文件的存檔

$ tar cf archive.tar `find . -mtime -1 -type f`

find 命令可以查找在前一天進(jìn)行了更改的文件。我僅選擇了文件,因為如果包含目錄,那么 tar 將包含該目錄中所有的文件,這樣一來,存檔文件中將包含比所需要的更多的信息。

要實現(xiàn)更健壯的同步操作,您可以使用 rsync 工具,它是一種免費(fèi)的軟件實用工具,可以高效地通過網(wǎng)絡(luò)交換文件。對于復(fù)制和同步文件,尤其是在較慢的連接中,rsync 工具可能是一種有效的方法。

總結(jié)

當(dāng)您在 Unix 中復(fù)制文件和目錄樹時,無論是在相同的系統(tǒng)中還是在通過各種類型的網(wǎng)絡(luò)連接的不同系統(tǒng)之間,都可以選擇使用各種各樣的工具和方法。究竟使用哪一種工具,取決于實際的情況和環(huán)境。我傾向于使用 tar,因為它是我使用過的最能夠兼容于各種不同 UNIX 系統(tǒng)的工具。對于使用 Linux® 環(huán)境的用戶來說,scp 工具是大多數(shù) Linux 分發(fā)版中的標(biāo)準(zhǔn)組件,它可能更加合適。

標(biāo)簽: Unix系統(tǒng)
主站蜘蛛池模板: 国产三级视频在线播放 | 波多野结衣视频在线 | 毛片网站大全 | 久久偷看各类wc女厕 | 成人97| 午夜免费片在线观看不卡 | 国产91av在线 | xp123欧美亚洲国产日韩 | 中国做爰国产精品视频 | 黄+色+性+人免费 | 国产中文字幕在线播放 | 在线成人亚洲 | 国产特黄一级毛片特黄 | 日韩一级欧美一级毛片在线 | 波多野结衣一区在线观看 | 久久精品亚洲精品一区 | 久草网站在线 | 欧美在线看欧美高清视频免费 | 久久综合久久自在自线精品自 | 网站国产 | 毛片免费看网站 | 欧美性色黄大片www 欧美性色黄大片一级毛片视频 | 在线a视频网站 | 中文字幕在亚洲第一在线 | 国产a国产片国产 | 亚洲网站视频在线观看 | 美女很黄很黄是免费的·无遮挡网站 | 亚州一级毛片 | 国产精品久久久久久免费播放 | 最新主播福利视频在线观看 | 久久久99精品免费观看精品 | 亚洲综合在线另类色区奇米 | 成年女人毛片免费视频永久vip | 亚洲综合黄色 | 亚洲一级视频在线观看 | 99国产精品久久久久久久成人热 | 成人欧美在线 | 一级黄色录像片 | 成人免费一级在线播放 | 步兵社区| 日韩中文字幕在线免费观看 |