1. 程式人生 > >[轉]12個scp傳輸文件的命令栗子

[轉]12個scp傳輸文件的命令栗子

body cut nec nss bar options font 語法 blank

原文地址: 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.txt
3 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傳輸文件的命令栗子