文件異地直接複製: scp
SCP的全稱是secure copy (remote file copy program),此命令是openssh-clients附帶的,它的作用就是在機器之間實現拷貝,且機器之間的傳輸完全是加密的。
最簡單的 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 的選項!
例題:
答:
dd if=/dev/zero of=/root/dd_10mb_file bs=1M count=10
scp -l 800 /root/dd_10mb_file root@127.0.0.1:/tmp
模擬 FTP 的文件傳輸方式: sftp
ssh 是登入遠程服務器進行工作,那如果你只是想要從遠程服務器下載或上傳檔案呢? 那就不是使用 ssh 啦,而必須要使用 sftp 或 scp。這兩個指令也都是使用 ssh 的通道 (port 22),只是模擬成 FTP 與複製的動作而已。我們先談談 sftp ,這個指令的用法與 ssh 很相似,只是 ssh 是用在登入而 sftp 在上傳/下載文件而已。
[root@www ~]# sftp student@localhost Connecting to localhost... student@localhost's password: <== 這裏請輸入密碼啊! sftp> exit <== 這裏就是在等待你輸入 ftp 相關指令的地方了!
進入到 sftp 之後,那就跟在一般 FTP 模式下的操作方法沒有兩樣了!底下我們就來談一談, sftp 這個接口下的使用指令吧!
針對遠方服務器主機 (Server) 之行爲 | |
變換目錄到 /etc/test 或其他目錄 | cd /etc/test cd PATH |
列出目前所在目錄下的文件名 | ls dir |
建立目錄 | mkdir directory |
刪除目錄 | rmdir directory |
顯示目前所在的目錄 | pwd |
更改檔案或目錄羣組 | chgrp groupname PATH |
更改檔案或目錄擁有者 | chown username PATH |
更改檔案或目錄的權限 | chmod 644 PATH 其中,644 與權限有關!回去看基礎篇! |
建立連結檔 | ln oldname newname |
刪除檔案或目錄 | rm PATH |
更改檔案或目錄名稱 | rename oldname newname |
離開遠程主機 | exit (or) bye (or) quit |
針對本機 (Client) 之行爲(都加上 l, L 的小寫 ) | |
變換目錄到本機的 PATH 當中 | lcd PATH |
列出目前本機所在目錄下的文件名 | lls |
在本機建立目錄 | lmkdir |
顯示目前所在的本機目錄 | lpwd |
針對資料上傳/下載的行爲 | |
將檔案由本機上傳到遠程主機 | put [本機目錄或檔案] [遠程] put [本機目錄或檔案] 如果是這種格式,則檔案會放置到目前遠程主機的目錄下! |
將檔案由遠程主機下載回來 | get [遠程主機目錄或檔案] [本機] get [遠程主機目錄或檔案] 若是這種格式,則檔案會放置在目前本機所在的目錄當中!可以使用通配符,例如: get * get *.rpm 亦是可以的格式! |
就整體而言, sftp 在 Linux 底下,如果不考慮圖形接口,那麼他已經可以取代 FTP 了呢!因爲所有的功能都已經涵蓋啦!因此,在不考慮到圖形接口的 FTP 軟件時,可以直接關掉 FTP 的服務,而改以 sftp-server 來提供 FTP 的服務吧! ^_^
例題:
答:
[root@www ~]# sftp student@localhost sftp> lls /etc/hosts <==先看看本機有沒有這個檔案 /etc/hosts sftp> put /etc/hosts <==有的話,那就上傳吧! Uploading /etc/hosts to /home/student/hosts /etc/hosts 100% 243 0.2KB/s 00:00 sftp> ls <==有沒有上傳成功?看遠程目錄下的文件名 hosts sftp> ls -a <==那有沒有隱藏檔呢? . .. .bash_history .bash_logout .bash_profile .bashrc .mozilla hosts sftt> lcd /tmp <==切換本機目錄到 /tmp sftp> lpwd <==只是進行確認而已! Local working directory: /tmp sftp> get .bashrc <==沒問題就下載吧! Fetching /home/student/.bashrc to .bashrc /home/student/.bashrc 100% 124 0.1KB/s 00:00 sftp> lls -a <==看本地端檔案檔名 . .font-unix keyring-rNd7qX .X11-unix .. .gdm_socket lost+found scim-panel-socket:0-root .bashrc .ICE-unix mapping-root .X0-lock sftp> exit <==離開吧!