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