[轉]12個scp傳輸文件的命令栗子
原文地址: https://www.cnblogs.com/voidy/p/4215891.html
copy原文是為了修改部分錯誤以及便於記錄自己的筆記。英文原文點:這裏
安全復制
Scp(Secure Copy)是一個在各個主機之間進行復制或者文件傳輸的一個命令行工具。它使用一種同ssh一樣的安全機制。事實上,它在後臺使用ssh連接來進行文件的傳輸。scp既指一種定義安全復制應該如何工作的協議,也指一種可以被安裝的作為OpenSSH工具套的一部分的軟件或是指令。
在這篇簡單的教程中,我們可以看到一些scp指令的栗子以及如何使用它進行安全的文件傳輸。
使用scp
scp的基礎語法很容易記憶,它看起來就像醬紫:
1 $ scp source_file_path destination_file_path
根據不同的主機,文件路徑應該包擴:完整的主機地址,端口號,用戶名,密碼以及文件路徑。
所以如果你正在從你的本地計算機“發送”文件到遠程計算機(上傳)的語法是這樣的:
1 $ scp ~/my_local_file.txt user@remote_host.com:/some/remote/directory
當從遠程主機復制文件到本地主機(下載),他看起來正好相反:
1 $ scp user@remote_host.com:/some/remote/directory ~/my_local_file.txt 2 3 # just download the file 4 $ scp [email protected]:/some/path/file.txt .
這裏很多是有關用scp來完成常規任務的。除了這些,scp也支持很多其他的選項和功能。讓我們快速看一下他們的綜述。
沒錯,默認情況下,scp總是覆蓋目標地址的文件。如果你想避免它,那就使用功能更為強大的rsync工具吧。
一、詳細輸出
有了詳細的輸出,SCP的程序將輸出大量關於它在後臺做什麽的信息。當程序失敗或無法完成請求時這是非常有用的。詳細的輸出將正確的指明該程序哪裏出了問題。
栗子:
1 $ scp -v ~/test.txt [email protected]:/root/help2356.txt 2 Executing: program /usr/bin/ssh host 192.168.1.3, user root, command scp -v -t /root/help2356.txt3 OpenSSH_6.2p2 Ubuntu-6ubuntu0.1, OpenSSL 1.0.1e 11 Feb 2013 4 debug1: Reading configuration data /home/enlightened/.ssh/config 5 debug1: Reading configuration data /etc/ssh/ssh_config 6 debug1: /etc/ssh/ssh_config line 19: Applying options for * 7 debug1: Connecting to 192.168.1.3 [192.168.1.3] port 22. 8 debug1: Connection established. 9 ..... OUTPUT TRUNCATED
輸出的信息將會很多,而且包含有關連接如何建立,正在使用什麽配置和認證文件等等的詳細信息。
二、多文件傳輸
多個文件可以像下面那樣用空格分隔開
栗子:
1 $ scp foo.txt bar.txt username@remotehost:/path/directory/
從遠程主機復制多個文件到當前目錄
栗子:
1 $ scp username@remotehost:/path/directory/\{foo.txt,bar.txt\} . 2 3 $ scp [email protected]:~/\{abc.log,cde.txt\} .
三、復制整個文件夾(遞歸)
為了從一個主機往另一個主機復制整個文件夾,需要使用-r 並且指定目錄
-v 和大多數 linux 命令中的 -v 意思一樣 , 用來顯示進度 . 可以用來查看連接 , 認證 , 或是配置錯誤 .
栗子如下:
1 $ scp -v -r ~/Downloads [email protected]:/root/Downloads
四、在兩個遠程主機之間復制文件
scp也可以把文件從一個遠程主機復制到另一個遠程主機。
舉個栗子:
1 $ scp user1@remotehost1:/some/remote/dir/foobar.txt user2@remotehost2:/some/remote/dir/
五、用壓縮來加快傳輸
一個用於加快傳輸,節省時間和帶寬的超酷的選項!你所需要做的就是用C選項來啟用壓縮功能。該文件在傳輸過程中被壓縮,在目的主機上被解壓縮。
栗子如下:
1 $ scp -vrC ~/Downloads [email protected]:/root/Downloads
在上面的栗子中我們開啟壓縮選項移動了整個文件夾。速度的增長取決於多少文件能被壓縮。
六、限制帶寬的使用
如果你不想scp占用所有的帶寬,那麽用選項“l”來限制最大傳輸速度,Kbit/s
栗子如下:
1 $ scp -vrC -l 400 ~/Downloads [email protected]:/root/Downloads
七、在遠程主機上連接一個不同的端口
如果遠程服務器有ssh守護進程運行在不同的端口上(默認是22),那麽你需要告訴scp使用“-P”選項來使用指定的端口。
栗子如下:
1 $ scp -vC -P 2200 ~/test.txt [email protected]:/some/path/test.txt
八、保存文件屬性
“-p”選項(小寫),將會保存源文件的修改時間,訪問時間以及方式。
舉例如下:
1 $ scp -C -p ~/test.txt [email protected]:/some/path/test.txt
九、安靜模式
在安靜模式(“-q”選項),scp輸出將會減少,並且不再顯示進度表以及警告和診斷信息。
栗子如下:
1 $ scp -vCq ~/test.txt [email protected]:/some/path/test.txt
十、特殊標識文件
當使用基於秘鑰認證(無密碼)。你將使用特殊的包含私有秘鑰的標識文件。這個選項直接傳遞到ssh命令並且以同樣的方式工作。
舉個栗子:
1 $ scp -vCq -i private_key.pem ~/test.txt [email protected]:/some/path/test.txt
十一、使用不同的ssh_config文件
用”F”選項指定不同的ssh_config文件
栗子如下:
1 $ scp -vC -F /home/user/my_ssh_config ~/test.txt [email protected]:/some/path/test.txt
十二、使用不同的加密
scp默認使用AES加密,有時候你可能想使用不同的加密。用不同的加密可能會加快轉移過程,舉例來說,blowfish和arcfour被認為比AES更快的存在(但是安全上不如AES)。
舉個栗子:
1 $ scp -c blowfish -C ~/local_file.txt username@remotehost:/remote/path/file.txt
在上面的栗子中我們用blowfish加密並同時壓縮,這可以得到顯著的速度上的提升,當然也取決於可用的帶寬。
總結
盡管SCP在安全地傳輸文件方面是非常有效的,它缺乏一個文件同步工具必要的功能。它所能做的就是復制粘貼上述所有文件從一個位置到另一個位置。
一個更強大的工具的Rsync它不僅具有SCP的所有功能,而且增加了更多的功能用來在2個主機智能同步文件。例如,它可以檢查並上傳只有修改過的文件,忽略現有的文件等等。
[轉]12個scp傳輸文件的命令栗子