全部產品
Search
文件中心

Elastic Compute Service:通過sftp/scp/rsync/netcat上傳或下載檔案

更新時間:Dec 18, 2024

在兩台裝置之間傳輸檔案是常見的營運需求,常用的安全檔案傳輸工具包括sftpscprsync以及netcat。本文將介紹如何使用這四種工具進行檔案傳輸。

sftp、scp、rsync、netcat工具特點及使用情境說明

工具

特點及使用情境說明

sftp

使用互動式檔案管理的傳輸方式,傳輸前需先與遠程FTP伺服器建立串連,串連後可以使用ls查看遠程檔案目錄結構等操作。

scp

用於快速傳輸單個檔案或整個目錄。如果事先瞭解遠端檔案目錄結構,可以使用scp工具。

rsync

主要用於檔案同步、備份等情境,並支援增量拷貝。在需要傳輸大檔案或網路環境較差的情況下,可以考慮使用rsync工具。

netcat

是一款功能較為完善的網路工具,不僅支援檔案傳輸,還具備連接埠掃描和連接埠連通性測試等功能。然而,在預設情況下,netcat在傳輸檔案時並不進行加密。因此,如果您的資料轉送涉及公網環境,建議您不要直接使用netcat進行資料轉送。

適用情境

  • sftpscp工具支援的作業系統包括Linux、macOS和Windows。

  • rsyncnetcat支援的作業系統包括Linux和macOS。

  • 傳輸檔案大小限制:檔案大小不受限制。

    重要

前提條件

  • ECS執行個體狀態為運行中

  • 擷取ECS執行個體的對外公網IP地址。

    說明

    若您的ECS執行個體未實現公網通訊,可綁定Elastic IP Address。具體操作,請參見綁定EIP

  • ECS執行個體所在安全性群組入方向已開放22連接埠。具體操作,請參見添加安全性群組規則

通過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

強制scp命令只使用IPv4地址

-6

強制scp命令只使用IPv6地址

使用樣本

SCP的常用樣本如下:

  • 從本地複製目錄到遠程伺服器

    執行以下命令,將local_file複製至remote_ipremote_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_ipremote_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_ipremote_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地址,而不通過網域名稱伺服器

使用樣本

ncnetcat的簡寫,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命令傳輸目錄或檔案時,有關檔案讀寫權限需結合實際情況進行確認。

相關文檔