电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

如何移動UNIX目錄

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

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

關于本系列

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

使用 cp

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

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

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

$ cp -r srcdir destdir

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

清單 2. 在 cp 命令中指定源文件和目標位置

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

然而,如果 /export/home/mc 已經存在,那么清單 2 會將目錄 /home/mc 復制到這個目錄中,并創建新的目錄 /export/home/mc/mc。

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

清單 3. 將一個目錄中的內容復制到一個已有的目錄中

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

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

使用 tar

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

清單 4. 使用 tar 將當前目錄中的文件復制到磁帶

$ tar cf /dev/rmt0 .

可以對清單 4 進行如下分析:

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

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

例如,清單 5 顯示了如何將文件從當前目錄復制到一個已有的目錄。

清單 5. 將文件從當前目錄復制到一個已有的目錄

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

可以對清單 5 進行如下分析:

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

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

清單 6. 顯式地指定路徑

$ tar cf myhome.tar /home/mc

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

清單 7. 從當前目錄添加文件

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

與 cp 相比,tar 命令有一個優點,那就是通過添加 v 命令行選項以打開詳細模式,您可以在將文件從源復制到目標的過程中監視文件的傳輸。通常,最好是在提取文件的 tar 命令中使用這個選項,而不是在創建存檔的 tar 命令中使用,因為它可以確保正確地對文件進行復制,而不是證實對其進行了正確的讀取(請參見清單 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...

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

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

清單 9. 使用 p 選項

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

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

清單 10. 創建一個新的目錄作為復制文件的目標

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

就其本身而言,tar 是一種非常有用的工具,可用于復制文件和目錄結構。然而,當您使用它通過網絡來復制文件時,才能真正體現出它的價值。在研究這種訣竅之前,先來使用另一種存檔工具 cpio,這也是一種基本的處理方法。

使用 cpio

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

清單 11. 創建包含特定目錄的 cpio 存檔

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

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

o 選項將文件復制到存檔。 v 選項在復制文件時顯示文件列表,這可用于對復制過程進行確認。

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

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

清單 12. 使用 find 命令復制整個目錄

$ find . |cpio -ov >archive.cpio

要從 cpio 存檔中提取,可以使用 i 命令行選項。您還應該使用 d 選項確保重新創建那些在存檔中存在、而在目標結構中不存在的目錄。同時使用這兩個選項,您可以將文件從一個目錄復制到另一個目錄,如清單 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

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

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

通過網絡進行復制

在 Unix 中通過網絡傳輸文件的常用方法是使用網絡文件系統 (NFS) 裝入遠程目錄,然后進行與本地目錄之間的復制。這是一種比較簡單的解決方案,但對于各種各樣的情況,它并不總是可行的或實用的。

通過網絡復制文件的最簡單的方法之一是使用 tar 或 cpio 創建存檔文件,然后可以通過網絡傳輸這個存檔文件。這種方法具有一些優點,比如可以自由選擇如何以及何時進行文件的復制,但它也有一些缺點,包括復制過程的復雜性,以及在源系統中創建存檔和將該存檔復制到目標系統時保存完整的重復文件的磁盤空間需求。

正如您所看到的,創建存檔非常簡單:

清單 14. 創建一個存檔

$ tar cf mydir.tar .

然后,您可以使用合適的方法對該文件進行復制,例如,使用 cp 和 NFS 復制該文件,或使用 FTP 或 SFTP 將該文件傳輸到遠程系統。

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

使用壓縮

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

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

清單 15. 在創建存檔之后對其進行壓縮

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

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

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

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

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

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

$ tar zcf mydir.tar.gz .

在系統之間進行目錄復制的另一種方法是,使用清單 16 中所示的管道解決方案,但需要使用遠程 Shell 工具作為目標。

直接通過網絡進行復制

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

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

清單 18. 直接通過網絡進行復制

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

除了在遠程系統中執行目標 tar 命令之外,這個命令類似于本地化的 tar。因為在這兩個命令之間使用了管道,所以系統能夠正常工作。

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

清單 19. 指定在遠程計算機上進行身份驗證所使用的用戶/主機的組合

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

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

清單 20. 在直接通過網絡進行復制的過程中使用壓縮處理

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

rsh 和 ssh 具有比較簡單的命令行格式,這使得從遠程系統中進行復制的過程變得更加簡單。例如,rcp 與 rsh 非常接近,您可以使用清單 21 中的命令。

清單 21. 使用 rcp 復制遠程系統中的文件

$ rcp -r filename remotehost:/remotedir

您必須使用 -r 命令行選項,這樣可以對目錄進行遞歸地復制。

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

清單 22. 使用 scp

$ scp -r filename remotehost:/remotedir

通過網絡進行同步

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

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

清單 23. 創建僅包括在前一天進行了更改的文件的存檔

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

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

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

總結

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

標簽: Unix系統
主站蜘蛛池模板: 二手电脑回收_二手打印机回收_二手复印机回_硒鼓墨盒回收-广州益美二手电脑回收公司 | 郑州宣传片拍摄-TVC广告片拍摄-微电影短视频制作-河南优柿文化传媒有限公司 | 山东彩钢板房,山东彩钢活动房,临沂彩钢房-临沂市贵通钢结构工程有限公司 | 不发火防静电金属骨料_无机磨石_水泥自流平_修补砂浆厂家「圣威特」 | 便民信息网_家电维修,家电清洗,开锁换锁,本地家政公司 | 环氧树脂地坪_防静电地坪漆_环氧地坪漆涂料厂家-地壹涂料地坪漆 环球电气之家-中国专业电气电子产品行业服务网站! | 山东限矩型液力偶合器_液力耦合器易熔塞厂家-淄博市汇川源机械厂 | 方源木业官网-四川木门-全国木门专业品牌 | 密集柜_档案密集柜_智能密集架_密集柜厂家_密集架价格-智英伟业 密集架-密集柜厂家-智能档案密集架-自动选层柜订做-河北风顺金属制品有限公司 | 安全光栅|射频导纳物位开关|音叉料位计|雷达液位计|两级跑偏开关|双向拉绳开关-山东卓信机械有限公司 | 塑料检查井_双扣聚氯乙烯增强管_双壁波纹管-河南中盈塑料制品有限公司 | 水性绝缘漆_凡立水_绝缘漆树脂_环保绝缘漆-深圳维特利环保材料有限公司 | 长沙中央空调维修,中央空调清洗维保,空气能热水工程,价格,公司就找维小保-湖南维小保环保科技有限公司 | 照相馆预约系统,微信公众号摄影门店系统,影楼管理软件-盟百网络 | 质检报告_CE认证_FCC认证_SRRC认证_PSE认证_第三方检测机构-深圳市环测威检测技术有限公司 | 空气净化器租赁,空气净化器出租,全国直租_奥司汀净化器租赁 | 振动筛,震动筛,圆形振动筛,振动筛价格,振动筛厂家-新乡巨宝机电 蒸汽热收缩机_蒸汽发生器_塑封机_包膜机_封切收缩机_热收缩包装机_真空机_全自动打包机_捆扎机_封箱机-东莞市中堡智能科技有限公司 | 上海乾拓贸易有限公司-日本SMC电磁阀_德国FESTO电磁阀_德国FESTO气缸 | POS机办理_个人pos机免费领取-银联pos机申请首页 | 西安展台设计搭建_西安活动策划公司_西安会议会场布置_西安展厅设计西安旭阳展览展示 | 上海单片机培训|重庆曙海培训分支机构—CortexM3+uC/OS培训班,北京linux培训,Windows驱动开发培训|上海IC版图设计,西安linux培训,北京汽车电子EMC培训,ARM培训,MTK培训,Android培训 | 商标转让-购买商标专业|放心的商标交易网-蜀易标商标网 | [品牌官网]贵州遵义双宁口腔连锁_贵州遵义牙科医院哪家好_种植牙_牙齿矫正_原华美口腔 | 重庆网站建设,重庆网站设计,重庆网站制作,重庆seo,重庆做网站,重庆seo,重庆公众号运营,重庆小程序开发 | 冲击式破碎机-冲击式制砂机-移动碎石机厂家_青州市富康机械有限公司 | 合肥制氮机_合肥空压机厂家_安徽真空泵-凯圣精机 | 湖南自考_湖南自学考试| 天津次氯酸钠酸钙溶液-天津氢氧化钠厂家-天津市辅仁化工有限公司 | 山东限矩型液力偶合器_液力耦合器易熔塞厂家-淄博市汇川源机械厂 | 米顿罗计量泵(科普)——韬铭机械 | 换网器_自动换网器_液压换网器--郑州海科熔体泵有限公司 | 药品仓库用除湿机-变电站用防爆空调-油漆房用防爆空调-杭州特奥环保科技有限公司 | 模具钢_高速钢_不锈钢-万利钢金属材料 | lcd条形屏-液晶长条屏-户外广告屏-条形智能显示屏-深圳市条形智能电子有限公司 | 中图网(原中国图书网):网上书店,尾货特色书店,30万种特价书低至2折! | 至顶网 | 篮球架_乒乓球台_足球门_校园_竞技体育器材_厂家_价格-沧州浩然体育器材有限公司 | 基本型顶空进样器-全自动热脱附解吸仪价格-AutoHS全模式-成都科林分析技术有限公司 | ETFE膜结构_PTFE膜结构_空间钢结构_膜结构_张拉膜_浙江萬豪空间结构集团有限公司 | 订做不锈钢_不锈钢定做加工厂_不锈钢非标定制-重庆侨峰金属加工厂 | 老城街小面官网_正宗重庆小面加盟技术培训_特色面馆加盟|牛肉拉面|招商加盟代理费用多少钱 |