2008-03-06

scp - 藉由 ssh 的遠端檔案傳輸指令

先前在鳥哥的網站上看到一個不錯的指令 scp,它主要的功用是用來複製兩主機間的檔案,用法就與 cp 類似,只不過多了個使用者名稱 (username) 與遠端位置 (remote address)。

1. 安裝 ssh

在使用 scp 指令之前先在本地端以及遠端安裝對應的套件方可運作,畢竟 scp 是靠 ssh 在運作的。

1.1. 本地端需安裝 openssh-client 套件。
[ jonny@local ~ ]
$ sudo apt-get install openssh-client [Enter]

1.2. 遠端需安裝 openssh-server 套件。
[ jonny@remote ~ ]
$ sudo apt-get install openssh-server [Enter]

2. 指令說明

2.1. 將檔案由本機複製到遠端主機。
[ jonny@local ~ ]
$ scp FileName jonny@remote:/home/jonny/ [Enter]
jonny@remote's password: # 此為遠端使用者密碼。
FileName         100%   0   0.0KB/s   00:00
  • FileName: 預複製的檔案名稱。
  • jonny: 遠端使用者。
  • remote: 遠端伺服器的位址,可以是 IP 也可以是網域名稱(Domain name)。
  • /home/jonny/: 遠端伺服器內的檔案位置。

2.2. 由遠端主機複製檔案至本機。
[ jonny@local ~ ]
$ scp jonny@remote-server.net:/home/jonny/.bashrc .
jonny@remote's password: # 此為遠端使用者密碼。
.bashrc         100%   0   0.0KB/s   00:00
  • jonny: 遠端使用者。
  • remote: 遠端伺服器的位址,可以是 IP 也可以是網域名稱(Domain name)。
  • /home/jonny/.bashrc: 遠端伺服器內的檔案位置。
  • .: 當前目錄。

2.3. ssh 預設走的 Port 為 22,如果有自訂其他 Port 可加上 -P 參數。
[ jonny@local ~ ]
$ scp -P 2222 FileName jonny@remote:/home/jonny/ [Enter]

2.4. 若有多個檔案,則可以使用 -r 參數來進行。
[ jonny@local ~ ]
$ scp -r FileName* jonny@remote:/home/jonny/ [Enter]

※ 註:在 GNU/Linux 的世界裡,若檔案或目錄的第一個字元為 . 時則為隱藏檔。

資料來源:
鳥哥的 Linux 私房菜 - SSH 伺服器 - 4.3 ssh 用戶端連線 - scp

2 則留言 :

  1. 我試者從Linux丟到
    Ubuntu 10
    最後卻是timeout
    請問知道怎麼處理

    回覆刪除
  2. 首先您要確定..
    1. ubuntu 10 (server) 有無安裝 openssh-server。
    sudo aptitude install openssh-server


    2. ubuntu 10 (server) 的防火牆是否擋住 22 port。
    sudo iptables -L

    您可以參考:
    zh-tw/HowTos/Network/IPTables - CentOS WikiCreMaker 的生活雜記: 談談 ufw

    回覆刪除

謝謝您的寶貴意見,凍仁一定會盡快處理 ~^^