Linux 中的 scp 命令居然有大學(xué)問(wèn),它與rsync命令有啥區(qū)別,速看!
scp,安全復(fù)制,該命令可以在兩個(gè)位置之間安全地復(fù)制文件和目錄。
使用 scp,可以復(fù)制文件:
從本地系統(tǒng)到遠(yuǎn)程系統(tǒng)。
從遠(yuǎn)程系統(tǒng)到本地系統(tǒng)。
使用 scp 傳輸數(shù)據(jù)時(shí),文件是加密的,因此任何敏感內(nèi)容都不會(huì)在傳輸過(guò)程中被篡改。
在本文中,瑞哥將通過(guò)實(shí)例帶大家了解如何使用 scp 命令、它的替代命令 rsync,這兩個(gè)命令之間的區(qū)別以及哪個(gè)命令比另一個(gè)命令更受歡迎。

scp 命令語(yǔ)法
scp 命令語(yǔ)法如下所示:
scp?<OPTION>?source_file_name?username@destination_host:destination_folder
其中 OPTION 是scp 選項(xiàng),例如:
-P :指定遠(yuǎn)程主機(jī) ssh 端口。(P大寫)
-p :保留文件修改和訪問(wèn)時(shí)間。(p小寫)
-q :抑制進(jìn)度表和非錯(cuò)誤消息的選項(xiàng)。
-C :在數(shù)據(jù)發(fā)送到目標(biāo)機(jī)器時(shí)壓縮數(shù)據(jù)的選項(xiàng)。(C大寫)
-r :遞歸復(fù)制目錄的選項(xiàng)。
-v :詳細(xì)模式,打印有關(guān)其進(jìn)度的調(diào)試消息的選項(xiàng),這有助于調(diào)試連接、身份驗(yàn)證和配置問(wèn)題。(v小寫)
請(qǐng)注意,scp 命令依賴 ssh 進(jìn)行數(shù)據(jù)傳輸,因此它需要 ssh 密鑰或密碼才能在遠(yuǎn)程系統(tǒng)上進(jìn)行身份驗(yàn)證。
此外,為了復(fù)制文件,您必須對(duì)源文件具有讀取權(quán)限并在目標(biāo)系統(tǒng)上具有寫入權(quán)限。
將本地文件復(fù)制到遠(yuǎn)程系統(tǒng)
要將文件從本地復(fù)制到遠(yuǎn)程系統(tǒng),請(qǐng)運(yùn)行以下命令:
scp?<fileName.txt>?<remote_username>@<remote_ip_address>:<absolute_path>
其中:
fileName.txt是我們要復(fù)制的文件名
remote_username是遠(yuǎn)程服務(wù)器上的用戶
remote_ip_address是服務(wù)器IP地址
absolute_path 是您要將文件復(fù)制到的目錄的路徑
如果不指定任何遠(yuǎn)程目錄,文件將被復(fù)制到遠(yuǎn)程用戶主目錄。
系統(tǒng)將提示您輸入用戶密碼,然后傳輸過(guò)程將開(kāi)始。
ubuntuadmin@10.176.144.9's?password:
example.txt?????????????????????????????100%????0?????0.0KB/s???00:00
如果要以不同的名稱保存文件,則需要指定新文件名:
scp?file.txt?remote_username@10.10.0.2:/remote/directory/newfilename.txt
如果遠(yuǎn)程主機(jī)上的 SSH 正在監(jiān)聽(tīng)默認(rèn)端口 22 以外的端口,那么您可以使用 -P 參數(shù)指定端口:
scp?-P?2322?file.txt?remote_username@10.10.0.2:/remote/directory
復(fù)制目錄的命令類似于復(fù)制文件,唯一的區(qū)別是您需要使用 -r 標(biāo)志進(jìn)行遞歸。
要將目錄從本地系統(tǒng)復(fù)制到遠(yuǎn)程系統(tǒng),請(qǐng)使用 -r 選項(xiàng):
scp?-r?/local/directory?remote_username@10.10.0.2:/remote/directory
rsync 命令
rsync 也是一個(gè)比較實(shí)用的命令,用于通過(guò)遠(yuǎn)程 shell 在兩個(gè)位置之間同步文件,它通傳輸源和目標(biāo)之間的差異來(lái)提供更快的文件傳輸。
rsync 可用于增量備份、在系統(tǒng)之間復(fù)制文件,可以替代 scp 、 sftp 和 cp 命令。
它還有一個(gè)簡(jiǎn)單的語(yǔ)法:
rsync?<OPTION>?dir1/?dir2
在選項(xiàng)中,我們可以使用“-r”,這意味著遞歸,這是目錄同步所必需的。
我們也可以使用** -a** 標(biāo)志代替。
-a 選項(xiàng)是一個(gè)組合標(biāo)志,它代表“歸檔”并遞歸同步并保留符號(hào)鏈接、組、所有者和權(quán)限,它比 -r 更常用
那么SCP和Rsync有什么區(qū)別呢??
scp 通過(guò)安全的 SSH 連接將文件從本地機(jī)器復(fù)制到遠(yuǎn)程機(jī)器,而 rsync 允許您同步遠(yuǎn)程文件夾。
scp 讀取源文件并將其寫入目標(biāo),是在本地或通過(guò)網(wǎng)絡(luò)執(zhí)行線性復(fù)制。rsync 也是在本地或通過(guò)網(wǎng)絡(luò)復(fù)制文件,但它使用特殊的增量傳輸算法和一些優(yōu)化來(lái)使操作更快。
scp 總是安全的,而 rsync 必須通過(guò) SSH 傳輸才能安全。
如果要傳輸大文件,并且傳輸在完成之前斷開(kāi)連接,rsync 會(huì)從中斷的地方繼續(xù)傳輸,而 scp 沒(méi)有。
rsync 比較每一端的文件并只傳輸更改文件的更改部分,當(dāng)你第一次傳輸文件時(shí),它的行為與 scp 非常相似,但是對(duì)于大多數(shù)文件未更改的第二次傳輸,它推送的數(shù)據(jù)將比 scp 少得多。這也是一種重新啟動(dòng)失敗傳輸?shù)谋憬莘椒?,你只需重新發(fā)出相同的命令,它就會(huì)從上次中斷的地方開(kāi)始,而 scp 將從頭開(kāi)始。
總之,用scp比較多,因?yàn)樗褂闷饋?lái)更簡(jiǎn)單。
對(duì)于重復(fù)性任務(wù),如 cron 作業(yè),請(qǐng)使用 rsync。如前所述,在多次調(diào)用時(shí),它將利用已傳輸?shù)臄?shù)據(jù),執(zhí)行速度非??觳⒐?jié)省資源,它是在網(wǎng)絡(luò)上保持兩個(gè)目錄同步的絕佳工具。
此外,在處理大文件時(shí),請(qǐng)使用帶有 -P 選項(xiàng)的 rsync。如果傳輸被中斷,您可以通過(guò)重新發(fā)出命令從它停止的地方恢復(fù)它。
怎么樣,一個(gè)小小的scp命令沒(méi)想到居然有那么大學(xué)問(wèn)吧!