scp是secure copy的簡寫, 是 linux 系統下基于 ssh 登陸進行安全的遠程文件拷貝命令。scp 是加密的,rcp 是不加密的,scp 是 rcp 的加強版。
因為scp傳輸是加密的,可能會稍微影響一下速度。另外,scp還非常不占資源,不會提高多少系統負荷,在這一點上,rsync就遠遠不及它了。雖然 rsync比scp會快一點,但當小文件眾多的情況下,rsync會導致硬盤I/O非常高,而scp基本不影響系統正常使用。
場景:假設我現在有兩臺服務器(這里的公網ip和內網ip相互傳都可以,當然用內網ip相互傳比較快,**公網ip不便公布)
Sessions1:?47.95.208.2** 內網:172.17.31.174 User:root Sessions2:?47.94.92.2** 內網:172.17.31.173 User:root
這里常用的兩種辦法:
1.當從一個遠程服務器傳輸文件到另一個服務器上(你想傳給別人文件)
現在我們登錄172.17.31.173這臺服務器,想把當前的?test.mysql?傳給別人(?172.17.31.174?這臺服務器)
hostname -i?可以查看當前ip
命令:
scp?test.sql?root@172.17.31.174:/data/
如果兩臺服務器直接沒有配置免密登錄的話需要輸入密碼。
這里的ip我用的是內網ip,所以傳的快點兒,走公網的話就慢很多(親測)
傳輸完成!
在ip為后綴174的服務器查看一下:
附錄:
scp [可選參數] file_source file_target
常用的-r,-C
-1:?強制scp命令使用協議ssh2 -2:?強制scp命令使用協議ssh3 -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)的選項。
2.在本地服務器,從另一個服務器中獲取文件(你想從別人獲取文件)
在173服務data目錄中新建一個local_test 用來測試文件夾(測試-r參數的)
然后轉到本地服務器(*174這一臺),這里的本地服務器是相對的。
命令:
scp?-r?root@172.17.31.173:/data/local_test?/data/
拷貝文件夾則需要在scp后面加上-r
大白話描述:?
scp?root@遠程的服務器Ip:文件路徑?存放路徑
在遠程服務器上拷貝到本地服務器(登錄遠程服務器傳給別人(本地)文件文件)
命令:
scp?test.sql?root@172.17.31.174:/data/
需要別人(本地)的ip地址傳輸
在本地服務器登錄,從遠程服務器獲取文件(自己主動去別人哪里獲取文件)
命令:
scp?-r?root@172.17.31.173:/data/local_test?/data/
需要遠程ip(別人)地址獲取文件