ftpftp 命令使用文件傳輸協(xié)議(File Transfer Protocol, FTP)在本地主機(jī)和遠(yuǎn)程主機(jī)之間或者在兩個(gè)遠(yuǎn)程主機(jī)之間進(jìn)行文件傳輸。FTP 協(xié)議允許數(shù)據(jù)在不同文件系統(tǒng)的主機(jī)之間傳輸。盡管這個(gè)協(xié)議在傳輸數(shù)據(jù)上提供了高適應(yīng)性,但是它并沒有嘗試去保留一個(gè)特定文件系統(tǒng)上的文件屬性(例如一個(gè)文 件的保護(hù)模式或者修改次數(shù))。而且 FTP 協(xié)議很少對(duì)一個(gè)文件系統(tǒng)的整體結(jié)構(gòu)作假定,也不提供這樣的功能,比如遞歸的拷貝子目錄。在使用 ftp 命令時(shí),需要注意 FTP 協(xié)議的這些特性。當(dāng)需要保留文件屬性或者需要遞歸的拷貝子目錄時(shí),可以使用 rcp/scp 等命令。
基本語法ftp 命令的一般格式如下:$ ftp 主機(jī)名 /IP其中“主機(jī)名 /IP ”是所要連接的遠(yuǎn)程機(jī)的主機(jī)名或 IP 地址。在命令行中,主機(jī)名屬于可選項(xiàng),如果指定主機(jī)名,ftp 將試圖與遠(yuǎn)程機(jī)的 ftp 服務(wù)程序進(jìn)行連接;如果沒有指定主機(jī)名,ftp 將給出提示符,等待用戶輸入命令:
$ ftp ftp >
此時(shí)在 ftp> 提示符后面輸入 open 子命令加主機(jī)名或 IP 地址,將試圖連接指定的主機(jī)。不管使用哪一種方法,如果連接成功,需要在遠(yuǎn)程機(jī)上登錄。用戶如果在遠(yuǎn)程機(jī)上有賬號(hào),就可以通過 ftp 使用這一賬號(hào)并需要提供口令。在遠(yuǎn)程機(jī)上的用戶賬號(hào)的讀寫權(quán)限決定該用戶在遠(yuǎn)程機(jī)上能下載什么文件和能將上載文件放到哪個(gè)目錄中。在遠(yuǎn)程站點(diǎn)上登錄成功 后,在“ ftp> ”提示符下可以自由使用 ftp 提供的各種子命令,最常用的子命令如下表所示。
表 1. ftp 子命令 | 命令 | 描述 ls 列出遠(yuǎn)程機(jī)的當(dāng)前目錄 cd 在遠(yuǎn)程機(jī)上改變工作目錄 lcd 在本地機(jī)上改變工作目錄 ascii 設(shè)置文件傳輸方式為 ASCII 模式 binary 設(shè)置文件傳輸方式為二進(jìn)制模式 close 終止當(dāng)前的 ftp 會(huì)話 get (mget) 從遠(yuǎn)程機(jī)傳送指定文件到本地機(jī) put (mput) 從本地機(jī)傳送指定文件到遠(yuǎn)程機(jī) open 連接遠(yuǎn)程 ftp 站點(diǎn) quit 斷開與遠(yuǎn)程機(jī)的連接并退出 ftp 顯示本地幫助信息 ! 轉(zhuǎn)到 Shell 中 prompt 1 關(guān)閉交互模式 |
使用實(shí)例:利用編寫 ftp 腳本可以自動(dòng)完成文件傳輸任務(wù)。具體方法是使用 ftp 命令的 -in 選項(xiàng),并重定向 ftp 命令的輸入?,F(xiàn)在我們來編寫一個(gè)利用 ftp 登錄到遠(yuǎn)程服務(wù)器,并以 bin 的文件格式,在 /home 目錄下,下載 file1.log 以及 file2.sh 至本機(jī) /opt/ibm/,并從本地 /opt 目錄上傳文件 file3.jave 至遠(yuǎn)程服務(wù)器 /home 的自動(dòng)化腳本。
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
rcprcp 意為“ remote file copy ”(遠(yuǎn)程文件拷貝)。該命令用于計(jì)算機(jī)之間進(jìn)行文件拷貝。其有兩種格式。第一種格式用于文件到文件的拷貝;第二種格式用于把文件或目錄拷貝到另一個(gè)目錄中。
基本語法rcp [-px] [-k realm] file1 file2 rcp [-px] [-r] [-k realm] file directory
每個(gè)文件或目錄參數(shù)既可以是遠(yuǎn)程文件名也可以是本地文件名。遠(yuǎn)程文件名具有如下形式:rname@rhost:path,其中 rname 為遠(yuǎn)程用戶名,rhost 為遠(yuǎn)程計(jì)算機(jī)名,path 為該文件的路徑。下表說明了 rcp 命令各個(gè)參數(shù)的含義。
表 2. rcp 命令的命令行參數(shù) 選項(xiàng) 描述 -r 遞歸地將源目錄中的所有內(nèi)容拷貝到目的目錄中。若使用該選項(xiàng),目的須為一個(gè)目錄。 -p 試圖保留源文件的修改時(shí)間和模式,忽略 umask 。 -k 請(qǐng)求 rcp 獲得在指定區(qū)域內(nèi)的遠(yuǎn)程主機(jī)的 Kerberos 許可,而不是獲得由 krb_relmofhost(3)確定的遠(yuǎn)程主機(jī)區(qū)域內(nèi)的遠(yuǎn)程主機(jī)的 Kerberos 許可。 -x 為傳送的所有數(shù)據(jù)進(jìn)行 DES 加密。這會(huì)影響響應(yīng)時(shí)間和 CPU 利用率,但是可以提高安全性。 如果在文件名中指定的路徑不是完整的路徑名,則該路徑將被解釋為相對(duì)遠(yuǎn)程機(jī)上同名用戶的主目錄。若沒有給出遠(yuǎn)程用戶名,則使用當(dāng)前用戶名。如 果遠(yuǎn)程機(jī)上的路徑包含特殊 shell 字符,需要使用反斜線(\)、雙引號(hào)(”)或單引號(hào)(’)將其括起來,使所有的 shell 元字符都能被遠(yuǎn)程地解釋。需要說明的是,rcp 不提示輸入口令,它通過 rsh(remote shell)命令來執(zhí)行拷貝。
使用實(shí)例: - 將本地文件復(fù)制到遠(yuǎn)程登錄目錄中 rcp <source> <remoteDir>
- 將多個(gè)本地文件復(fù)制到遠(yuǎn)程登錄目錄的子目錄中 rcp <source1> <source2> <source3> <subdirectory in remote system>
- 將多個(gè)文件從多個(gè)遠(yuǎn)程源復(fù)制到使用不同用戶名的遠(yuǎn)程目標(biāo)中 rcp <host1.user1:source1> <host2.user2:source2> <dest.destuser:directory>
回頁首scpscp 命令在網(wǎng)絡(luò)上的主機(jī)之間拷貝文件,它是安全拷貝(secure copy)的縮寫。 scp 命令使用 ssh 來傳輸數(shù)據(jù),并使用與 ssh 相同的認(rèn)證模式,提供同樣的安全保障。 scp 命令的用法和 rcp 命令非常類似,這里就不做過多介紹了。一般推薦使用 scp 命令,因?yàn)樗?rcp 更安全。我們可以通過配置 ssh,使得在兩臺(tái)機(jī)器間拷貝文件時(shí)不需要每次都輸入用戶名和密碼。基本語法
scp [-1246BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file] [-l limit] [-o ssh_option] [-P port] [-S program] [[user@]host1:]file1 [...] [[user@]host2:]file2
使用 scp 命令,需要輸入密碼,如果不想每次都輸入,可參考下面的方法。首先生成密鑰對(duì)
$ 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 user@somehost
在這里,我們指定了生成 rsa 類型的密鑰。在提示密鑰的保存路徑和密碼時(shí),可以直接回車使用默認(rèn)路徑和空密碼。這樣,生成的公共密鑰保存在 $HOME/.ssh/id_rsa.pub,私有密鑰保存在 $HOME/.ssh/id_rsa 。然后把這個(gè)密鑰對(duì)中的公共密鑰的內(nèi)容復(fù)制到要訪問的機(jī)器上的 $HOME/.ssh/authorized_keys 文件中。這樣,下次再訪問那臺(tái)機(jī)器時(shí),就不用輸入密碼了。
使用實(shí)例: - Copy 本地文件 /etc/eva.log, 到遠(yuǎn)程機(jī)器 sysB, 用戶 user 的家目錄下 scp /etc/eva.log user@sysB:/home/user
- copy 遠(yuǎn)程機(jī)器 sysB 上的文件 /home/uesr/eva.log, 到本地的 /etc 目錄下 , 并保持文件屬性不變 scp -p user@sysB:/home/uesr/eva.log /etc
- copy sysB 上的目錄 /home/user, 到本地 /home/user/tmp, <new dir,/home/user/tmp/user> scp -r user@sysB:/home/user /home/user/tmp
回頁首wgetwget 是一個(gè)經(jīng)由 GPL 許可的可從網(wǎng)絡(luò)上自動(dòng)獲取文件的自由軟件包。它是一個(gè)非交互式的命令行工具。支持 HTTP,HTTPS 和 FTP 協(xié)議,支持代理服務(wù)器以及斷點(diǎn)續(xù)傳功能。 wget 可實(shí)現(xiàn)遞歸下載,即可跟蹤 HTML 頁面上的鏈接依次下載來創(chuàng)建遠(yuǎn)程服務(wù)器的本地版本,完全重建原始站點(diǎn)的目錄結(jié)構(gòu),實(shí)現(xiàn)遠(yuǎn)程網(wǎng)站的鏡像。在遞歸下載時(shí),wget 將頁面中的超級(jí)鏈接轉(zhuǎn)換成指向本地文件,方便離線瀏覽。由于非交互特性,wget 支持后臺(tái)運(yùn)行,用戶在退出系統(tǒng)后,仍可繼續(xù)運(yùn)行。功能強(qiáng)大,設(shè)置方便簡單。基本語法
wget [options] [URL-list]
wget 有很多不同的參數(shù)以用于遠(yuǎn)程站點(diǎn)信息的獲取,常用參數(shù)如下,更多參數(shù)請(qǐng)參照 wget 幫助手冊(cè) http://www./software/wget/manual/wget.html
表 3. wget 工具常用參數(shù) - 選項(xiàng)
- 描述
- -r
- 遞歸下載服務(wù)器上所有的目錄和文件。由 -l 選項(xiàng)來指定遞歸深度。
- -b
- 后臺(tái)下載
- -m
- 制作站點(diǎn)鏡像
- -c
- 指定斷點(diǎn)續(xù)傳功能。該功能要求服務(wù)器支持?jǐn)帱c(diǎn)續(xù)傳。
- -I
- 指定下載目錄列表,可實(shí)現(xiàn)批量下載
- -A/-R
- 指定接受/拒絕下載列表,實(shí)現(xiàn)選擇性地下載
- --proxy=on/off
- 指定是否利用代理服務(wù)器進(jìn)行下載
- -t, --tries=NUMBER
- 最大嘗試鏈接次數(shù) (0 表示無限制,默認(rèn)為 20 次 )
- -nc, --no-clobber
- 不覆蓋已存在的文件
- -N, --timestamping
- 只下載比本地新的文件
- -nd --no-directories
- 不進(jìn)行目錄結(jié)構(gòu)創(chuàng)建
- -x, --force-directories
- 強(qiáng)制創(chuàng)建目錄結(jié)構(gòu)
- -nH, --no-host-directories
- 不繼承主機(jī)目錄結(jié)構(gòu)
- -P, --directory-prefix=PREFIX
- 設(shè)置目錄前綴
使用實(shí)例: - 遞歸下載 http://www. 站點(diǎn)的信息。下載所有顯示完整網(wǎng)頁所以需要的文件,如圖片等。在下載不進(jìn)行上層目錄搜索并將絕對(duì)鏈接轉(zhuǎn)換為相對(duì)鏈接。 wget -r -p -np -k http://www.
- 將在本地硬盤建立 http://www. 的鏡像,鏡像文件存入當(dāng)前目錄下一個(gè)名為 www. 的子目錄中(也可以使用 -nH 參數(shù)指定不建立該子目錄,而直接在當(dāng)前目錄下建立鏡像的目錄結(jié)構(gòu)),遞歸深度為 4,重試次數(shù)為無窮(若連接出現(xiàn)問題,wget 將永遠(yuǎn)重試下去,直至任務(wù)完成) wget -m -l4 -t0 http://www.ibm.com.c
- 使用代理進(jìn)行下載,并實(shí)現(xiàn)斷點(diǎn)續(xù)傳。代理可以在環(huán)境變量 PROXY 或 wgetrc 文件中設(shè)定。 -c 選項(xiàng)要求服務(wù)支持?jǐn)帱c(diǎn)續(xù)傳。 wget -Y on -c http://www.
回頁首curl另一個(gè)可以用來進(jìn)行文件傳輸?shù)墓ぞ呤?curl,它是對(duì) libcurl 庫的一個(gè)命令行工具包裝。 libcurl 庫中提供了相應(yīng)功能的 API,可以在程序中調(diào)用。對(duì)于 libcurl 庫的使用方法介紹超出了本文的討論范圍。 curl 使用 URL 的語法來傳輸文件,它支持 FTP, FTPS, HTTP, HTTPS, TFTP, SFTP, TELNET 等多種協(xié)議。 curl 功能強(qiáng)大,它提供了包括代理支持,用戶認(rèn)證,F(xiàn)TP 上載,HTTP post,SSL 連接,文件續(xù)傳等許多特性。基本語法
curl [options … ] <url>
其中下載參數(shù)大約有 80 多個(gè),curl 的各個(gè)功能完全依靠這些參數(shù)來完成。下面舉例說明 curl 的一些基本用法。
使用實(shí)例: - 獲取 GNU 的主頁 curl http://www.
- 獲取 GNU 的 FTP 服務(wù)器上根目錄下的 README 文件 curl ftp://ftp./README
- 從一個(gè)字典中獲取 curl 的定義 curl dict://dict.org/m:curl
- 如果需要指定用戶名和密碼的話,可以在 url 中指定,或者使用 -u 參數(shù) curl ftp://name:passwd@machine.domain:port/full/path/to/file curl -u name:passwd ftp://machine.domain:port/full/path/to/file
- curl 會(huì)將從指定 url 處獲取的內(nèi)容打印到標(biāo)準(zhǔn)輸出上。如果需要保存在本地文件中,可以使用 -o,或使用 -O 參數(shù)指定使用遠(yuǎn)程主機(jī)上的文件名(如果 url 中沒有給出文件名的部分,則此操作將會(huì)失敗) curl – o gnu.html http://www. curl – O http://www./index.html
- 使用 -x 選項(xiàng)來使用代理進(jìn)行連接 curl -x my-proxy:port ftp://ftp.somesite.com/README
- 通過使用 curl 的 -T 選項(xiàng)來進(jìn)行上載 curl -T - ftp://ftp.upload.com/upfile
- 此命令從標(biāo)準(zhǔn)輸入讀取數(shù)據(jù),并上載至遠(yuǎn)程 FTP 服務(wù)器上的 upfile 文件中。也可以指定上載一個(gè)本地文件 curl -T localfile -a ftp://ftp.upload.com/upfile 其中 -a 參數(shù)表示以添加方式將 localfile 中的內(nèi)容附加到 upfile 的末尾。
總的來說,curl 適合用來進(jìn)行自動(dòng)的文件傳輸或操作序列,它是一個(gè)很好的模擬用戶在網(wǎng)頁瀏覽器上的行為的工具。尤其當(dāng)需要在程序中調(diào)用時(shí),libcurl 是個(gè)很好的選擇。
回頁首rsyncrsync 是一款高效的遠(yuǎn)程數(shù)據(jù)備份和鏡象工具,可快速地同步多臺(tái)主機(jī)間的文件,其具有如下特性:
- 支持鏈接、所有者、組信息以及權(quán)限信息的拷貝;
- 通過遠(yuǎn)程 shell(ssh, rsh)進(jìn)行傳輸;
- 無須特殊權(quán)限即可安裝使用;
- 流水線式文件傳輸模式,文件傳輸效率高;
- 支持匿名操作;
需要提及的是 rsync 以其優(yōu)越的性能優(yōu)勢區(qū)別于其它幾種 Linux 文件傳輸方法,其同步文件的速度相當(dāng)快,這主要?dú)w功于 rsync 所使用的傳輸算法。簡而言之 rsync 算法能在相當(dāng)短的時(shí)間內(nèi)計(jì)算出需要備份的數(shù)據(jù),只對(duì)源文件與目標(biāo)文件的不同之處進(jìn)行傳輸,從而降低網(wǎng)絡(luò)中傳輸?shù)臄?shù)據(jù)量,以此達(dá)到快速備份鏡像的目的。下面 通過一典型應(yīng)用場景來描述 rsync 算法的基本原理:主機(jī) A 與主機(jī) B 均有對(duì)同一文件的拷貝,用戶對(duì)主機(jī) A 上的拷貝進(jìn)行更新,主機(jī) B 通過 rsync 算法對(duì)更新后的文件進(jìn)行同步。以下是該算法的實(shí)現(xiàn)步驟:
- 主機(jī) B 將原始拷貝劃分成大小為 N 的不重合的若干塊(文件末尾部分分塊大小可能不足 N),并對(duì)這些數(shù)據(jù)塊進(jìn)行兩種不同方式的校驗(yàn):32 位的滾動(dòng)弱校驗(yàn)、128 位的 MD4 強(qiáng)校驗(yàn)。弱校驗(yàn)較之強(qiáng)校驗(yàn)計(jì)算速度快。
- 主機(jī) B 將每個(gè)數(shù)據(jù)塊的弱校驗(yàn)、強(qiáng)校驗(yàn)結(jié)果發(fā)送給主機(jī) A 。
- 主機(jī) A 對(duì)更新后的文件拷貝中的每個(gè)長度為 N 的數(shù)據(jù)塊進(jìn)行弱校驗(yàn)并與從 B 接收到的弱校驗(yàn)值進(jìn)行匹配,若相同再進(jìn)行強(qiáng)校驗(yàn)匹配。由于弱校驗(yàn)的滾動(dòng)特性可以快速地篩選出需要進(jìn)行同步的數(shù)據(jù)塊。該算法的運(yùn)算量主要集中在主機(jī) A 上。
- 通過上述計(jì)算,主機(jī) A 將文件的不同部分發(fā)送給 B,B 接收到兩個(gè)拷貝之間的不同之處,從而同步得到更新后的文件。
通過如上方式,rsync 避免了對(duì)相同數(shù)據(jù)的傳輸,減少了網(wǎng)絡(luò)帶寬的浪費(fèi)。在時(shí)間上整個(gè)過程中需一個(gè)往返,從某種程度上也保證了 rsync 的優(yōu)越性能。用戶可從官方網(wǎng)站 http://rsync./ 上下載安裝 rsync 的最新版本。使用時(shí)需將 rsync 分別安裝于服務(wù)端和客戶端,服務(wù)端和客戶端使用同一個(gè) rsync 軟件包來實(shí)現(xiàn)遠(yuǎn)程鏡像和定期同步更新。需要說明的是一個(gè) rsync 服務(wù)端可同時(shí)備份多個(gè)客戶端的數(shù)據(jù);多個(gè)服務(wù)端備份一個(gè)客戶端的數(shù)據(jù)。 rsync 默認(rèn)端口為 873,服務(wù)器在該端口接收客戶的匿名或者認(rèn)證方式的備份請(qǐng)求。rsync 服務(wù)端在使用之前需要進(jìn)行必要的配置,其配置文件為 /etc/rsyncd.conf,進(jìn)行認(rèn)證、訪問、日志記錄等控制。配置文件包括全局參數(shù)、模塊參數(shù)的設(shè)置。 rsyncd.conf 文件中 [module] 之前的所有參數(shù)為全局參數(shù),也可以在全局參數(shù)部分定義模塊參數(shù),在這種情況下該參數(shù)的值就是所有模塊的默認(rèn)值。全局參數(shù)設(shè)置程序使用的端口號(hào),指定消息文 件、日志文件 pid 文件以及發(fā)送日志消息的級(jí)別。模塊參數(shù)主要定義服務(wù)端哪個(gè)目錄需要被同步。用戶可根據(jù)不同的需要指定多個(gè)模塊,每個(gè)模塊對(duì)應(yīng)需要備份的一個(gè)目錄樹,即若有 N 個(gè)需要備份的目錄樹,則需要 N 個(gè)模塊與之對(duì)應(yīng)。模塊中可以定義許多參數(shù),常見參數(shù)如下。
表 4. rsyncd.conf 配置文件常見模塊參數(shù)列表 - 選項(xiàng)
- 描述
- Comment
- 模塊信息描述,該描述連同模塊名在客戶連接得到模塊列表時(shí)顯示給客戶。默認(rèn)沒有描述定義。
- Path
- 指定供備份的目錄路徑,必須指定該參數(shù)。
- max connections
- 指定最大并發(fā)連接數(shù)以保護(hù)服務(wù)器,超過限制的連接請(qǐng)求將被告知隨后再試。默認(rèn)值為 0,即沒有限制。
- log file
- 指定日志文件
- read only
- 設(shè)定是否允許客戶上載文件。若為 true 任何上載請(qǐng)求均會(huì)失敗,若為 false 且客戶端擁有服務(wù)器目錄讀寫權(quán)限則可以上載。默認(rèn)值為 true 。
- write only
- 設(shè)定是否允許客戶下載文件。若為 true 任何下載請(qǐng)求均會(huì)失敗,默認(rèn)值為 false 。
- List
- 設(shè)定當(dāng)客戶請(qǐng)求可以使用的模塊列表時(shí),是否列出該模塊。若為 false,則創(chuàng)建隱藏的模塊。默認(rèn)值為 true 。
- fake super
- 允許文件享有所有權(quán)限,而無需后臺(tái)服務(wù)以 root 權(quán)限進(jìn)行操作。
- Filter
- 設(shè)置過濾列表以決定哪些文件可由客戶端訪問。
- hosts allow
- 指定允許客戶連接的 IP 地址??梢詾閱蝹€(gè) IP 地址或整個(gè)網(wǎng)段。多個(gè) IP 或網(wǎng)段需要以空格隔開。默認(rèn)是允許所有主機(jī)連接。
- dont compress
- 指定不進(jìn)行壓縮處理即可傳輸?shù)奈募?,默認(rèn)值是 *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz
- pre-xfer exec, post-xfer exec
- 設(shè)置可在文件傳輸前/后執(zhí)行的命令。若在文件傳輸前執(zhí)行的命令失敗,則取消本次傳輸操作。
基本語法 - rsync [OPTION] [USER@]HOST:SRC DEST
- 使用遠(yuǎn)程 shell(如 ssh, rsh)實(shí)現(xiàn)將遠(yuǎn)程機(jī)器的內(nèi)容拷貝到本地機(jī)器。 SRC 地址路徑中以單個(gè)冒號(hào) ":" 進(jìn)行分隔。
- rsync [OPTION] SRC [USER@]HOST:DEST
- 使用遠(yuǎn)程 shell(如 rsh、ssh)實(shí)現(xiàn)本地機(jī)器的內(nèi)容拷貝到遠(yuǎn)程機(jī)器。 DEST 地址路徑中以單個(gè)冒號(hào) ":" 進(jìn)行分隔。
- rsync [OPTION] [USER@]HOST::SRC DEST 或
- rsync [OPTION] rsync://[USER@]HOST[:PORT]/SRC [DEST]
- 從遠(yuǎn)程 rsync 服務(wù)器中拷貝文件到本地機(jī)。 SRC 地址路徑中以雙冒號(hào) "::" 進(jìn)行分隔。
- rsync [OPTION] SRC [USER@]HOST::DEST 或
- rsync [OPTION] SRC rsync://[USER@]HOST[:PORT]/DEST
- 從本地機(jī)器拷貝文件到遠(yuǎn)程 rsync 服務(wù)器中。 DEST 地址路徑中以雙冒號(hào) "::" 進(jìn)行分隔。
如果 rsync 命令中只指定 SRC 參數(shù)而不指定 DEST 參數(shù),則意為顯示源文件列表而非進(jìn)行同步拷貝。 rsync 有許多功能選項(xiàng),常用的選項(xiàng)如下:
表 5. rsync 常用參數(shù) - 選項(xiàng)<-------------------->描述
- -a, --archive<-------------------->歸檔模式,保持所有文件屬性,等同于 -rlptgoD
- -v, --verbose<-------------------->詳細(xì)信息輸出
- -r, --recursive<-------------------->對(duì)子目錄進(jìn)行遞歸處理
- -R, --relative<-------------------->使用相對(duì)路徑信息
- -b, --backup<-------------------->創(chuàng)建備份
- -z, --compress<-------------------->對(duì)備份的文件在傳輸時(shí)進(jìn)行壓縮處理
- --delete<-------------------->用于同步目錄,從 DEST 中將 SRC 不存在的文件進(jìn)行刪除
- --progress<-------------------->顯示備份過程
使用實(shí)例: - 查看服務(wù)端文件及列表
- # rsync 9.186.110.53:: 查看服務(wù)端可用的模塊列表以及注釋信息
- # rsync ibmuser@9.186.110.53::www/ 查看服務(wù)端 www 模塊中的目錄及文件列表(使用 rsyncd 用戶認(rèn)證方式)
- # rsync ibmuser@9.186.110.53:/var/www/html/ 查看服務(wù)端 /var/www/html 目錄中的內(nèi)容(使用服務(wù)端的系統(tǒng)用戶進(jìn)行驗(yàn)證,如 ibmuser)
- 保持客戶端與服務(wù)端的數(shù)據(jù)同步
- # rsync -avz ibmuser@9.186.110.53::www/ /backup1/ 使用后臺(tái)服務(wù)方式將服務(wù)端 www 模塊下的內(nèi)容備份到本地 /backup1 目錄中,備份時(shí)保留原有權(quán)限、屬性、屬主及符號(hào)連接等,并使用壓縮方式加快數(shù)據(jù)傳輸。
- # rsync – avz ibmuser@9.186.110.53:/var/www/html /backup2/ 使用 ssh 方式將遠(yuǎn)程的 /var/www/html 目錄備份到本地 /backup2/ 目錄下
- # rsync -avz --delete ibmuser@9.186.110.53::www/ /backup3/ 將遠(yuǎn)程 www 模塊備份到本地 /backup3/ 目錄中,同時(shí)進(jìn)行同步目錄,刪除本地目錄中多余的文件。
當(dāng)服務(wù)端的數(shù)據(jù)出現(xiàn)問題時(shí),需要通過客戶端的數(shù)據(jù)對(duì)服務(wù)端進(jìn)行恢復(fù),只要客戶端有服務(wù)端的寫入權(quán)限,即可通過調(diào)換 rsync 命令的 SRC、DEST 參數(shù)進(jìn)行恢復(fù)。
回頁首結(jié)尾與總結(jié)綜上所述,各種文件傳輸方式的特征表現(xiàn)各有千秋,我們從以下幾個(gè)方面綜合對(duì)比,更深入地了解它們各自的特性。
wget 通過支持后臺(tái)執(zhí)行及斷點(diǎn)續(xù)傳提高文件傳輸效率 ; rsync 則以其高效的傳輸及壓縮算法達(dá)到快傳輸?shù)哪康摹?ul>
配置難度rcp 只需進(jìn)行簡單的配置,創(chuàng)建 .rhost 文件以及設(shè)置 /etc/hosts 文件中主機(jī)名與 IP 地址列表; wget 設(shè)置設(shè)置方便簡單,只需在客戶端指定參數(shù)執(zhí)行命令即可; rsync 在使用前需要對(duì)服務(wù)端 /etc/rsyncd.conf 進(jìn)行參數(shù)設(shè)定,配置內(nèi)容相對(duì)復(fù)雜。
ftp、rcp 不保證傳輸?shù)陌踩?,scp、rsync 則均可基于 ssh 認(rèn)證進(jìn)行傳輸,提供了較強(qiáng)的安全保障。 wget 也可通過指定安全協(xié)議做到安全傳輸。通過上述的對(duì)比不難發(fā)現(xiàn),每種文件傳輸方法基于其自身的特點(diǎn)與優(yōu)勢均有其典型的適用場景:
- ftp 作為最常用的入門式的文件傳輸方法,使用簡單,易于理解,并且可以實(shí)現(xiàn)腳本自動(dòng)化;
- rcp 相對(duì)于 ftp 可以保留文件屬性并可遞歸的拷貝子目錄;
- scp 利用 ssh 傳輸數(shù)據(jù),并使用與 ssh 相同的認(rèn)證模式,相對(duì)于 rcp 提供更強(qiáng)的安全保障;
- wget,實(shí)現(xiàn)遞歸下載,可跟蹤 HTML 頁面上的鏈接依次下載來創(chuàng)建遠(yuǎn)程服務(wù)器的本地版本,完全重建原始站點(diǎn)的目錄結(jié)構(gòu),適合實(shí)現(xiàn)遠(yuǎn)程網(wǎng)站的鏡像;
- curl 則適合用來進(jìn)行自動(dòng)的文件傳輸或操作序列,是一個(gè)很好的模擬用戶在網(wǎng)頁瀏覽器上的行為的工具;
- rsync 更適用于大數(shù)據(jù)量的每日同步,拷貝的速度很快,相對(duì) wget 來說速度快且安全高效。
讀者可在不同的場合根據(jù)實(shí)際需要,選擇適合的文件傳輸方法。