1. 程式人生 > >Linux下幾種檔案傳輸命令

Linux下幾種檔案傳輸命令

 

Linux下幾種檔案傳輸命令 sz rz sftp scp  

 

最近在部署系統時接觸了一些檔案傳輸命令,分別做一下簡單記錄:

1.sftp

Secure Ftp 是一個基於SSH安全協議的檔案傳輸管理工具。由於它是基於SSH的,會在傳輸過程中對使用者的密碼、資料等敏感資訊進行加密,因此可以有效的防止使用者資訊在傳輸的過程中被竊取,比FTP有更高的安全性。在功能方面與FTP很類似,不僅可以傳輸檔案資料,而且可以進行遠端的檔案管理(如建立,刪除,檢視檔案列表等操作)。Sftp與ftp雖然只有一字之差,但基於的傳輸協議卻是不同的。因此不能用sftp client去連線ftp server 也不能用 ftp client 去連線 sftp server。

建立連線:sftp [email protected]

從本地上傳檔案:put localpath

下載檔案:get remotepath

與遠端相對應的本地操作,只需要在命令前加上”l” 即可,方便好記。

例如:lcd lpwd lmkdir

2.scp

SCP :secure copy (remote file copy program) 也是一個基於SSH安全協議的檔案傳輸命令。與sftp不同的是,它只提供主機間的檔案傳輸功能,沒有檔案管理的功能。

複製local_file 到遠端目錄remote_folder下

scp local_file

[email protected]:remote_folder

複製local_folder 到遠端remote_folder(需要加引數 -r 遞迴)

scp –r local_folder [email protected]:remote_folder

以上命令反過來寫就是遠端複製到本地

3.sz/rz

sz/rz 是基於ZModem傳輸協議的命令。對傳輸的資料會進行核查,並且有很好的傳輸效能。使用起來更是非常方便,但前提是window端需要有能夠支援ZModem的telnet或者SSH客戶端,例如secureCRT。

首先需要在secureCRT中可以配置相關的本地下載和上傳目錄,然後用rz、sz命令即可方便的傳輸檔案資料。

下載資料到本地下載目錄:sz filename1 filename2 …

上傳資料到遠端:執行rz –be 命令,客戶端會彈出上傳視窗,使用者自行選擇(可多選)要上傳的檔案即可。

相關資料:

2.XMODEM、YMODEM、ZMODEM : http://web.cecs.pdx.edu/~rootd/catdoc/guide/TheGuide_226.html

3.Wiki SCP :http://en.wikipedia.org/wiki/Secure_copy

 

 

 

------------

 

 

Linux 上的常用檔案傳輸方式介紹與比較

 

簡介: Linux 環境中有多種方式可以實現不同主機之間的檔案傳輸或同步。在不同的場景下,選擇合適的方法進行傳輸會大大提高工作效率以及質量。本文通過總結 linux 環境下常用的幾種檔案傳輸方法,結合具體使用例項以及對這些方法優缺點的分析對比,希望能夠對需要在 Linux 或 unix 環境下進行檔案傳輸或同步的朋友提供一些幫助。

ftp

ftp 命令使用檔案傳輸協議(File Transfer Protocol, FTP)在本地主機和遠端主機之間或者在兩個遠端主機之間進行檔案傳輸。

FTP 協議允許資料在不同檔案系統的主機之間傳輸。儘管這個協議在傳輸資料上提供了高適應性,但是它並沒有嘗試去保留一個特定檔案系統上的檔案屬性(例如一個檔案的保護模式或者修改次數)。而且 FTP 協議很少對一個檔案系統的整體結構作假定,也不提供這樣的功能,比如遞迴的拷貝子目錄。在使用 ftp 命令時,需要注意 FTP 協議的這些特性。當需要保留檔案屬性或者需要遞迴的拷貝子目錄時,可以使用 rcp/scp 等命令。

基本語法

ftp 命令的一般格式如下:

$ ftp 主機名 /IP

其中“主機名 /IP ”是所要連線的遠端機的主機名或 IP 地址。在命令列中,主機名屬於可選項,如果指定主機名,ftp 將試圖與遠端機的 ftp 服務程式進行連線;如果沒有指定主機名,ftp 將給出提示符,等待使用者輸入命令:

$ ftp 
 ftp >

 

此時在 ftp> 提示符後面輸入 open 子命令加主機名或 IP 地址,將試圖連線指定的主機。不管使用哪一種方法,如果連線成功,需要在遠端機上登入。使用者如果在遠端機上有帳號,就可以通過 ftp 使用這一帳號並需要提供口令。在遠端機上的使用者帳號的讀寫許可權決定該使用者在遠端機上能下載什麼檔案和能將上載檔案放到哪個目錄中。在遠端站點上登入成功後,在“ ftp> ”提示符下可以自由使用 ftp 提供的各種子命令,最常用的子命令如下表所示。


表 1. ftp 子命令

命令 描述
ls 列出遠端機的當前目錄
cd 在遠端機上改變工作目錄
lcd 在本地機上改變工作目錄
ascii 設定檔案傳輸方式為 ASCII 模式
binary 設定檔案傳輸方式為二進位制模式
close 終止當前的 ftp 會話
get (mget) 從遠端機傳送指定檔案到本地機
put (mput) 從本地機傳送指定檔案到遠端機
open 連線遠端 ftp 站點
quit 斷開與遠端機的連線並退出 ftp
? 顯示本地幫助資訊
! 轉到 Shell 中
prompt 1 關閉互動模式

 

使用例項:

利用編寫 ftp 指令碼可以自動完成檔案傳輸任務。具體方法是使用 ftp 命令的 -in 選項,並重定向 ftp 命令的輸入。現在我們來編寫一個利用 ftp 登入到遠端伺服器,並以 bin 的檔案格式,在 /home 目錄下,下載 file1.log 以及 file2.sh 至本機 /opt/ibm/,並從本地 /opt 目錄上傳檔案 file3.jave 至遠端伺服器 /home 的自動化指令碼。

ftp -ni <<+ 
	 open $IP 
	 user $USERNAME $PASSWD 
	 bin 
	 cd /home 
	 lcd /opt/ibm 
	 mget file1.log file2.sh 
	 lcd /opt 
	 mput file3.jave 
	 ls 
	 bye

 

 

rcp

rcp 意為“ remote file copy ”(遠端檔案拷貝)。該命令用於計算機之間進行檔案拷貝。其有兩種格式。第一種格式用於檔案到檔案的拷貝;第二種格式用於把檔案或目錄拷貝到另一個目錄中。

基本語法

rcp [-px] [-k realm] file1 file2 
 rcp [-px] [-r] [-k realm] file directory

 

每個檔案或目錄引數既可以是遠端檔名也可以是本地檔名。遠端檔名具有如下形式:[email protected]:path,其中 rname 為遠端使用者名稱,rhost 為遠端計算機名,path 為該檔案的路徑。下表說明了 rcp 命令各個引數的含義。


表 2. rcp 命令的命令列引數

選項 描述
-r 遞迴地將源目錄中的所有內容拷貝到目的目錄中。若使用該選項,目的須為一個目錄。
-p 試圖保留原始檔的修改時間和模式,忽略 umask 。
-k 請求 rcp 獲得在指定區域內的遠端主機的 Kerberos 許可,而不是獲得由 krb_relmofhost(3)確定的遠端主機區域內的遠端主機的 Kerberos 許可。
-x 為傳送的所有資料進行 DES 加密。這會影響響應時間和 CPU 利用率,但是可以提高安全性。

 

如果在檔名中指定的路徑不是完整的路徑名,則該路徑將被解釋為相對遠端機上同名使用者的主目錄。若沒有給出遠端使用者名稱,則使用當前使用者名稱。如果遠端機上的路徑包含特殊 shell 字元,需要使用反斜線(\)、雙引號(”)或單引號(’)將其括起來,使所有的 shell 元字元都能被遠端地解釋。需要說明的是,rcp 不提示輸入口令,它通過 rsh(remote shell)命令來執行拷貝。

使用例項:

  • 將本地檔案複製到遠端登入目錄中

    rcp <source> <remoteDir>

  • 將多個本地檔案複製到遠端登入目錄的子目錄中

    rcp <source1> <source2> <source3> <subdirectory in remote system>

  • 將多個檔案從多個遠端源複製到使用不同使用者名稱的遠端目標中

    rcp <host1.user1:source1> <host2.user2:source2> <dest.destuser:directory>

 

scp

scp 命令在網路上的主機之間拷貝檔案,它是安全拷貝(secure copy)的縮寫。 scp 命令使用 ssh 來傳輸資料,並使用與 ssh 相同的認證模式,提供同樣的安全保障。 scp 命令的用法和 rcp 命令非常類似,這裡就不做過多介紹了。一般推薦使用 scp 命令,因為它比 rcp 更安全。

我們可以通過配置 ssh,使得在兩臺機器間拷貝檔案時不需要每次都輸入使用者名稱和密碼。

基本語法

scp [-1246BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file] 
         [-l limit] [-o ssh_option] [-P port] [-S program] 
         [[[email protected]]host1:]file1 [...] [[[email protected]]host2:]file2

 

使用 scp 命令,需要輸入密碼,如果不想每次都輸入,可參考下面的方法。

首先生成金鑰對

$ ssh-keygen -t rsa 
 Generating public/private rsa key pair. 
 Enter file in which to save the key (/home/user/.ssh/id_rsa): 
 Created directory '/home/user/.ssh'. 
 Enter passphrase (empty for no passphrase): 
 Enter same passphrase again: 
 Your identification has been saved in /home/user/.ssh/id_rsa. 
 Your public key has been saved in /home/user/.ssh/id_rsa.pub. 
 The key fingerprint is: 
 10:66:da:38:85:8a:8c:bd:db:9c:6e:eb:ee:bd:7d:15 [email protected]

 

在這裡,我們指定了生成 rsa 型別的金鑰。在提示金鑰的儲存路徑和密碼時,可以直接回車使用預設路徑和空密碼。這樣,生成的公共金鑰儲存在 $HOME/.ssh/id_rsa.pub,私有金鑰儲存在 $HOME/.ssh/id_rsa 。然後把這個金鑰對中的公共金鑰的內容複製到要訪問的機器上的 $HOME/.ssh/authorized_keys 檔案中。這樣,下次再訪問那臺機器時,就不用輸入密碼了。

使用例項:

  • Copy 本地檔案 /etc/eva.log, 到遠端機器 sysB, 使用者 user 的家目錄下

    scp /etc/eva.log [email protected]:/home/user

  • copy 遠端機器 sysB 上的檔案 /home/uesr/eva.log, 到本地的 /etc 目錄下 , 並保持檔案屬性不變

    scp -p [email protected]:/home/uesr/eva.log /etc

  • copy sysB 上的目錄 /home/user, 到本地 /home/user/tmp, <new dir,/home/user/tmp/user>

    scp -r [email protected]:/home/user /home/user/tmp

 

wget

wget 是一個經由 GPL 許可的可從網路上自動獲取檔案的自由軟體包。它是一個非互動式的命令列工具。支援 HTTP,HTTPS 和 FTP 協議,支援代理伺服器以及斷點續傳功能。 wget 可實現遞迴下載,即可跟蹤 HTML 頁面上的連結依次下載來建立遠端伺服器的本地版本,完全重建原始站點的目錄結構,實現遠端網站的映象。在遞迴下載時,wget 將頁面中的超級連結轉換成指向本地檔案,方便離線瀏覽。由於非互動特性,wget 支援後臺執行,使用者在退出系統後,仍可繼續執行。功能強大,設定方便簡單。

基本語法

wget [options] [URL-list]

 

wget 有很多不同的引數以用於遠端站點資訊的獲取,常用引數如下,更多引數請參照 wget 幫助手冊 http://www.gnu.org/software/wget/manual/wget.html


表 3. wget 工具常用引數

選項 描述
-r 遞迴下載伺服器上所有的目錄和檔案。由 -l 選項來指定遞迴深度。
-b 後臺下載
-m 製作站點映象
-c 指定斷點續傳功能。該功能要求伺服器支援斷點續傳。
-I 指定下載目錄列表,可實現批量下載
-A/-R 指定接受/拒絕下載列表,實現選擇性地下載
--proxy=on/off 指定是否利用代理伺服器進行下載
-t, --tries=NUMBER 最大嘗試連結次數 (0 表示無限制,預設為 20 次 )
-nc, --no-clobber 不覆蓋已存在的檔案
-N, --timestamping 只下載比本地新的檔案
-nd --no-directories 不進行目錄結構建立
-x, --force-directories 強制建立目錄結構
-nH, --no-host-directories 不繼承主機目錄結構
-P, --directory-prefix=PREFIX 設定目錄字首

 

使用例項:

  • 遞迴下載 http://www.ibm.com.cn 站點的資訊。下載所有顯示完整網頁所以需要的檔案,如圖片等。在下載不進行上層目錄搜尋並將絕對連結轉換為相對連結。
    wget -r -p -np -k http://www.ibm.com.cn
  • 將在本地硬碟建立 http://www.ibm.com.cn 的映象,映象檔案存入當前目錄下一個名為 www.ibm.com.cn 的子目錄中(也可以使用 -nH 引數指定不建立該子目錄,而直接在當前目錄下建立映象的目錄結構),遞迴深度為 4,重試次數為無窮(若連接出現問題,wget 將永遠重試下去,直至任務完成)
    wget -m -l4 -t0 http://www.ibm.com.c
  • 使用代理進行下載,並實現斷點續傳。代理可以在環境變數 PROXY 或 wgetrc 檔案中設定。 -c 選項要求服務支援斷點續傳。
    wget -Y on -c http://www.ibm.com.cn

 

curl

另一個可以用來進行檔案傳輸的工具是 curl,它是對 libcurl 庫的一個命令列工具包裝。 libcurl 庫中提供了相應功能的 API,可以在程式中呼叫。對於 libcurl 庫的使用方法介紹超出了本文的討論範圍。 curl 使用 URL 的語法來傳輸檔案,它支援 FTP, FTPS, HTTP, HTTPS, TFTP, SFTP, TELNET 等多種協議。 curl 功能強大,它提供了包括代理支援,使用者認證,FTP 上載,HTTP post,SSL 連線,檔案續傳等許多特性。

基本語法

curl [options … ] <url>

 

其中下載引數大約有 80 多個,curl 的各個功能完全依靠這些引數來完成。下面舉例說明 curl 的一些基本用法。

使用例項:

  • 獲取 GNU 的主頁

    curl http://www.gnu.org

  • 獲取 GNU 的 FTP 伺服器上根目錄下的 README 檔案

    curl ftp://ftp.gnu.org/README

  • 從一個字典中獲取 curl 的定義

    curl dict://dict.org/m:curl

  • 如果需要指定使用者名稱和密碼的話,可以在 url 中指定,或者使用 -u 引數

    curl ftp://name:[email protected]:port/full/path/to/file

    curl -u name:passwd ftp://machine.domain:port/full/path/to/file

  • curl 會將從指定 url 處獲取的內容列印到標準輸出上。如果需要儲存在本地檔案中,可以使用 -o,或使用 -O 引數指定使用遠端主機上的檔名(如果 url 中沒有給出檔名的部分,則此操作將會失敗)

    curl – o gnu.html http://www.gnu.org

    curl – O http://www.gnu.org/index.html

  • 使用 -x 選項來使用代理進行連線

    curl -x my-proxy:port ftp://ftp.somesite.com/README

  • 通過使用 curl 的 -T 選項來進行上載

    curl -T - ftp://ftp.upload.com/upfile

  • 此命令從標準輸入讀取資料,並上載至遠端 FTP 伺服器上的 upfile 檔案中。也可以指定上載一個本地檔案

    curl -T localfile -a ftp://ftp.upload.com/upfile

    其中 -a 引數表示以新增方式將 localfile 中的內容附加到 upfile 的末尾。

總的來說,curl 適合用來進行自動的檔案傳輸或操作序列,它是一個很好的模擬使用者在網頁瀏覽器上的行為的工具。尤其當需要在程式中呼叫時,libcurl 是個很好的選擇。

 

rsync

rsync 是一款高效的遠端資料備份和鏡象工具,可快速地同步多臺主機間的檔案,其具有如下特性:

  • 支援連結、所有者、組資訊以及許可權資訊的拷貝;
  • 通過遠端 shell(ssh, rsh)進行傳輸;
  • 無須特殊許可權即可安裝使用;
  • 流水線式檔案傳輸模式,檔案傳輸效率高;
  • 支援匿名操作;

需要提及的是 rsync 以其優越的效能優勢區別於其它幾種 Linux 檔案傳輸方法,其同步檔案的速度相當快,這主要歸功於 rsync 所使用的傳輸演算法。簡而言之 rsync 演算法能在相當短的時間內計算出需要備份的資料,只對原始檔與目標檔案的不同之處進行傳輸,從而降低網路中傳輸的資料量,以此達到快速備份映象的目的。下面通過一典型應用場景來描述 rsync 演算法的基本原理:主機 A 與主機 B 均有對同一檔案的拷貝,使用者對主機 A 上的拷貝進行更新,主機 B 通過 rsync 演算法對更新後的檔案進行同步。以下是該演算法的實現步驟:

  1. 主機 B 將原始拷貝劃分成大小為 N 的不重合的若干塊(檔案末尾部分分塊大小可能不足 N),並對這些資料塊進行兩種不同方式的校驗:32 位的滾動弱校驗、128 位的 MD4 強校驗。弱校驗較之強校驗計算速度快。
  2. 主機 B 將每個資料塊的弱校驗、強校驗結果傳送給主機 A 。
  3. 主機 A 對更新後的檔案拷貝中的每個長度為 N 的資料塊進行弱校驗並與從 B 接收到的弱校驗值進行匹配,若相同再進行強校驗匹配。由於弱校驗的滾動特性可以快速地篩選出需要進行同步的資料塊。該演算法的運算量主要集中在主機 A 上。
  4. 通過上述計算,主機 A 將檔案的不同部分發送給 B,B 接收到兩個拷貝之間的不同之處,從而同步得到更新後的檔案。

通過如上方式,rsync 避免了對相同資料的傳輸,減少了網路頻寬的浪費。在時間上整個過程中需一個往返,從某種程度上也保證了 rsync 的優越效能。

使用者可從官方網站 http://rsync.samba.org/ 上下載安裝 rsync 的最新版本。使用時需將 rsync 分別安裝於服務端和客戶端,服務端和客戶端使用同一個 rsync 軟體包來實現遠端映象和定期同步更新。需要說明的是一個 rsync 服務端可同時備份多個客戶端的資料;多個服務端備份一個客戶端的資料。 rsync 預設埠為 873,伺服器在該埠接收客戶的匿名或者認證方式的備份請求。

rsync 服務端在使用之前需要進行必要的配置,其配置檔案為 /etc/rsyncd.conf,進行認證、訪問、日誌記錄等控制。配置檔案包括全域性引數、模組引數的設定。 rsyncd.conf 檔案中 [module] 之前的所有引數為全域性引數,也可以在全域性引數部分定義模組引數,在這種情況下該引數的值就是所有模組的預設值。全域性引數設定程式使用的埠號,指定訊息檔案、日誌檔案 pid 檔案以及傳送日誌訊息的級別。模組引數主要定義服務端哪個目錄需要被同步。使用者可根據不同的需要指定多個模組,每個模組對應需要備份的一個目錄樹,即若有 N 個需要備份的目錄樹,則需要 N 個模組與之對應。模組中可以定義許多引數,常見引數如下。


表 4. rsyncd.conf 配置檔案常見模組引數列表

選項 描述
Comment 模組資訊描述,該描述連同模組名在客戶連線得到模組列表時顯示給客戶。預設沒有描述定義。
Path 指定供備份的目錄路徑,必須指定該引數。
max connections 指定最大併發連線數以保護伺服器,超過限制的連線請求將被告知隨後再試。預設值為 0,即沒有限制。
log file 指定日誌檔案
read only 設定是否允許客戶上載檔案。若為 true 任何上載請求均會失敗,若為 false 且客戶端擁有伺服器目錄讀寫許可權則可以上載。預設值為 true 。
write only 設定是否允許客戶下載檔案。若為 true 任何下載請求均會失敗,預設值為 false 。
List 設定當客戶請求可以使用的模組列表時,是否列出該模組。若為 false,則建立隱藏的模組。預設值為 true 。
fake super 允許檔案享有所有許可權,而無需後臺服務以 root 許可權進行操作。
Filter 設定過濾列表以決定哪些檔案可由客戶端訪問。
hosts allow 指定允許客戶連線的 IP 地址。可以為單個 IP 地址或整個網段。多個 IP 或網段需要以空格隔開。預設是允許所有主機連線。
dont compress 指定不進行壓縮處理即可傳輸的檔案,預設值是 *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz
pre-xfer exec, post-xfer exec 設定可在檔案傳輸前/後執行的命令。若在檔案傳輸前執行的命令失敗,則取消本次傳輸操作。

 

基本語法

  • 通過遠端 shell 方式:
    • rsync [OPTION] [[email protected]]HOST:SRC DEST
    • 使用遠端 shell(如 ssh, rsh)實現將遠端機器的內容拷貝到本地機器。 SRC 地址路徑中以單個冒號 ":" 進行分隔。
    • rsync [OPTION] SRC [[email protected]]HOST:DEST
    • 使用遠端 shell(如 rsh、ssh)實現本地機器的內容拷貝到遠端機器。 DEST 地址路徑中以單個冒號 ":" 進行分隔。
  • 通過 rsync daemon 方式:
    • rsync [OPTION] [[email protected]]HOST::SRC DEST 或
    • rsync [OPTION] rsync://[[email protected]]HOST[:PORT]/SRC [DEST]
    • 從遠端 rsync 伺服器中拷貝檔案到本地機。 SRC 地址路徑中以雙冒號 "::" 進行分隔。
    • rsync [OPTION] SRC [[email protected]]HOST::DEST 或
    • rsync [OPTION] SRC rsync://[[email protected]]HOST[:PORT]/DEST
    • 從本地機器拷貝檔案到遠端 rsync 伺服器中。 DEST 地址路徑中以雙冒號 "::" 進行分隔。

如果 rsync 命令中只指定 SRC 引數而不指定 DEST 引數,則意為顯示原始檔列表而非進行同步拷貝。 rsync 有許多功能選項,常用的選項如下:


表 5. rsync 常用引數

選項 描述
-a, --archive 歸檔模式,保持所有檔案屬性,等同於 -rlptgoD
-v, --verbose 詳細資訊輸出
-r, --recursive 對子目錄進行遞迴處理
-R, --relative 使用相對路徑資訊
-b, --backup 建立備份
-z, --compress 對備份的檔案在傳輸時進行壓縮處理
--delete 用於同步目錄,從 DEST 中將 SRC 不存在的檔案進行刪除
--progress 顯示備份過程

 

使用例項:

  • 檢視服務端檔案及列表
    • # rsync 9.186.110.53::

      檢視服務端可用的模組列表以及註釋資訊

    • # rsync [email protected]::www/

      檢視服務端 www 模組中的目錄及檔案列表(使用 rsyncd 使用者認證方式)

    • # rsync [email protected]:/var/www/html/

      檢視服務端 /var/www/html 目錄中的內容(使用服務端的系統使用者進行驗證,如 ibmuser)

  • 保持客戶端與服務端的資料同步
    • # rsync -avz [email protected]::www/ /backup1/

      使用後臺服務方式將服務端 www 模組下的內容備份到本地 /backup1 目錄中,備份時保留原有許可權、屬性、屬主及符號連線等,並使用壓縮方式加快資料傳輸。

    • # rsync – avz [email protected]:/var/www/html /backup2/

      使用 ssh 方式將遠端的 /var/www/html 目錄備份到本地 /backup2/ 目錄下

    • # rsync -avz --delete [email protected]::www/ /backup3/

      將遠端 www 模組備份到本地 /backup3/ 目錄中,同時進行同步目錄,刪除本地目錄中多餘的檔案。

當服務端的資料出現問題時,需要通過客戶端的資料對服務端進行恢復,只要客戶端有服務端的寫入許可權,即可通過調換 rsync 命令的 SRC、DEST 引數進行恢復。

 

結尾與總結

綜上所述,各種檔案傳輸方式的特徵表現各有千秋,我們從以下幾個方面綜合對比,更深入地瞭解它們各自的特性。

  • 傳輸效能

wget 通過支援後臺執行及斷點續傳提高檔案傳輸效率 ; rsync 則以其高效的傳輸及壓縮演算法達到快傳輸的目的。

  • 配置難度

rcp 只需進行簡單的配置,建立 .rhost 檔案以及設定 /etc/hosts 檔案中主機名與 IP 地址列表; wget 設定設定方便簡單,只需在客戶端指定引數執行命令即可; rsync 在使用前需要對服務端 /etc/rsyncd.conf 進行引數設定,配置內容相對複雜。

  • 安全效能

ftp、rcp 不保證傳輸的安全性,scp、rsync 則均可基於 ssh 認證進行傳輸,提供了較強的安全保障。 wget 也可通過指定安全協議做到安全傳輸。

通過上述的對比不難發現,每種檔案傳輸方法基於其自身的特點與優勢均有其典型的適用場景:

  • ftp 作為最常用的入門式的檔案傳輸方法,使用簡單,易於理解,並且可以實現指令碼自動化;
  • rcp 相對於 ftp 可以保留檔案屬性並可遞迴的拷貝子目錄;
  • scp 利用 ssh 傳輸資料,並使用與 ssh 相同的認證模式,相對於 rcp 提供更強的安全保障;
  • wget,實現遞迴下載,可跟蹤 HTML 頁面上的連結依次下載來建立遠端伺服器的本地版本,完全重建原始站點的目錄結構,適合實現遠端網站的映象;
  • curl 則適合用來進行自動的檔案傳輸或操作序列,是一個很好的模擬使用者在網頁瀏覽器上的行為的工具;
  • rsync 更適用於大資料量的每日同步,拷貝的速度很快,相對 wget 來說速度快且安全高效。