1. 程式人生 > 實用技巧 >Linux scp命令

Linux scp命令

概念

scp是secure copy的簡寫, 是 linux 系統下基於 ssh 登陸進行安全的遠端檔案拷貝命令。scp 是加密的,rcp 是不加密的,scp 是 rcp 的加強版。

因為scp傳輸是加密的,可能會稍微影響一下速度。另外,scp還非常不佔資源,不會提高多少系統負荷,在這一點上,rsync就遠遠不及它了。雖然 rsync比scp會快一點,但當小檔案眾多的情況下,rsync會導致硬碟I/O非常高,而scp基本不影響系統正常使用。

語法

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

簡易寫法:

scp [可選引數] file_source file_target 

引數說明:

-1: 強制scp命令使用協議ssh1
-2: 強制scp命令使用協議ssh2
-4: 強制scp命令只使用IPv4定址
-6: 強制scp命令只使用IPv6定址
-B: 使用批處理模式(傳輸過程中不詢問傳輸口令或短語)
-C: 允許壓縮。(將-C標誌傳遞給ssh,從而開啟壓縮功能)
-p: 保留原檔案的修改時間,訪問時間和訪問許可權。
-q: 不顯示傳輸進度條。
-r: 遞迴複製整個目錄。
-v: 詳細方式顯示輸出。scp和ssh(1)會顯示出整個過程的除錯資訊。這些資訊用於除錯連線,驗證和配置問題。
-c cipher:        以cipher將資料傳輸進行加密,這個選項將直接傳遞給ssh。
-F ssh_config:    指定一個替代的ssh配置檔案,此引數直接傳遞給ssh。
-i identity_file: 從指定檔案中讀取傳輸時使用的金鑰檔案,此引數直接傳遞給ssh。
-l limit:         限定使用者所能使用的頻寬,以Kbit/s為單位。
-o ssh_option:    如果習慣於使用ssh_config(5)中的引數傳遞方式,
-P port:          注意是大寫的P, port是指定資料傳輸用到的埠號
-S program:       指定加密傳輸時所使用的程式。此程式必須能夠理解ssh(1)的選項。

命令例項

預置條件:

本例在vmware打開了兩個ubuntu。
ubuntu A 地址:192.168.6.186,並開啟了ssh伺服器
ubuntu B 地址:192.168.6.111

安裝ssh命令如下:

apt-get install openssh-server

開啟ssh伺服器指令【ubuntu A】:

  /etc/init.d/ssh restart

執行結果如下:

例1 下載檔案

把192.168.6.186伺服器的t.log拷貝到當前伺服器的當前目錄下;

scp -r [email protected]:/home/peng/test/t.log ./

執行結果如下:

例2 上傳檔案

scp icons.png [email protected]:/root/下載   #本機檔案,copy遠端伺服器

執行結果:

例3 下載目錄

  1. 以root使用者登入ubuntu A的ssh伺服器,並將資料夾copy到本地
 scp -r [email protected]:/home/peng/driver/list  /home/peng/test

執行結果【ubuntu B】:

  1. 將本地檔案copy到伺服器,添填寫使用者,預設當前使用者
scp /home/peng/test/t.log 192.168.6.186:/home/peng/test 

執行結果【ubuntu B】:

看到錯誤提示:Permission denied,這個錯誤是因為伺服器A的資料夾/home/peng/test沒有修改許可權。
進入ubuntu A

再次執行命令 【ubuntu B】:

【ubuntu A】

例4 指定埠

使用指定埠從本地拷到遠端伺服器

scp -P 20022 -r /home/peng/test/list [email protected]:/home/peng/test

例5 使用證書

使用證書登入,並遞迴的將遠端目錄下載到本地,同時指定了所需要的埠號。

scp -r -i /Users/test/wx_Document/private.crt -P 2323 [email protected]:/data/htdocs/www/logs /Users/local