通常使用 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
沒有留言:
張貼留言