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