我們經常會有通過 ssh 向遠程服務器發送文件的時候,或者從遠程服務器拷貝文件到本地的時候。 一般來講,在本地與遠程服務器之間傳輸文件常用的方式有如下 4 種:
1)scp:這個方法即將被棄用;
2)rsync:目前比較流行的用于文件傳輸的命令;
3)sshfs:通過 ssh 裝載遠程目錄;
4)sftp 客戶端:通過 sftp 訪問文件的桌面工具。
另外,對于遠程服務器,你還需要知道其地址和系統訪問賬號(用戶名、密碼)。 有了這個前提之后,我們再來詳細看一下這幾種方法。
方法1:使用 scp 命令通過 ssh 復制文件
前面我們提到過,scp 即將被啟用,但是,它仍然受到很多人喜歡,因為它的語法類似于 cp 命令。 下面我們看看如何使用 scp 命令。
將文件從遠程計算機復制到本地計算機
現在我們的任務是這樣:將文件從遠程服務器拷貝到本地已登錄的系統中。
這里有一個通用的語法,它將文件從遠程系統上用戶的主目錄復制到本地登錄系統的當前目錄。 如下所示:
scp username@ip_address:/home/username/filename .
看到其與 cp 命令的相似之處了嗎? 除了必須使用冒號 : 指定用戶名和 ip 地址之外,其他幾乎是一樣的。
在上面的例子中,我將文件 remote.txt 從遠程服務器的 /home/abhishek/my_file 目錄拷貝到本地計算機的當前目錄中。
使用這個命令,你需要知道文件在遠程服務器中的完整路徑,tab 鍵補全路徑,對于遠程系統來說是不起作用的。
將本地文件拷貝到遠程服務器中
下面我們來看另外一個例子,使用 scp 通過 ssh 將本地的文件發送到遠程服務器。 其語法如下:
scp filename username@ip_address:/home/username
在上面的例子中,我將位于當前目錄中的本地文件 local.txt 復制到了遠程系統中的 abhishek 用戶主目錄下。 然后使用該用戶登錄了遠程系統,以驗證文件是否被成功拷貝過去。
也可以拷貝目錄
我們在前文中提到過,scp 的語法與 cp 命令類似。 所以,使用 scp 也可以拷貝目錄,方法是使用 -r 選項。 如下為將本地目錄拷貝到遠程系統中的語法:
scp -r source_dir username@ip_address:/home/username/target_dir
方法2:使用 rsync 通過 ssh 復制文件和目錄
由于 scp 即將被棄用,rsync 是下一個通過 ssh 在遠程系統之間復制文件的最佳工具。 實際上,它在很多方面都優于 scp。
其命令語法與 scp 相同。 舊版本的 rsync 必須使用 rsync -e ssh,但是現在已經不需要了。
將遠程文件復制到本地計算機
假如我們要將遠程系統中的文件復制到當前已經登錄到的系統中的當前目錄中,其語法結構為:
rsync username@ip_address:/home/username/filename .
參考方法1 中的例子,我們將拷貝 remote.txt 到本地系統當前目錄,如下圖所示:
將文件從本地計算機拷貝到遠程系統
將文件從本地拷貝到遠程系統中相應目錄中,語法結構如下:
rsync filename username@ip_address:/home/username
依然參考方法1 中的例子,我們將 local.txt 拷貝到遠程系統,如下圖所示:
那么,怎樣復制目錄呢?
要復制目錄,與 scp 一樣,使用 -r 選項:
rsync -r source_dir username@ip_address:/home/username/target_dir
看下面的例子,我復制遠程系統中的目錄 my_file 到本地系統中:
rsync是一種通用工具。 它本質上是一個在兩個目錄之間“遞歸同步”內容的工具,在進行自動備份時很受歡迎。
方法3:使用 SSHFS 訪問遠程系統中的文件
SSHFS(SSH文件系統)可用于訪問遠程文件和目錄。 但是,這對于復制文件來說不是很方便。
這種方法,我們可以在本地系統上加載遠程目錄,然后就可以在這個目錄和本地系統之間復制文件。 這相當于 windows 系統中的遠程桌面的概念。
sshfs 在使用之前需要先安裝,在 Debian 或者 Ubuntu 中,可以使用如下命令:
sudo apt install sshfs
安裝完成之后,就可以使用 sshfs 了。 一個好的習慣是為其專門創建一個目錄:
mkdir mount_dir
然后使用如下方式在遠程計算機上,加載此目錄:
sshfs username@IP_address:path_to_dir mount_dir
加載完成后,就可以將文件復制到這個目錄中,或者在這個目錄中復制文件到其他目錄,就想它在本地計算機中一樣。
cp local_file mount_dir
需要注意的是,裝載此目錄進行工作,工作完成后,還需要卸載它:
umount mount_dir
下圖中的例子,我在本地計算機中新建了一個目錄 remote_dir,然后將遠程系統中的 my_file 目錄裝載到本地的 remote_dir 目錄中,然后將 remote.txt 文件復制到本地系統,最后卸載該目錄:
方法4:使用基于 GUI 的 SFTP 客戶端在遠程系統之間傳輸文件
最后一個我們將要介紹的方法,是可以使用 FTP 客戶端在遠程和本地系統之間傳輸文件。
FileZilla 是最流行的跨平臺FTP客戶端之一,安裝和使用都很方便。
安裝完成后,找到 File -> Site Manager (文件->站點管理器),添加遠程系統詳細信息,如 IP 地址、SSH 端口號、用戶名和密碼等。 如下圖所示:
連接成功后,窗口會分為左右兩個部分,左邊為本地文件系統,右側顯示遠程文件系統:
拷貝文件的方式也很簡單,直接從左邊向右邊拖拽文件,即可將本地文件復制到遠程系統中; 反過來,從右側拖拽文件到左側,即復制遠程系統中的文件到本地計算機。 復制過程中,在窗口底部會顯示進度條。
-
計算機
+關注
關注
19文章
7540瀏覽量
88646 -
服務器
+關注
關注
12文章
9308瀏覽量
86071 -
命令
+關注
關注
5文章
696瀏覽量
22114 -
客戶端
+關注
關注
1文章
290瀏覽量
16767 -
SSH
+關注
關注
0文章
189瀏覽量
16406
發布評論請先 登錄
相關推薦
評論