在兩台裝置之間傳輸檔案是常見的營運需求,常用的安全檔案傳輸工具包括sftp
、scp
、rsync
以及netcat
。本文將介紹如何使用這四種工具進行檔案傳輸。
適用情境
sftp
和scp
工具支援的作業系統包括Linux、macOS和Windows。rsync
和netcat
支援的作業系統包括Linux和macOS。傳輸檔案大小限制:檔案大小不受限制。
重要若您的本地主機為Windows系統,除了選擇
sftp
和scp
命令列工具之外,也可以使用圖形介面的WinSCP
工具進行檔案傳輸,有關操作,請參見通過WinSCP上傳或下載檔案(本地主機為Windows)。以下情況,還可以通過Workbench或雲助手上傳下載檔案(不限制本地主控件類型):
(單個檔案不大於500 MB)通過Workbench工具上傳或下載。具體操作,請參見使用Workbench上傳或下載檔案。
(單個檔案不大於24 KB)通過雲助手上傳檔案至ECS。具體操作,請參見通過雲助手上傳本地檔案到ECS執行個體。
前提條件
通過sftp工具傳輸檔案
sftp
命令會基於ssh
協議對所傳輸的檔案進行加密處理,支援SSH
的完整安全性和身分識別驗證功能。不僅具備FTP協議的所有功能,還提供了更高的安全性和可靠性。
參數說明
參數 | 說明 |
-b | 設定批次檔 |
-B | 設定緩衝區大小 |
-C | 使用壓縮模式 |
-F | 設定ssh設定檔 |
-o | 設定ssh選項 |
-P | 設定串連連接埠號碼 |
-R | 設定最大請求數 |
-4 | 強制使用IPv4地址 |
-6 | 強制使用IPv6地址 |
使用樣本
登入遠程FTP伺服器
運行如下命令,以登入遠程FTP伺服器,並按照提示輸入遠程FTP服務使用者的密碼。
sftp <user-name>@<remote-ftp-server-ip>
回顯資訊樣本如下,說明串連遠程FTP伺服器成功。
Connected to xxx.xxx.xxx.xxx. sftp>
運行如下命令,以列出遠程FTP伺服器上的檔案。
ls
說明如果
ls
不指定路徑,則顯示當前路徑下的檔案清單,如果指定路徑,則顯示指定路徑下的檔案清單。上傳或下載檔案/檔案夾。
運行以下命令,將
local_folder_or_file
複製到遠程伺服器。put -r local_folder_or_file remote_folder_or_file
運行以下命令,將遠程伺服器的
remote_folder_or_file
複製到本地。get -r remote_folder_or_file local_folder_or_file
斷開遠程ftp伺服器
您可以輸入
quit
或者bye
斷開遠程ftp伺服器串連。
通過scp工具傳輸檔案
大部分Linux和Windows已經內建了scp工具,您無需進行安裝即可使用,SCP命令使用SSH來傳輸資料,並使用與SSH相同的認證模式,在需要進行驗證時會要求您輸入密碼或口令。
特點說明
scp的特點如下:
scp
類似於rcp
,它能夠保留特定檔案系統上的檔案屬性,並支援遞迴拷貝子目錄及其檔案屬性。scp
具備更高的檔案傳輸保密性。然而,其代價在於在傳輸過程中需要輸入密碼,並且涉及SSH的一些配置問題,這些因素均對其使用便利性產生影響。對於有特定需求的使用者而言,SCP是一種較為合適的傳輸工具。
參數說明
scp常用參數說明如下表所示:
參數 | 說明 |
-v | 詳細方式顯示輸出,可以用來調試串連、驗證或者配置問題 |
-B | 使用批處理模式(傳輸過程中不詢問傳輸口令或短語) |
-C | 在複製過程中壓縮檔或目錄 |
-P | 如果預設SSH連接埠不是22,則使用此選項指定SSH連接埠 |
-r | 遞迴複製整個目錄 |
-4 | 強制 |
-6 | 強制 |
使用樣本
SCP的常用樣本如下:
從本地複製目錄到遠程伺服器
執行以下命令,將
local_file
複製至remote_ip
的remote_folder
中。scp -r local_file remote_username@remote_ip:remote_folder
從遠程伺服器複製目錄到本地
執行以下命令,將
remote_ip
中的remote_folder
複製至local_file
中。scp -r remote_username@remote_ip:remote_folder local_file
通過rsync工具傳輸檔案
rsync是一個用於Linux/Unix系統的檔案同步和傳輸工具。它是RCP的替代工具,rsync可通過rsh或ssh協議進行操作,也可以以守護進程模式運行。
安裝說明
您需要在本地和遠程伺服器上安裝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
參數說明
rsync常用參數說明如下表所示:
參數 | 說明 |
-v | 詳細模式輸出 |
-a | 歸檔模式,表示以遞迴的方式傳輸檔案,並保持所有檔案屬性不變,相當於使用了組合參數-rlptgoD |
-r | 對子目錄以遞迴模式處理 |
-l | 保留軟連結 |
-p | 保持檔案許可權 |
-t | 保持檔案時間資訊 |
-g | 保持檔案屬組資訊 |
-o | 保持檔案屬主資訊 |
-D | 保持裝置檔案資訊 |
-H | 保留硬鏈結 |
-S | 對疏鬆檔案進行特殊處理以節省DST的空間 |
-z | 對備份的檔案在傳輸時進行壓縮處理 |
使用樣本
按照資料轉送方式的不同,rsync可以分為本地傳輸方式,遠程傳輸方式以及精靈傳輸方式,以下介紹不同的資料轉送情境下的使用樣本。
本地傳輸方式
執行以下命令,將原生
local_folder_src
目錄複寫至local_folder_dest
中。rsync -avSHP local_folder_src local_folder_dest
遠程傳輸方式
執行以下命令,將
local_folder_or_file_src
複製至remote_ip
的remote_folder_dest
中。rsync -avP local_folder_or_file_src remote_username@remote_ip:remote_folder_dest
執行以下命令,將
remote_ip
中的remote_folder_src
複製至local_folder_dest
中。rsync -avP remote_username@remote_ip:remote_folder_src local_folder_dest
執行以下命令,以顯示遠程主機
remote_ip
中remote_folder
目錄下的檔案清單。rsync --list-only remote_username@remote_ip:remote_folder
精靈傳輸模式
說明如需使用精靈傳輸模式,您必須事先準備一台已運行
rsync
精靈的遠程主機。在守護進程模式下,
rsync
伺服器會開放873連接埠,以等待用戶端串連。串連時,rsync
伺服器會對口令進行驗證,若驗證通過,則可以進行檔案傳輸。在首次串連完成後,系統會進行全量檔案傳輸,此後的串連僅需進行增量備份。有關
rsync
精靈傳輸模式設定檔的更多資訊,請參見設定檔說明。
拷貝遠程rsync伺服器(以
daemon
形式運行rsync
)的remote_folder_src
目錄到本地機local_folder_dest
中。rsync -av remote_username@remote_ip::module_name/remote_folder_src local_folder_dest
拷貝本地機器
local_folder_src
目錄檔案到遠程rsync伺服器(以daemon形式運行rsync)的remote_folder_dest
目錄中。rsync -av local_folder_src remote_username@remote_ip::module_name/remote_folder_dest
上述樣本中使用到的變數說明如下:
local_folder_src:本地來源目錄
local_folder_dest:本地目標目錄
local_folder_or_file_src:本地來源目錄或檔案
remote_username:遠端使用者名
remote_ip:遠程IP
remote_folder:遠程目錄
remote_folder_src:遠程來源目錄
remote_folder_dest:遠程目標目錄
設定檔說明
rsync設定檔說明如下:
# 指定模組傳輸檔案的守護進程UID
uid = rsync
# 指定當模組傳輸檔案的守護進程GID
gid = rsync
# 連接埠號碼
port = 873
fake super = yes
# 使用chroot到檔案系統中的目錄中
use chroot = no
# 最大並發串連數
max connections = 200
timeout = 600
# 忽略某些IO錯誤資訊
ignore errors = true
list = false
log file = /var/log/rsyncd.log
[backup]
comment = welcome to rsync backup!
# 用來指定要備份的目錄
path = /backup
# 設定false,用戶端可以上傳檔案,true是唯讀
read only = false
# 設定false,用戶端可以下載,true不能下載
write only = no
# 串連使用者名稱,和linux系統使用者名稱無關係
auth users = rsync_backup
# 驗證密碼檔案
secrets file = /etc/rsync.passwd
通過netcat工具傳輸檔案
netcat
在網路工具中被譽為“瑞士軍刀”,其功能強大,除了作為網路工具外,其傳輸檔案的能力也不容忽視。它能夠建立TCP串連、發送UDP資料包、對TCP和UDP連接埠進行掃描,並處理IPv4和IPv6資料包。
安裝說明
執行如下命令,以安裝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
參數說明
netcat
常用參數說明如下表所示:
參數 | 說明 |
-C | 一直不斷串連 |
-g <網關> | 設定路由器躍程通訊網關,最多可設定8個 |
-G <指向器數目> | 設定來源路由指向器,其數值為4的倍數 |
-i <延遲秒數> | 設定時間間隔,以便傳送資訊及掃描通訊連接埠 |
-l | 使用監聽模式,管控傳入的資料 |
-o <輸出檔案> | 指定檔案名稱,將傳輸的資料按指定檔案名稱以16進位進行儲存 |
-p <通訊連接埠> | 設定本地主機使用的通訊連接埠 |
-r | 指定本地與遠端主機的通訊連接埠 |
-s <IP地址> | 本地源地址 |
-u | 使用UDP傳輸協議 |
-v | 顯示指令執行過程 |
-w <逾時秒數> | 設定等待連線的時間 |
-z | 使用0輸入/輸出模式,只在掃描通訊連接埠時使用 |
-n | 直接使用IP地址,而不通過網域名稱伺服器 |
使用樣本
nc
是netcat
的簡寫,nc
的常用樣本如下:
以下樣本使用連接埠號碼為9999
,所以ECS執行個體所在安全性群組入方向需要開放9999
連接埠。您可以結合您的情況修改為您想使用的連接埠,具體操作,請參見添加安全性群組規則。
使用nc命令複製檔案或目錄。以下樣本示範如何將目錄或檔案從
xxx.xxx.xxx.100
複製到xxx.xxx.xxx.200
。在
xxx.xxx.xxx.100
上:安裝pv
工具。說明當使用nc命令傳輸大檔案或者目錄時,傳輸時間可能會較長,可以通過pv工具即時擷取傳輸進度。
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
上執行命令。nc -l 9999 | tar zxf -
在
xxx.xxx.xxx.100
上執行命令。tar czf - dir_or_file_need_to_be_transferred | pv | nc -N xxx.xxx.xxx.200 9999
說明樣本使用的傳輸目錄為
dir_or_file_need_to_be_transferred
,請根據您的實際使用方式進行替換。結合tar命令傳輸目錄或檔案時,有關檔案讀寫權限需結合實際情況進行確認。
相關文檔
上傳檔案至ECS後,您可以對重要檔案進行備份。具體操作,請參見手動建立單盤快照。
如需上傳本地檔案至Windows ECS執行個體,請參見上傳或下載檔案(Windows)。
您還可以通過Object Storage Service來儲存和管理檔案。詳細操作,請參見OSS快速入門。
如果您使用Workbench遠端連線至Linux執行個體,您可以通過Workbench可視化地管理Linux檔案,包括檔案的上傳和下載等操作。具體操作,請參見使用Workbench上傳或下載檔案。