通過(guò)sftp/scp/rsync/netcat上傳或下載文件
在兩臺(tái)設(shè)備之間傳輸文件是常見(jiàn)的運(yùn)維需求,常用的安全文件傳輸工具包括sftp
、scp
、rsync
以及netcat
。本文將介紹如何使用這四種工具進(jìn)行文件傳輸。
工具 | 特點(diǎn)及使用場(chǎng)景說(shuō)明 |
sftp | 使用交互式文件管理的傳輸方式,傳輸前需先與遠(yuǎn)程FTP服務(wù)器建立連接,連接后可以使用 |
scp | 用于快速傳輸單個(gè)文件或整個(gè)目錄。如果事先了解遠(yuǎn)端文件目錄結(jié)構(gòu),可以使用 |
rsync | 主要用于文件同步、備份等場(chǎng)景,并支持增量拷貝。在需要傳輸大文件或網(wǎng)絡(luò)環(huán)境較差的情況下,可以考慮使用rsync工具。 |
netcat | 是一款功能較為完善的網(wǎng)絡(luò)工具,不僅支持文件傳輸,還具備端口掃描和端口連通性測(cè)試等功能。然而,在默認(rèn)情況下, |
適用場(chǎng)景
sftp
和scp
工具支持的操作系統(tǒng)包括Linux、macOS和Windows。rsync
和netcat
支持的操作系統(tǒng)包括Linux和macOS。傳輸文件大小限制:文件大小不受限制。
重要若您的本地主機(jī)為Windows系統(tǒng),除了選擇
sftp
和scp
命令行工具之外,也可以使用圖形界面的WinSCP
工具進(jìn)行文件傳輸,有關(guān)操作,請(qǐng)參見(jiàn)通過(guò)WinSCP上傳或下載文件(本地主機(jī)為Windows)。以下情況,還可以通過(guò)Workbench或云助手上傳下載文件(不限制本地主機(jī)類型):
(單個(gè)文件不大于500 MB)通過(guò)Workbench工具上傳或下載。具體操作,請(qǐng)參見(jiàn)使用Workbench上傳或下載文件。
(單個(gè)文件不大于24 KB)通過(guò)云助手上傳文件至ECS。具體操作,請(qǐng)參見(jiàn)通過(guò)云助手上傳本地文件到ECS實(shí)例。
前提條件
ECS實(shí)例狀態(tài)為運(yùn)行中。
獲取ECS實(shí)例的對(duì)外公網(wǎng)IP地址。
說(shuō)明若您的ECS實(shí)例未實(shí)現(xiàn)公網(wǎng)通信,可綁定彈性公網(wǎng)IP。具體操作,請(qǐng)參見(jiàn)綁定EIP。
ECS實(shí)例所在安全組入方向已開(kāi)放22端口。具體操作,請(qǐng)參見(jiàn)添加安全組規(guī)則。
通過(guò)sftp工具傳輸文件
sftp
命令會(huì)基于ssh
協(xié)議對(duì)所傳輸?shù)奈募M(jìn)行加密處理,支持SSH
的完整安全性和身份驗(yàn)證功能。不僅具備FTP協(xié)議的所有功能,還提供了更高的安全性和可靠性。
參數(shù)說(shuō)明
參數(shù) | 說(shuō)明 |
-b | 設(shè)置批處理文件 |
-B | 設(shè)置緩沖區(qū)大小 |
-C | 使用壓縮模式 |
-F | 設(shè)置ssh配置文件 |
-o | 設(shè)置ssh選項(xiàng) |
-P | 設(shè)置連接端口號(hào) |
-R | 設(shè)置最大請(qǐng)求數(shù) |
-4 | 強(qiáng)制使用IPv4地址 |
-6 | 強(qiáng)制使用IPv6地址 |
使用示例
登錄遠(yuǎn)程FTP服務(wù)器
運(yùn)行如下命令,以登錄遠(yuǎn)程FTP服務(wù)器,并按照提示輸入遠(yuǎn)程FTP服務(wù)用戶的密碼。
sftp <user-name>@<remote-ftp-server-ip>
回顯信息示例如下,說(shuō)明連接遠(yuǎn)程FTP服務(wù)器成功。
Connected to xxx.xxx.xxx.xxx. sftp>
運(yùn)行如下命令,以列出遠(yuǎn)程FTP服務(wù)器上的文件。
ls
說(shuō)明如果
ls
不指定路徑,則顯示當(dāng)前路徑下的文件列表,如果指定路徑,則顯示指定路徑下的文件列表。上傳或下載文件/文件夾。
運(yùn)行以下命令,將
local_folder_or_file
復(fù)制到遠(yuǎn)程服務(wù)器。put -r local_folder_or_file remote_folder_or_file
運(yùn)行以下命令,將遠(yuǎn)程服務(wù)器的
remote_folder_or_file
復(fù)制到本地。get -r remote_folder_or_file local_folder_or_file
斷開(kāi)遠(yuǎn)程ftp服務(wù)器
您可以輸入
quit
或者bye
斷開(kāi)遠(yuǎn)程ftp服務(wù)器連接。
通過(guò)scp工具傳輸文件
大部分Linux和Windows已經(jīng)內(nèi)置了scp工具,您無(wú)需進(jìn)行安裝即可使用,SCP命令使用SSH來(lái)傳輸數(shù)據(jù),并使用與SSH相同的認(rèn)證模式,在需要進(jìn)行驗(yàn)證時(shí)會(huì)要求您輸入密碼或口令。
特點(diǎn)說(shuō)明
scp的特點(diǎn)如下:
scp
類似于rcp
,它能夠保留特定文件系統(tǒng)上的文件屬性,并支持遞歸拷貝子目錄及其文件屬性。scp
具備更高的文件傳輸保密性。然而,其代價(jià)在于在傳輸過(guò)程中需要輸入密碼,并且涉及SSH的一些配置問(wèn)題,這些因素均對(duì)其使用便利性產(chǎn)生影響。對(duì)于有特定需求的用戶而言,SCP是一種較為合適的傳輸工具。
參數(shù)說(shuō)明
scp常用參數(shù)說(shuō)明如下表所示:
參數(shù) | 說(shuō)明 |
-v | 詳細(xì)方式顯示輸出,可以用來(lái)調(diào)試連接、驗(yàn)證或者配置問(wèn)題 |
-B | 使用批處理模式(傳輸過(guò)程中不詢問(wèn)傳輸口令或短語(yǔ)) |
-C | 在復(fù)制過(guò)程中壓縮文件或目錄 |
-P | 如果默認(rèn)SSH端口不是22,則使用此選項(xiàng)指定SSH端口 |
-r | 遞歸復(fù)制整個(gè)目錄 |
-4 | 強(qiáng)制 |
-6 | 強(qiáng)制 |
使用示例
SCP的常用示例如下:
從本地復(fù)制目錄到遠(yuǎn)程服務(wù)器
執(zhí)行以下命令,將
local_file
復(fù)制至remote_ip
的remote_folder
中。scp -r local_file remote_username@remote_ip:remote_folder
從遠(yuǎn)程服務(wù)器復(fù)制目錄到本地
執(zhí)行以下命令,將
remote_ip
中的remote_folder
復(fù)制至local_file
中。scp -r remote_username@remote_ip:remote_folder local_file
通過(guò)rsync工具傳輸文件
rsync是一個(gè)用于Linux/Unix系統(tǒng)的文件同步和傳輸工具。它是RCP的替代工具,rsync可通過(guò)rsh或ssh協(xié)議進(jìn)行操作,也可以以守護(hù)進(jìn)程模式運(yùn)行。
安裝說(shuō)明
您需要在本地和遠(yuǎn)程服務(wù)器上安裝rsync,rsync的安裝方式如下:
Alibaba Cloud Linux 3/2
sudo yum install -y rsync
CentOS 8/7/6
sudo yum install -y rsync
Ubuntu/Debian
sudo apt install -y rsync
參數(shù)說(shuō)明
rsync常用參數(shù)說(shuō)明如下表所示:
參數(shù) | 說(shuō)明 |
-v | 詳細(xì)模式輸出 |
-a | 歸檔模式,表示以遞歸的方式傳輸文件,并保持所有文件屬性不變,相當(dāng)于使用了組合參數(shù)-rlptgoD |
-r | 對(duì)子目錄以遞歸模式處理 |
-l | 保留軟鏈接 |
-p | 保持文件權(quán)限 |
-t | 保持文件時(shí)間信息 |
-g | 保持文件屬組信息 |
-o | 保持文件屬主信息 |
-D | 保持設(shè)備文件信息 |
-H | 保留硬鏈結(jié) |
-S | 對(duì)稀疏文件進(jìn)行特殊處理以節(jié)省DST的空間 |
-z | 對(duì)備份的文件在傳輸時(shí)進(jìn)行壓縮處理 |
使用示例
按照數(shù)據(jù)傳輸方式的不同,rsync可以分為本地傳輸方式,遠(yuǎn)程傳輸方式以及守護(hù)程序傳輸方式,以下介紹不同的數(shù)據(jù)傳輸場(chǎng)景下的使用示例。
本地傳輸方式
執(zhí)行以下命令,將本機(jī)的
local_folder_src
目錄復(fù)制至local_folder_dest
中。rsync -avSHP local_folder_src local_folder_dest
遠(yuǎn)程傳輸方式
執(zhí)行以下命令,將
local_folder_or_file_src
復(fù)制至remote_ip
的remote_folder_dest
中。rsync -avP local_folder_or_file_src remote_username@remote_ip:remote_folder_dest
執(zhí)行以下命令,將
remote_ip
中的remote_folder_src
復(fù)制至local_folder_dest
中。rsync -avP remote_username@remote_ip:remote_folder_src local_folder_dest
執(zhí)行以下命令,以顯示遠(yuǎn)程主機(jī)
remote_ip
中remote_folder
目錄下的文件列表。rsync --list-only remote_username@remote_ip:remote_folder
守護(hù)程序傳輸模式
說(shuō)明如需使用守護(hù)程序傳輸模式,您必須事先準(zhǔn)備一臺(tái)已運(yùn)行
rsync
守護(hù)程序的遠(yuǎn)程主機(jī)。在守護(hù)進(jìn)程模式下,
rsync
服務(wù)器會(huì)開(kāi)放873端口,以等待客戶端連接。連接時(shí),rsync
服務(wù)器會(huì)對(duì)口令進(jìn)行驗(yàn)證,若驗(yàn)證通過(guò),則可以進(jìn)行文件傳輸。在首次連接完成后,系統(tǒng)會(huì)進(jìn)行全量文件傳輸,此后的連接僅需進(jìn)行增量備份。有關(guān)
rsync
守護(hù)程序傳輸模式配置文件的更多信息,請(qǐng)參見(jiàn)配置文件說(shuō)明。
拷貝遠(yuǎn)程rsync服務(wù)器(以
daemon
形式運(yùn)行rsync
)的remote_folder_src
目錄到本地機(jī)local_folder_dest
中。rsync -av remote_username@remote_ip::module_name/remote_folder_src local_folder_dest
拷貝本地機(jī)器
local_folder_src
目錄文件到遠(yuǎn)程rsync服務(wù)器(以daemon形式運(yùn)行rsync)的remote_folder_dest
目錄中。rsync -av local_folder_src remote_username@remote_ip::module_name/remote_folder_dest
上述示例中使用到的變量說(shuō)明如下:
local_folder_src:本地源目錄
local_folder_dest:本地目標(biāo)目錄
local_folder_or_file_src:本地源目錄或文件
remote_username:遠(yuǎn)程用戶名
remote_ip:遠(yuǎn)程IP
remote_folder:遠(yuǎn)程目錄
remote_folder_src:遠(yuǎn)程源目錄
remote_folder_dest:遠(yuǎn)程目標(biāo)目錄
配置文件說(shuō)明
rsync配置文件說(shuō)明如下:
# 指定模塊傳輸文件的守護(hù)進(jìn)程UID
uid = rsync
# 指定當(dāng)模塊傳輸文件的守護(hù)進(jìn)程GID
gid = rsync
# 端口號(hào)
port = 873
fake super = yes
# 使用chroot到文件系統(tǒng)中的目錄中
use chroot = no
# 最大并發(fā)連接數(shù)
max connections = 200
timeout = 600
# 忽略某些IO錯(cuò)誤信息
ignore errors = true
list = false
log file = /var/log/rsyncd.log
[backup]
comment = welcome to rsync backup!
# 用來(lái)指定要備份的目錄
path = /backup
# 設(shè)置false,客戶端可以上傳文件,true是只讀
read only = false
# 設(shè)置false,客戶端可以下載,true不能下載
write only = no
# 連接用戶名,和linux系統(tǒng)用戶名無(wú)關(guān)系
auth users = rsync_backup
# 驗(yàn)證密碼文件
secrets file = /etc/rsync.passwd
通過(guò)netcat工具傳輸文件
netcat
在網(wǎng)絡(luò)工具中被譽(yù)為“瑞士軍刀”,其功能強(qiáng)大,除了作為網(wǎng)絡(luò)工具外,其傳輸文件的能力也不容忽視。它能夠建立TCP連接、發(fā)送UDP數(shù)據(jù)包、對(duì)TCP和UDP端口進(jìn)行掃描,并處理IPv4和IPv6數(shù)據(jù)包。
安裝說(shuō)明
執(zhí)行如下命令,以安裝netcat
。
Alibaba Cloud Linux 3/2
sudo yum install -y netcat
CentOS 8/7/6
sudo yum install -y netcat
Ubuntu/Debian
sudo apt install -y netcat
參數(shù)說(shuō)明
netcat
常用參數(shù)說(shuō)明如下表所示:
參數(shù) | 說(shuō)明 |
-C | 一直不斷連接 |
-g <網(wǎng)關(guān)> | 設(shè)置路由器躍程通信網(wǎng)關(guān),最多可設(shè)置8個(gè) |
-G <指向器數(shù)目> | 設(shè)置來(lái)源路由指向器,其數(shù)值為4的倍數(shù) |
-i <延遲秒數(shù)> | 設(shè)置時(shí)間間隔,以便傳送信息及掃描通信端口 |
-l | 使用監(jiān)聽(tīng)模式,管控傳入的資料 |
-o <輸出文件> | 指定文件名稱,將傳輸?shù)臄?shù)據(jù)按指定文件名以16進(jìn)制進(jìn)行保存 |
-p <通信端口> | 設(shè)置本地主機(jī)使用的通信端口 |
-r | 指定本地與遠(yuǎn)端主機(jī)的通信端口 |
-s <IP地址> | 本地源地址 |
-u | 使用UDP傳輸協(xié)議 |
-v | 顯示指令執(zhí)行過(guò)程 |
-w <超時(shí)秒數(shù)> | 設(shè)置等待連線的時(shí)間 |
-z | 使用0輸入/輸出模式,只在掃描通信端口時(shí)使用 |
-n | 直接使用IP地址,而不通過(guò)域名服務(wù)器 |
使用示例
nc
是netcat
的簡(jiǎn)寫,nc
的常用示例如下:
以下示例使用端口號(hào)為9999
,所以ECS實(shí)例所在安全組入方向需要開(kāi)放9999
端口。您可以結(jié)合您的情況修改為您想使用的端口,具體操作,請(qǐng)參見(jiàn)添加安全組規(guī)則。
使用nc命令復(fù)制文件或目錄。以下示例演示如何將目錄或文件從
xxx.xxx.xxx.100
復(fù)制到xxx.xxx.xxx.200
。在
xxx.xxx.xxx.100
上:安裝pv
工具。說(shuō)明當(dāng)使用nc命令傳輸大文件或者目錄時(shí),傳輸時(shí)間可能會(huì)較長(zhǎng),可以通過(guò)pv工具實(shí)時(shí)獲取傳輸進(jìn)度。
Alibaba Cloud Linux 3/2
sudo yum install -y pv
CentOS 8/7/6
sudo yum install -y pv
Ubuntu/Debian
sudo apt install -y pv
在
xxx.xxx.xxx.200
上執(zhí)行命令。nc -l 9999 | tar zxf -
在
xxx.xxx.xxx.100
上執(zhí)行命令。tar czf - dir_or_file_need_to_be_transferred | pv | nc -N xxx.xxx.xxx.200 9999
說(shuō)明示例使用的傳輸目錄為
dir_or_file_need_to_be_transferred
,請(qǐng)根據(jù)您的實(shí)際使用情況進(jìn)行替換。結(jié)合tar命令傳輸目錄或文件時(shí),有關(guān)文件讀寫權(quán)限需結(jié)合實(shí)際情況進(jìn)行確認(rèn)。
相關(guān)文檔
上傳文件至ECS后,您可以對(duì)重要文件進(jìn)行備份。具體操作,請(qǐng)參見(jiàn)創(chuàng)建快照。
如需上傳本地文件至Windows ECS實(shí)例,請(qǐng)參見(jiàn)上傳或下載文件(Windows)。
您還可以通過(guò)對(duì)象存儲(chǔ)OSS來(lái)存儲(chǔ)和管理文件。詳細(xì)操作,請(qǐng)參見(jiàn)OSS快速入門。
如果您使用Workbench遠(yuǎn)程連接至Linux實(shí)例,您可以通過(guò)Workbench可視化地管理Linux文件,包括文件的上傳和下載等操作。具體操作,請(qǐng)參見(jiàn)使用Workbench上傳或下載文件。