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

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

如何移動(dòng)UNIX目錄

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

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

關(guān)于本系列

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

使用 cp

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

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

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

$ cp -r srcdir destdir

然而,當(dāng)在 cp 命令中指定源文件和目標(biāo)位置時(shí),您應(yīng)該加以小心,因?yàn)槠涮幚矸绞娇赡軐?duì)結(jié)果有很大的影響。例如,假設(shè)您希望將目錄 /home/mc 復(fù)制到目錄 /export/home/mc。如果 /export/home/mc 不存在,那么清單 2 會(huì)將目錄 /home/mc 復(fù)制到 /export/home/mc。

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

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

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

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

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

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

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

使用 tar

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

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

$ tar cf /dev/rmt0 .

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

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

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

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

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

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

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

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

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

清單 6. 顯式地指定路徑

$ tar cf myhome.tar /home/mc

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

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

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

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

清單 8. 添加 v 命令行選項(xiàng)

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

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

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

清單 9. 使用 p 選項(xiàng)

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

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

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

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

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

使用 cpio

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

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

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

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

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

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

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

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

$ find . |cpio -ov >archive.cpio

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

清單 13. 同時(shí)使用 i 和 d 選項(xiàng)

$ 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

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

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

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

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

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

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

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

$ tar cf mydir.tar .

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

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

使用壓縮

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

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

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

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

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

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

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

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

清單 17. 使用帶 z 命令行選項(xiàng)的 tar

$ tar zcf mydir.tar.gz .

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

$ rcp -r filename remotehost:/remotedir

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

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

清單 22. 使用 scp

$ scp -r filename remotehost:/remotedir

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

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

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

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

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

find 命令可以查找在前一天進(jìn)行了更改的文件。我僅選擇了文件,因?yàn)槿绻夸洠敲?tar 將包含該目錄中所有的文件,這樣一來(lái),存檔文件中將包含比所需要的更多的信息。

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

總結(jié)

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

標(biāo)簽: Unix系統(tǒng)
主站蜘蛛池模板: 成人午夜看片在线观看 | 德国女人一级毛片免费 | 三级毛片子| 国产精品一区二区四区 | 精品久久网站 | 高清韩国a级特黄毛片 | 波多野结衣在线免费视频 | 日日干夜夜爽 | 日本一区不卡视频 | 日韩毛片在线免费观看 | 在线成人精品国产区免费 | 免费中文字幕一级毛片 | 9999久久| 久久受www免费人成看片 | 亚洲人成在线影院 | 欧美日本免费观看αv片 | 久久成人动漫 | 中文字幕一区二区三区久久网站 | 一区二区三区中文字幕 | 中文字幕无线精品乱码一区 | 亚洲一区二区影视 | 91看片淫黄大片.在线天堂 | 日本久久久久一级毛片 | www.日本在线视频 | 牛人国产偷窥女洗浴在线观看 | 97国产影院 | 国产精品久久久久影院色老大 | 国产精品亚洲二线在线播放 | 日韩 国产 欧美视频一区二区三区 | 美女扒开双腿让男人爽透视频 | 国产视频网站在线观看 | 天天夜天干天天爽 | 日韩亚洲天堂 | 91精品全国免费观看 | 久久亚洲精品视频 | 精品一区二区久久 | 欧美三级三级三级爽爽爽 | 国产精品久久久久免费 | 成人免费午夜视频 | 国产一区二区免费视频 | 成人免费黄色网址 |