概念
scp是secure copy的簡(jiǎn)寫, 是 linux 系統(tǒng)下基于 ssh 登陸進(jìn)行安全的遠(yuǎn)程文件拷貝命令。scp 是加密的,rcp 是不加密的,scp 是 rcp 的加強(qiáng)版。
因?yàn)閟cp傳輸是加密的,可能會(huì)稍微影響一下速度。另外,scp還非常不占資源,不會(huì)提高多少系統(tǒng)負(fù)荷,在這一點(diǎn)上,rsync就遠(yuǎn)遠(yuǎn)不及它了。雖然 rsync比scp會(huì)快一點(diǎn),但當(dāng)小文件眾多的情況下,rsync會(huì)導(dǎo)致硬盤I/O非常高,而scp基本不影響系統(tǒng)正常使用。
語(yǔ)法
scp [-1246BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file][-l limit] [-o ssh_option] [-P port] [-S program][[user@]host1:]file1 [...] [[user@]host2:]file2
簡(jiǎn)易寫法:
scp [可選參數(shù)] file_source file_target
參數(shù)說(shuō)明:
-1: 強(qiáng)制scp命令使用協(xié)議ssh1-2: 強(qiáng)制scp命令使用協(xié)議ssh2-4: 強(qiáng)制scp命令只使用IPv4尋址-6: 強(qiáng)制scp命令只使用IPv6尋址-B: 使用批處理模式(傳輸過(guò)程中不詢問(wèn)傳輸口令或短語(yǔ))-C: 允許壓縮。(將-C標(biāo)志傳遞給ssh,從而打開(kāi)壓縮功能)-p: 保留原文件的修改時(shí)間,訪問(wèn)時(shí)間和訪問(wèn)權(quán)限。-q: 不顯示傳輸進(jìn)度條。-r: 遞歸復(fù)制整個(gè)目錄。-v: 詳細(xì)方式顯示輸出。scp和ssh(1)會(huì)顯示出整個(gè)過(guò)程的調(diào)試信息。這些信息用于調(diào)試連接,驗(yàn)證和配置問(wèn)題。-c cipher: 以cipher將數(shù)據(jù)傳輸進(jìn)行加密,這個(gè)選項(xiàng)將直接傳遞給ssh。-F ssh_config: 指定一個(gè)替代的ssh配置文件,此參數(shù)直接傳遞給ssh。-i identity_file: 從指定文件中讀取傳輸時(shí)使用的密鑰文件,此參數(shù)直接傳遞給ssh。-l limit: 限定用戶所能使用的帶寬,以Kbit/s為單位。-o ssh_option: 如果習(xí)慣于使用ssh_config(5)中的參數(shù)傳遞方式,-P port: 注意是大寫的P, port是指定數(shù)據(jù)傳輸用到的端口號(hào)-S program: 指定加密傳輸時(shí)所使用的程序。此程序必須能夠理解ssh(1)的選項(xiàng)。
命令實(shí)例
預(yù)置條件:
本例在vmware打開(kāi)了兩個(gè)ubuntu。
ubuntu A 地址:192.168.6.186,并開(kāi)啟了ssh服務(wù)器 ;
ubuntu B 地址:192.168.6.111。
安裝ssh命令如下:
apt-get install openssh-server
ssh詳細(xì)安裝步驟可以參考博文:《Ubuntu18.04搭建ssh服務(wù)器》
開(kāi)啟ssh服務(wù)器指令【ubuntu A】:
/etc/init.d/ssh restart
執(zhí)行結(jié)果如下:
例1 下載文件
把192.168.6.186服務(wù)器的t.log拷貝到當(dāng)前服務(wù)器的當(dāng)前目錄下;
scp -r root@192.168.6.186:/home/peng/test/t.log ./
執(zhí)行結(jié)果如下:
例2 上傳文件
scp icons.png?x-oss-process=image/watermark,g_center,image_YXJ0aWNsZS9wdWJsaWMvd2F0ZXJtYXJrLnBuZz94LW9zcy1wcm9jZXNzPWltYWdlL3Jlc2l6ZSxQXzQwCg==,t_20 root@192.168.1.1:/root/下載 #本機(jī)文件,copy遠(yuǎn)程服務(wù)器
執(zhí)行結(jié)果:
例3 下載目錄
以root用戶登錄ubuntu A的ssh服務(wù)器,并將文件夾copy到本地
scp -r root@192.168.6.186:/home/peng/driver/list /home/peng/test
執(zhí)行結(jié)果【ubuntu B】:
例4 上傳目錄
將本地文件copy到服務(wù)器,添填寫用戶,默認(rèn)當(dāng)前用戶
scp /home/peng/test/t.log 192.168.6.186:/home/peng/test
執(zhí)行結(jié)果【ubuntu B】:
看到錯(cuò)誤提示:Permission denied,這個(gè)錯(cuò)誤是因?yàn)榉?wù)器A的文件夾/home/peng/test沒(méi)有修改權(quán)限。
進(jìn)入ubuntu A,修改對(duì)應(yīng)文件夾訪問(wèn)權(quán)限:
再次執(zhí)行命令 【ubuntu B】:
顯示傳輸?shù)奈募緐buntu A】
例5 指定端口
使用指定端口從本地拷到遠(yuǎn)程服務(wù)器
scp -P 20022 -r /home/peng/test/list root@192.168.6.186:/home/peng/test
例6 使用證書
使用證書登錄,并遞歸的將遠(yuǎn)程目錄下載到本地,同時(shí)指定了所需要的端口號(hào)。
scp -r -i /Users/test/wx_Document/private.crt -P 2323 root@10.135.178.6:/data/htdocs/www/logs /Users/local
END