日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

L39.linux命令每日一练 -- 第六章 文件备份与压缩命令 -- scp和rsync

發布時間:2023/12/15 linux 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 L39.linux命令每日一练 -- 第六章 文件备份与压缩命令 -- scp和rsync 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

6.5 scp:遠程文件復制

6.5.1 命令詳解

? 【命令星級】 ★★★★★

? 【功能說明】

? scp命令用于在不同的主機之間復制文件,它采用SSH協議來保證復制的安全性。scp命令每次都是全量完整復制,因此效率不高,適合第一次復制時使用,增量復制建議使用rsync命令替代。

? 【語法格式】

scp [option] [[user@]host1:]file1 [[user@]host2:]file2 scp [選項] [用戶@主機1:文件1] [用戶@主機2:文件2]

? **說明:**在scp命令及后面的選項里,每個元素之間都至少要有一個空格。

? 【選項說明】

? 表6-5針對該命令的參數選項進行了說明。

? 表6-5 scp命令的參數選項及說明

6.5.2 使用范例

? **范例6-19:**推送(從本地服務器復制到遠程服務器)文件或目錄。

[root@centos7 /]# ll -h /etc/services #這是將要復制的文件。 -rw-r--r--. 1 root root 655K Jun 7 2013 /etc/services [root@centos7 /]# scp /etc/services 10.0.0.202:/tmp #scp 傳送的文件名 目標主機IP地址:想要傳到的目錄。 The authenticity of host '10.0.0.202 (10.0.0.202)' can't be established. RSA key fingerprint is SHA256:B0/rcxEB8cPheVkHbtpksluDK/bMZs8+VyQ7huuHkaQ. RSA key fingerprint is MD5:8d:ed:58:b4:20:d6:fa:e3:03:69:80:9e:fe:b1:48:bb. Are you sure you want to continue connecting (yes/no)? yes #第一次scp就和SSH第一次登陸一樣。 Warning: Permanently added '10.0.0.202' (RSA) to the list of known hosts. root@10.0.0.202's password: #此處需要輸入遠程機器密碼。 services 100% 655KB 22.1MB/s 00:00 [root@centos6 ~]# ll -h /tmp/services #這是10.0.0.202的遠程主機窗口。 -rw-r--r-- 1 root root 655K Oct 26 00:50 /tmp/services #可以看到賦值后的文件實際有變化。[root@centos7 /]# scp -p /etc/services 10.0.0.202:/tmp #使用-p選項保持文件屬性傳輸。 root@10.0.0.202's password: services 100% 655KB 29.7MB/s 00:00 [root@centos6 ~]# ll -h /tmp/services #這是10.0.0.202的遠程主機。 -rw-r--r-- 1 root root 655K Jun 7 2013 /tmp/services #加-p,賦值后的文件實際屬性保持不變。[root@centos7 /]# scp -p /tmp 10.0.0.202:/tmp root@10.0.0.202's password: /tmp: not a regular file #不能直接賦值目錄。 [root@centos7 /]# scp -rp /tmp 10.0.0.202:/tmp #需要使用-r選項復制目錄,選項記憶方法:人品rp。 root@10.0.0.202's password: ks-script-s1kcev 100% 836 997.4KB/s 00:00 services 100% 655KB 39.5MB/s 00:00 services.zip 100% 133KB 15.1MB/s 00:00 ks-script-s1kcev 100% 836 837.8KB/s 00:00 services 100% 655KB 20.1MB/s 00:00 services.zip 100% 133KB 27.5MB/s 00:00 [root@centos6 ~]# tree /tmp/ #在遠程主機10.0.0.202下執行tree。 /tmp/ |-- services `-- tmp|-- ks-script-s1kcev|-- services|-- services.zip`-- tmp|-- ks-script-s1kcev|-- services`-- services.zip2 directories, 7 files

? **范例6-20:**從遠程服務器將數據復制到本地服務器(拉取)。

[root@centos7 /tmp]# scp 10.0.0.202:/etc/services . #與推送的命令順序對調即可,從10.0.0.202主機上將/etc/services文件下載到當前目錄。 root@10.0.0.202's password: services 100% 626KB 44.7MB/s 00:00 [root@centos7 /tmp]# scp -rp 10.0.0.202:/tmp . #拉取10.0.0.202主機的tmp目錄到當前目錄。 root@10.0.0.202's password: services 100% 655KB 36.4MB/s 00:00 services.zip 100% 133KB 3.5MB/s 00:00 ks-script-s1kcev 100% 836 439.4KB/s 00:00 services 100% 655KB 32.1MB/s 00:00 services.zip 100% 133KB 9.0MB/s 00:00 ks-script-s1kcev 100% 836 179.4KB/s 00:00 services 100% 655KB 12.0MB/s 00:00

? 從上面的實驗中還可以看到,本地服務器本身即使有這些文件,但是還會再消耗帶寬來復制文件,因此也證明了scp是全量復制。

6.6 rsync:文件同步工具

6.6.1 命令詳解

? 【命令星級】 ★★★★★

? 【功能說明】

? rsync是一款開源的、快速的、多功能的、可實現全量及增量的本地或遠程數據鏡像同步備份的優秀工具。rsync適用于Unix/Linux/Windows等多種操作系統平臺。

? 【語法格式】

? rsync命令有三種常見模式,具體如下:

1)本地模式:rsync [option] [SRC] [DEST]rsync [選項] [源文件] [目標文件] 2)通過Shell訪問模式: 拉取(Pull):rsync [option] [USER@]HOST:SRC [DEST]rsync [選項] 用戶@主機:源文件 [目標文件] 推送(Push):rsync [option] [SRC] [USER@]HOST:DESTrsync [選項] [源文件] 用戶#主機:目標文件 3)rsync守護進程模式 拉取(Pull):rsync [option] [USER@]HOST::SRC [DEST]rsync [選項] 用戶@主機::源文件 [目標文件]rsync [option] rsync://[USER@]HOST[:PORT]/SRC [DEST]rsync [選項] rsync://用戶@主機:端口/源文件 [目標文件] 推送(Push):rsync [option] SRC [USER@]HOST::DESTrsync [選項] [源文件] 用戶@主機::目標文件rsync [option] SRC rsync://[USER@]HOST[:PORT]/DESTrsync [選項] [源文件] rsync://用戶@主機:端口/目標文件

? **說明:**在rsync命令及后面的選項里,每個元素之間都至少要有一個空格。

? 【選項說明】

? 表6-6針對該命令的參數選項進行了說明。

? 表6-6 rsync命令的參數選項及說明

6.6.2 使用范例

? **范例6-21:**源地址帶與不帶斜線(/)的區別的例子。

[root@centos7 ~]# mkdir -p /data1/test{1..2} /data2 [root@centos7 ~]# rsync -av /data1/ /data2 #如果源目錄的末尾有斜線,就會復制目錄內的內容,而不是復制目錄本身。 sending incremental file list ./ test1/ test2/sent 98 bytes received 27 bytes 250.00 bytes/sec total size is 0 speedup is 0.00[root@centos7 ~]# rsync -av /data1 /data2 #如果源目錄沒有斜線,則會復制目錄本身及目錄下的內容。 sending incremental file list data1/ data1/test1/ data1/test2/sent 108 bytes received 28 bytes 272.00 bytes/sec total size is 0 speedup is 0.00 [root@centos7 ~]# ls /data2 data1 test1 test2

? **說明:**目標目錄的末尾有沒有斜線都不影響最終結果。

? **范例6-22:**本地賦值的例子(類似cp)。

[root@centos7 ~]# rsync -av /etc/hosts /tmp #源文件/etc/hosts和目標目錄/tmp都在同一臺主機之上。 sending incremental file list hostssent 257 bytes received 35 bytes 584.00 bytes/sec total size is 166 speedup is 0.57 [root@centos7 ~]# ll -h /etc/hosts -rw-r--r--. 1 root root 166 Oct 24 20:55 /etc/hosts

? **提示:**其比cp好的地方就是可以實現增量復制。

? **范例6-23:**刪除文件的特殊例子(–delete)。

? 問題:一個目錄下有幾十萬個文件,用什么方式可以最快刪除所有文件?

? 答案如下:

[root@centos7 ~]# mkdir /null #創建一個空目錄。 [root@centos7 ~]# rsync -av --delete /null/ /tmp/ #選項--delete使tmp目錄內容和孔木蘭保持一致,不同的文件及目錄將會被刪除,即null里有什么內容,tmp里就有什么內容,null里沒有的,而tmp里有的就必須要刪除,因為null目錄為空,因此此命令會刪除/tmp目錄中所有內容。 sending incremental file list deleting tmp/tmp/tmp/.font-unix/ deleting tmp/tmp/tmp/.XIM-unix/ deleting tmp/tmp/tmp/.X11-unix/ deleting tmp/tmp/tmp/.Test-unix/ deleting tmp/tmp/tmp/.ICE-unix/ deleting tmp/tmp/tmp/services.zip deleting tmp/tmp/tmp/services deleting tmp/tmp/tmp/ks-script-s1kcev deleting tmp/tmp/tmp/ deleting tmp/tmp/.font-unix/ deleting tmp/tmp/.XIM-unix/ deleting tmp/tmp/.X11-unix/ deleting tmp/tmp/.Test-unix/ deleting tmp/tmp/.ICE-unix/ deleting tmp/tmp/services.zip deleting tmp/tmp/services deleting tmp/tmp/ks-script-s1kcev deleting tmp/tmp/ deleting tmp/.font-unix/ deleting tmp/.XIM-unix/ deleting tmp/.X11-unix/ deleting tmp/.Test-unix/ deleting tmp/.ICE-unix/ deleting tmp/services.zip deleting tmp/services deleting tmp/ks-script-s1kcev deleting tmp/ deleting .font-unix/ deleting .XIM-unix/ deleting .X11-unix/ deleting .Test-unix/ deleting .ICE-unix/ deleting services.zip deleting services deleting ks-script-s1kcev deleting hosts ./sent 42 bytes received 736 bytes 1,556.00 bytes/sec total size is 0 speedup is 0.00 [root@centos7 ~]# ls /tmp

? **范例6-24:**拉取推送文件及目錄(類似前文的scp命令)。

[root@centos7 ~]# rsync -av 10.0.0.202:/tmp/ /tmp #拉取。 root@10.0.0.202's password: #輸入遠程主機密碼。 receiving incremental file list ./ services .ICE-unix/ tmp/ tmp/ks-script-s1kcev tmp/services tmp/services.zip tmp/.ICE-unix/ tmp/.Test-unix/ tmp/.X11-unix/ tmp/.XIM-unix/ tmp/.font-unix/ tmp/tmp/ tmp/tmp/ks-script-s1kcev tmp/tmp/services tmp/tmp/services.zip tmp/tmp/.ICE-unix/ tmp/tmp/.Test-unix/ tmp/tmp/.X11-unix/ tmp/tmp/.XIM-unix/ tmp/tmp/.font-unix/sent 199 bytes received 2,286,120 bytes 653,234.00 bytes/sec total size is 2,285,005 speedup is 1.00[root@centos7 ~]# rsync -av /tmp/ 10.0.0.202:/tmp/ #推送。 root@10.0.0.202's password: #輸入遠程主機密碼。 sending incremental file listsent 493 bytes received 76 bytes 227.60 bytes/sec total size is 2,285,005 speedup is 4,015.83

? 與scp命令復制的結果進行對比可以發現,使用rsync復制時,重復執行復制直至目錄下文件相同就不再進行復制了。

? **范例6-25:**利用SSH隧道模式(-e)拉取推送文件及目錄。

[root@centos7 ~]# touch /tmp/test.txt #再創建一個新的測試文件。 [root@centos7 ~]# rsync -av -e 'ssh -p 22' /tmp 10.0.0.202:/tmp/ #前面的案例使用rsync同步數據都是明文傳輸的,在要求保障數據安全的場景下,可以使用-e選項借助SSH隧道進行加密傳輸數據,-p是SSH命令的選項,指定SSH傳輸的端口號為22,這條命令的結果是將本地/tmp目錄下的內容通過SSH加密隧道推送數據到10.0.0.202主機的/tmp目錄。同理,執行“rsync -av -e 'ssh -p 22' 10.0.0.202:/tmp/ /tmp”可以從10.0.0.202主機的/tmp目錄通過SSH加密隧道將數據拉取到本地/tmp目錄下。 root@10.0.0.202's password: sending incremental file list tmp/ tmp/services tmp/test.txt tmp/.ICE-unix/ tmp/tmp/ tmp/tmp/tmp/ tmp/tmp/tmp/ks-script-s1kcev tmp/tmp/tmp/services tmp/tmp/tmp/services.zip tmp/tmp/tmp/.ICE-unix/ tmp/tmp/tmp/.Test-unix/ tmp/tmp/tmp/.X11-unix/ tmp/tmp/tmp/.XIM-unix/ tmp/tmp/tmp/.font-unix/sent 811,563 bytes received 5,175 bytes 233,353.71 bytes/sec total size is 2,285,005 speedup is 2.80

? rsync命令的守護進程模式已經超出了本書的范圍,讀者可以查閱《跟老男孩學習Linux運維:Web集群實戰》一書2017年底即將改版的最新版本。

6.6.3 經驗技巧

? 下面列出rsync命令的經驗技巧以供讀者參考。

? 1)生產場景常用選項-avz,相當于-vzrtopg(這是網上文檔常見的選項),但是此處建議大家使用-avz選項,更簡單明了。如果在腳本中使用也可以省略-v選項。

? 2)關于z壓縮選項的使用建議,如果為內網環境,且沒有其他業務占用帶寬,可以不使用z選項。不壓縮傳輸,幾乎可以滿帶寬傳輸(千M網絡),壓縮傳輸則網絡發送速度就會驟降,壓縮的速率趕不上傳輸的速度。

? 3)選項n是一個提供安全性的選項,它可以結合-v選項輸出模擬的傳輸過程,如果沒有錯誤,則可以去除n選項真正的傳輸文件。

總結

以上是生活随笔為你收集整理的L39.linux命令每日一练 -- 第六章 文件备份与压缩命令 -- scp和rsync的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。