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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 综合教程 >内容正文

综合教程

Linux 命令(30)—— scp 命令

發(fā)布時(shí)間:2023/12/2 综合教程 33 生活家
生活随笔 收集整理的這篇文章主要介紹了 Linux 命令(30)—— scp 命令 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.簡(jiǎn)介

scp(secure copy)命令是一個(gè)基于 SSH 安全的進(jìn)行遠(yuǎn)程文件拷貝命令,用于在 Linux 下遠(yuǎn)程拷貝文件,和它類似的命令有 cp,不過(guò) cp 只是在本機(jī)進(jìn)行拷貝不能跨服務(wù)器,而且 scp 支持對(duì)傳輸?shù)臄?shù)據(jù)進(jìn)行加密。

2.命令格式

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

3.選項(xiàng)說(shuō)明

-1使用 SSH 協(xié)議版本 1
-2使用 SSH 協(xié)議版本 2
-4使用 ipv4
-6使用 ipv6
-B以批處理模式運(yùn)行,阻止 scp 詢問(wèn)口令
-C使用壓縮,將 -C 標(biāo)志傳遞給 SSH,從而打開(kāi)壓縮功能
-c CIPHER使用指定的秘鑰對(duì)傳輸?shù)奈募M(jìn)行加密
-F SSH_CONFIG指定 SSH 配置文件
-i IDENTITY_FILE從指定文件中讀取傳輸時(shí)使用的密鑰,此參數(shù)直接傳遞給 ssh
-l LIMIT指定寬帶限制
-o SSH_OPTION指定使用的 ssh 選項(xiàng),可以使用 SSH_CONFIG 中使用的 ssh 選項(xiàng)
-P PORT指定遠(yuǎn)程主機(jī)的端口號(hào)
-p保留文件的最后修改時(shí)間,最后訪問(wèn)時(shí)間和權(quán)限模式
-q靜默模式,不顯示復(fù)制進(jìn)度以及來(lái)自 ssh 的警告和診斷消息
-r以遞歸方式復(fù)制整個(gè)目錄
-S PROGRAM指定加密傳輸時(shí)所使用的程序。此程序必須能夠理解 ssh 的選項(xiàng)
-v使用冗余模式,使 scp 和 ssh 打印調(diào)試信息以及進(jìn)度

注意事項(xiàng):
(1)scp 返回 0 成功,>0 失敗;
(2)使用 scp 在不同主機(jī)之間進(jìn)行文件傳輸,需要確保兩臺(tái)設(shè)備都開(kāi)啟了ssh遠(yuǎn)程登錄服務(wù),且兩臺(tái)設(shè)備能互相通信;
(3)使用 scp 命令要確保使用的用戶具有可讀取遠(yuǎn)程服務(wù)器相應(yīng)文件的權(quán)限,否則scp 命令無(wú)法起作用。

4.常用示例

(1)遠(yuǎn)程主機(jī)之間,使用 scp 拷貝多個(gè)文件。
方法一:將多個(gè)文件放在同一個(gè)目錄中,使用scp -r來(lái)拷貝,參考如下代碼:

scp -r uername@sourceHostName:sourcedir username@destinationHostName:destinationdir

方法二:將多個(gè)文件或者目錄使用tar打包后作為單個(gè)文件傳輸。

方法三:scp支持同時(shí)拷貝多個(gè)文件的功能。

scp file1  file2 remote_username@remote_ip:remote_folder 

(2)從本地復(fù)制文件到遠(yuǎn)程。
命令格式:

scp local_file  remote_username@remote_ip:remote_folder 
# 或
scp local_file remote_username@remote_ip:remote_file 
# 或
scp local_file remote_ip:remote_folder 
# 或
scp local_file remote_ip:remote_file 

第1,2個(gè)指定了用戶名,命令執(zhí)行后需要再輸入密碼,第1個(gè)僅指定了遠(yuǎn)程的目錄,文件名字不變,第2個(gè)指定了文件名;
第3,4個(gè)沒(méi)有指定用戶名,命令執(zhí)行后需要輸入用戶名和密碼,第3個(gè)僅指定了遠(yuǎn)程的目錄,文件名字不變,第4個(gè)指定了文件名。
應(yīng)用實(shí)例:

scp /home/space/music/1.mp3 root@www.runoob.com:/home/root/others/music 
scp /home/space/music/1.mp3 root@www.runoob.com:/home/root/others/music/001.mp3 
scp /home/space/music/1.mp3 www.runoob.com:/home/root/others/music 
scp /home/space/music/1.mp3 www.runoob.com:/home/root/others/music/001.mp3 

(3)使用 scp 復(fù)制目錄。
命令格式:

scp -r local_folder remote_username@remote_ip:remote_folder 
# 或
scp -r local_folder remote_ip:remote_folder

第 1 個(gè)指定了用戶名,命令執(zhí)行后需要再輸入密碼;
第 2 個(gè)沒(méi)有指定用戶名,命令執(zhí)行后需要輸入用戶名和密碼。
應(yīng)用實(shí)例:

scp -r /home/space/music/ root@www.runoob.com:/home/root/others/ 
scp -r /home/space/music/ www.runoob.com:/home/root/others/ 

上面命令將本地 music 目錄復(fù)制到遠(yuǎn)程 others 目錄下。

(4)從遠(yuǎn)程復(fù)制到本地。
從遠(yuǎn)程復(fù)制到本地,只要將從本地復(fù)制到遠(yuǎn)程的命令的后2個(gè)參數(shù)調(diào)換順序即可,如下實(shí)例
應(yīng)用實(shí)例:

scp root@www.runoob.com:/home/root/others/music /home/space/music/1.mp3 
scp -r www.runoob.com:/home/root/others/ /home/space/music/

**說(shuō)明:**如果遠(yuǎn)程服務(wù)器防火墻有為scp命令設(shè)置了指定的端口,我們需要使用 -P 參數(shù)來(lái)設(shè)置命令的端口號(hào),命令格式如下:

#scp 命令使用端口號(hào) 4588
scp -P 4588 remote@www.runoob.com:/usr/local/sin.sh /home/administrator

(5)使用 expect 和 scp 實(shí)現(xiàn)不同主機(jī)之間文件的自動(dòng)傳輸。
腳本如下:

#!/usr/bin/expect
set timeout 5
spawn scp dablelv@172.25.44.22:/yourpath/yourfile root@10.130.89.104:/destinationpath
expect "dablelv@172.25.44.22's password:"
send "123456\n"
expect "root@10.130.89.104's password:"
send "123456\n"
interact eof

腳本解釋:
第一行:#!/usr/bin/expect 指明該腳本由expect來(lái)解析。這里的expect其實(shí)和linux下的bash、Windows下的cmd.exe是一類東西,都是可執(zhí)行程序,也可用于腳本的解析器。expect的主要作用是解析自動(dòng)交互的腳本,比如實(shí)現(xiàn)ssh的自動(dòng)登錄,無(wú)需手動(dòng)輸入密碼等。

第二行:set timeout 5 用于設(shè)置expect的expect命令的等待時(shí)間為5秒,如果expect等待的值在5秒內(nèi)沒(méi)有出現(xiàn)在標(biāo)準(zhǔn)輸出,那么expect腳本繼續(xù)執(zhí)行。expect的默認(rèn)timeout為10s。

第三行:spawn scp dablelv@172.25.44.22:/yourpath/yourfile。spawn是expect的內(nèi)置命令,不是Linux可執(zhí)行程序,使用which spawn 是查不到spawn所在路徑的。這個(gè)就好比cd是shell的內(nèi)建命令,離開(kāi)shell,就無(wú)法執(zhí)行cd一樣。 它主要的功能是給ssh運(yùn)行進(jìn)程加個(gè)殼,用來(lái)傳遞交互指令。 它主要的功能是給后面需要執(zhí)行的命令加個(gè)殼,用來(lái)傳遞交互指令。

第四行:expect "dablelv@172.25.44.22's password:" expect命令也是expect的內(nèi)建命令,其作用就是等待標(biāo)準(zhǔn)輸出出現(xiàn)指定的值,如果有則立即返回,向下執(zhí)行;否則就一直等待,等待的最長(zhǎng)時(shí)間由上面的set timeout來(lái)指定。

第五行:send "123456\n"就是在expect等待到指定的值之后向標(biāo)準(zhǔn)輸出發(fā)送的值,這里就是執(zhí)行交互動(dòng)作,與手工輸入密碼的動(dòng)作等效。效果上跟用戶手動(dòng)在終端上輸入123456之后敲一個(gè)回車一樣。

第六、七行實(shí)現(xiàn)的功能同第五六行,因?yàn)閟cp需要登錄到兩個(gè)主機(jī)實(shí)現(xiàn)文件的網(wǎng)絡(luò)傳輸,所以這里是登錄第二臺(tái)主機(jī)需要輸入的密碼。

第八行:interact eof 表示expect腳本執(zhí)行結(jié)束。執(zhí)行完成上述命令后,此時(shí)Expect會(huì)把控制權(quán)交給控制臺(tái),這個(gè)時(shí)候就變回手工操作。如果是使用ssh登錄其它主機(jī)的話,需要保持在交互狀態(tài),那么此時(shí)需要interact,如果沒(méi)有這一句登錄完成后會(huì)立刻退出,而不是留在遠(yuǎn)程終端上。如果你只是登錄過(guò)去執(zhí)行一段命令就退出,可將其改為expect eof

如果出現(xiàn) ": no such file or directory 這樣的錯(cuò)誤,很可能是因?yàn)樵诒镜豔indows環(huán)境編輯,上傳到Linux下執(zhí)行因文件格式不同導(dǎo)致的,可使用vi或者vim在末行模式使用:set ff來(lái)查看文件格式,如果是dos格式的話,那么需要使用:set ff=unix 來(lái)改變文件格式。


參考文獻(xiàn)

[1] scp(1) manual
[2] Linux命令大全.scp命令
[3] Linux scp命令
[4] expect簡(jiǎn)單教程

總結(jié)

以上是生活随笔為你收集整理的Linux 命令(30)—— scp 命令的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。