2013年4月17日 星期三

scp 服務器間搬檔的工具







  • 檔案異地直接複製: scp
通常使用 sftp 是因為可能不知道伺服器上面有什麼檔名的檔案存在,如果已經知道伺服器上的檔案檔名了, 那麼最簡單的檔案傳輸則是透過 scp 這個指令喔!最簡單的 scp 用法如下:
[root@www ~]# scp [-pr] [-l 速率] file  [帳號@]主機:目錄名 <==上傳
[root@www ~]# scp [-pr] [-l 速率] [帳號@]主機:file  目錄名 <==下載
選項與參數:
-p :保留原本檔案的權限資料;
-r :複製來源為目錄時,可以複製整個目錄 (含子目錄)
-l :可以限制傳輸的速度,單位為 Kbits/s ,例如 [-l 800] 代表傳輸速限 100Kbytes/s

# 1. 將本機的 /etc/hosts* 全部複製到 127.0.0.1 上面的 student 家目錄內
[root@www ~]# scp /etc/hosts* student@127.0.0.1:~
student@127.0.0.1's password: <==輸入 student 密碼
hosts                        100%  207         0.2KB/s   00:00
hosts.allow                  100%  161         0.2KB/s   00:00
hosts.deny                   100%  347         0.3KB/s   00:00
# 檔名顯示                   進度  容量(bytes) 傳輸速度  剩餘時間
# 你可以仔細看,出現的訊息有五個欄位,意義如上所示。

# 2. 將 127.0.0.1 這部遠端主機的 /etc/bashrc 複製到本機的 /tmp 底下
[root@www ~]# scp student@127.0.0.1:/etc/bashrc /tmp
其實上傳或下載的重點是那個冒號 (:) 囉!連接在冒號後面的就是遠端主機的檔案。 因此,如果冒號在前,代表的就是從遠端主機下載下來,如果冒號在後,則代表本機資料上傳啦! 而如果想要複製目錄的話,那麼可以加上 -r 的選項!
例題:
假設本機有個檔案檔名為 /root/dd_10mb_file ,這個檔案有 10 MB 這麼大。假設你想要上傳到 127.0.0.1 的 /tmp 底下去, 而且你在 127.0.0.1 上面有 root 這個帳號的使用權。但由於頻寬很寶貴,因此你只想要花費 100Kbyes/s 的傳輸量給此一動作, 那該如何下達指令?
答:
由於預設不存在這個檔案,因此我們得先使用 dd 來建立一個大檔案:
dd if=/dev/zero of=/root/dd_10mb_file bs=1M count=10
建立妥當之後,由於是上傳資料,觀察 -l 的選項中,那個速率用的是 bit ,轉成容量的 bytes 需要乘上 8 倍,因此指令就要這樣下達:
scp -l 800 /root/dd_10mb_file root@127.0.0.1:/tmp



reference:http://linux.vbird.org/linux_server/0310telnetssh.php


沒有留言: