Linux下不同服务器间数据传输
因?yàn)楣ぷ髟?#xff0c;需要經(jīng)常在不同的服務(wù)器見(jiàn)進(jìn)行文件傳輸,特別是大文件的傳輸,因此對(duì)linux下不同服務(wù)器間數(shù)據(jù)傳輸命令和工具進(jìn)行了研究和總結(jié)。主要是rcp,scp,rsync,ftp,sftp,lftp,wget,curl。
rcp
rcp不是一種安全的的傳輸文件的方式,rcp通過(guò)rsh(rsh見(jiàn)下面)來(lái)執(zhí)行遠(yuǎn)程命令,要使用rcp必須經(jīng)過(guò)一些配置,現(xiàn)在rcp已經(jīng)被scp取代了,常用scp來(lái)進(jìn)行文件傳輸。要使用rcp,需要具備以下條件:
(1)如果系統(tǒng)中有/etc/hosts 文件,應(yīng)確保該文件包含要與之進(jìn)行通信的遠(yuǎn)程主機(jī)信息:internet_address official_name alias。例如:1.186.10.*** blade1.ibm.com.cnblade
(2).rhosts 文件:.rhosts 文件位于遠(yuǎn)程系統(tǒng)的根目錄下,其中包含本地系統(tǒng)的名稱和本地登錄名。例如,遠(yuǎn)程系統(tǒng)的 .rhosts 文件中的項(xiàng)可能是:blade1 root;其中,blade1 是本地系統(tǒng)的名稱,root 是本地登錄名。這樣,blade1 上的 root 即可在包含 .rhosts 文件的遠(yuǎn)程系統(tǒng)中來(lái)回復(fù)制文件。
配置過(guò)程:
(1) 在雙方root用戶根目錄下建立.rhosts文件,并將雙方的hostname加進(jìn)去.在此之前應(yīng)在雙方的 /etc/hosts文件中加入對(duì)方的IP和hostname
(2) 把rsh服務(wù)啟動(dòng)起來(lái),redhat默認(rèn)是不啟動(dòng)的。方法:用執(zhí)行ntsysv命令,在rsh選項(xiàng)前用空格鍵選中,確定退出。然后執(zhí)行:service xinetd restart即可。如果沒(méi)有rsh,請(qǐng)見(jiàn)下面rsh部分
(3) 到/etc/pam.d/目錄下,把rsh文件中的auth required /lib/security/pam_securetty.so一行用“#”注釋掉即可。(只有注釋掉這一行,才能用root用戶登錄)
命令使用:
rcp [options] [[user@]host1:]file1 ...[[user@]host2:]file2
options:
-r 遞歸地把源目錄中的所有內(nèi)容拷貝到目的目錄中。
-p 試圖保留源文件的修改時(shí)間和模式,忽略u(píng)mask。
rsh(remote shell,它不夠安全):rsh使用條件同rcp,rsh配置過(guò)程(以root為例)
(1) 在服務(wù)器上運(yùn)行/urs/bin/ntsysv選中rexec,rlogin,rsh三項(xiàng)服務(wù)。
(2) 運(yùn)行#/sbin/service xinetd restart啟動(dòng)該三項(xiàng)服務(wù)。
(3) 運(yùn)行echo"rexec">>/etc/securetty; echo"rlogin">>/etc/securetty; echo"rsh">>/etc/securetty
(4) 在服務(wù)器上運(yùn)行echo"你的ip地址root">>/root/.rhosts或者echo"你的主機(jī)名root">>/root/.rhosts且確保在服務(wù)器上的/etc/hosts中有主機(jī)名和ip地址的映射關(guān)系
(5) 到/etc/pam.d/目錄下,把rexec, rlongin, rsh文件中的auth required /lib/security/pam_securetty.so 一行用“#”注釋掉即可。(只有注釋掉這一行,才能用root用戶登錄)
(6) rsh命令用法:rshremote-sytem-neame Linux-command,例如:rsh blade1 ls /home/root
scp
scp 命令是 SSH中最方便有用的命令了,scp就是secure copy,是用來(lái)進(jìn)行遠(yuǎn)程文件拷貝的。數(shù)據(jù)傳輸使用 ssh,并且和ssh 使用相同的認(rèn)證方式,提供相同的安全保證。 與rcp 不同的是,scp 在需要進(jìn)行驗(yàn)證時(shí)會(huì)要求你輸入密碼或口令。
scp [options] [本地用戶名@IP地址:]file1 [遠(yuǎn)程用戶名 @IP 地址 :] file2
options:
-v 用來(lái)顯示進(jìn)度,可以用來(lái)查看連接,認(rèn)證,或是配置錯(cuò)誤。
-C 使能壓縮選項(xiàng)。
-c 選擇使用那個(gè)加密算法(具體對(duì)應(yīng)到ssh的-c cipher-spec,這個(gè)參數(shù)值會(huì)被傳給ssh,可選擇值3des,blowfish,des),使用blowfish會(huì)快很多,可以參看man ssh 中的-c cipher-spec
-P 選擇端口
-r 遞歸拷貝整個(gè)目錄
-l 限制使用帶寬,Kbit/s
-o 指定傳給ssh的一些參數(shù)值,比如Compression=yes
-p 保留文件的修改時(shí)間等信息。
rsync
rsync是rcp的替代品之一,rsync 是一款高效的遠(yuǎn)程數(shù)據(jù)備份和鏡象工具,可快速地同步多臺(tái)主機(jī)間的文件,其具有如下特性:
l 支持鏈接、所有者、組信息以及權(quán)限信息的拷貝;
l 通過(guò)遠(yuǎn)程 shell(ssh, rsh)進(jìn)行傳輸;
l 無(wú)須特殊權(quán)限即可安裝使用;
l 流水線式文件傳輸模式,文件傳輸效率高;
l 支持匿名操作;
需要提及的是 rsync 以其優(yōu)越的性能優(yōu)勢(shì)區(qū)別于其它幾種 Linux 文件傳輸方法,其同步文件的速度相當(dāng)快,這主要?dú)w功于 rsync 所使用的傳輸算法。簡(jiǎn)而言之 rsync 算法能在相當(dāng)短的時(shí)間內(nèi)計(jì)算出需要備份的數(shù)據(jù),只對(duì)源文件與目標(biāo)文件的不同之處進(jìn)行傳輸,從而降低網(wǎng)絡(luò)中傳輸?shù)臄?shù)據(jù)量,以此達(dá)到快速備份鏡像的目的。下面通過(guò)一典型應(yīng)用場(chǎng)景來(lái)描述 rsync 算法的基本原理:主機(jī) A 與主機(jī) B 均有對(duì)同一文件的拷貝,用戶對(duì)主機(jī) A 上的拷貝進(jìn)行更新,主機(jī) B 通過(guò) rsync 算法對(duì)更新后的文件進(jìn)行同步。以下是該算法的實(shí)現(xiàn)步驟:
(1) 主機(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ì)算速度快。
(2) 主機(jī) B 將每個(gè)數(shù)據(jù)塊的弱校驗(yàn)、強(qiáng)校驗(yàn)結(jié)果發(fā)送給主機(jī) A 。
(3) 主機(jī) A 對(duì)更新后的文件拷貝中的每個(gè)長(zhǎng)度為 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 上。
通過(guò)上述計(jì)算,主機(jī) A 將文件的不同部分發(fā)送給 B,B 接收到兩個(gè)拷貝之間的不同之處,從而同步得到更新后的文件。通過(guò)如上方式,rsync 避免了對(duì)相同數(shù)據(jù)的傳輸,減少了網(wǎng)絡(luò)帶寬的浪費(fèi)。在時(shí)間上整個(gè)過(guò)程中需一個(gè)往返,從某種程度上也保證了 rsync 的優(yōu)越性能。
Rsync可以通過(guò)兩種方式來(lái)連接遠(yuǎn)程服務(wù)器,一種是通過(guò)類shell命令的方式,一種是通過(guò)rsync daemon的方式,rsync daemon需要進(jìn)行安裝和配置,具體如下:
可從官方網(wǎng)站http://rsync.samba.org/ 上下載安裝 rsync 的最新版本。使用時(shí)需將 rsync 分別安裝于服務(wù)端和客戶端,服務(wù)端和客戶端使用同一個(gè) rsync 軟件包來(lái)實(shí)現(xiàn)遠(yuǎn)程鏡像和定期同步更新。需要說(shuō)明的是一個(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)證、訪問(wè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è)目錄樹(shù),即若有 N 個(gè)需要備份的目錄樹(shù),則需要 N 個(gè)模塊與之對(duì)應(yīng)。模塊中可以定義許多參數(shù),常見(jiàn)參數(shù)如下。
l Comment 模塊信息描述,該描述連同模塊名在客戶連接得到模塊列表時(shí)顯示給客戶。默認(rèn)沒(méi)有描述定義。
l Path 指定供備份的目錄路徑,必須指定該參數(shù)。
l max connections 指定最大并發(fā)連接數(shù)以保護(hù)服務(wù)器,超過(guò)限制的連接請(qǐng)求將被告知隨后再試。默認(rèn)值為 0,即沒(méi)有限制。
l log file 指定日志文件
l read only 設(shè)定是否允許客戶上載文件。若為 true 任何上載請(qǐng)求均會(huì)失敗,若為 false 且客戶端擁有服務(wù)器目錄讀寫(xiě)權(quán)限則可以上載。默認(rèn)值為 true 。
l write only 設(shè)定是否允許客戶下載文件。若為 true 任何下載請(qǐng)求均會(huì)失敗,默認(rèn)值為 false 。
l List 設(shè)定當(dāng)客戶請(qǐng)求可以使用的模塊列表時(shí),是否列出該模塊。若為 false,則創(chuàng)建隱藏的模塊。默認(rèn)值為 true 。
l fake super 允許文件享有所有權(quán)限,而無(wú)需后臺(tái)服務(wù)以 root 權(quán)限進(jìn)行操作。
l Filter 設(shè)置過(guò)濾列表以決定哪些文件可由客戶端訪問(wèn)。
l hosts allow 指定允許客戶連接的 IP 地址。可以為單個(gè) IP 地址或整個(gè)網(wǎng)段。多個(gè) IP或網(wǎng)段需要以空格隔開(kāi)。默認(rèn)是允許所有主機(jī)連接。
l dont compress 指定不進(jìn)行壓縮處理即可傳輸?shù)奈募?#xff0c;默認(rèn)值是 *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz
l pre-xfer exec, post-xfer exec 設(shè)置可在文件傳輸前/后執(zhí)行的命令。若在文件傳輸前執(zhí)行的命令失敗,則取消本次傳輸操作。
需要注意的是服務(wù)器端啟動(dòng):/usr/bin/rsync--daemon --config=/etc/rsyncd/rsyncd.conf
連接遠(yuǎn)程服務(wù)器的兩種方式的基本語(yǔ)法
(1) 通過(guò)遠(yuǎn)程 shell 方式:
l 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)行分隔。
l 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)行分隔。
(2) 通過(guò) rsync daemon 方式:
l rsync [OPTION] [USER@]HOST::SRC DEST 或rsync [OPTION]rsync://[USER@]HOST[:PORT]/SRC [DEST]:從遠(yuǎn)程 rsync 服務(wù)器中拷貝文件到本地機(jī)。SRC 地址路徑中以雙冒號(hào) "::" 進(jìn)行分隔。
l rsync [OPTION] SRC [USER@]HOST::DEST 或rsync [OPTION] SRCrsync://[USER@]HOST[:PORT]/DEST:從本地機(jī)器拷貝文件到遠(yuǎn)程 rsync 服務(wù)器中。 DEST 地址路徑中以雙冒號(hào) "::" 進(jìn)行分隔。
如果 rsync 命令中只指定 SRC 參數(shù)而不指定 DEST 參數(shù),則意為顯示源文件列表而非進(jìn)行同步拷貝。
Options:
options:
-v,--verbose 詳細(xì)模式輸出
-q,--quiet 精簡(jiǎn)輸出模式
-c,--checksum 打開(kāi)校驗(yàn)開(kāi)關(guān),強(qiáng)制對(duì)文件傳輸進(jìn)行校驗(yàn)
-a,--archive 歸檔模式,表示以遞歸方式傳輸文件,并保持所有文件屬性,等于-rlptgoD
-r,--recursive 對(duì)子目錄以遞歸模式處理
-R,--relative 使用相對(duì)路徑信息
-b,--backup 創(chuàng)建備份,也就是對(duì)于目的已經(jīng)存在有同樣的文件名時(shí),將老的文件重新命名為~filename。可以使用--suffix選項(xiàng)來(lái)指定不同的備份文件前綴。
--backup-dir將備份文件(如~filename)存放在在目錄下。
-suffix=SUFFIX定義備份文件前綴
-u,--update 僅僅進(jìn)行更新,也就是跳過(guò)所有已經(jīng)存在于DST,并且文件時(shí)間晚于要備份的文件。(不覆蓋更新的文件)
-l,--links 保留軟鏈結(jié)
-L,--copy-links 想對(duì)待常規(guī)文件一樣處理軟鏈結(jié)
--copy-unsafe-links僅僅拷貝指向SRC路徑目錄樹(shù)以外的鏈結(jié)
--safe-links忽略指向SRC路徑目錄樹(shù)以外的鏈結(jié)
-H,--hard-links 保留硬鏈結(jié)
-p,--perms 保持文件權(quán)限
-o,--owner 保持文件屬主信息
-g, --group 保持文件屬組信息
-D,--devices 保持設(shè)備文件信息
-t,--times 保持文件時(shí)間信息
-S,--sparse 對(duì)稀疏文件進(jìn)行特殊處理以節(jié)省DST的空間
-n,--dry-run現(xiàn)實(shí)哪些文件將被傳輸
-W,--whole-file 拷貝文件,不進(jìn)行增量檢測(cè)
-x,--one-file-system 不要跨越文件系統(tǒng)邊界
-B,--block-size=SIZE 檢驗(yàn)算法使用的塊尺寸,默認(rèn)是700字節(jié)
-e,--rsh=COMMAND 指定使用rsh、ssh方式進(jìn)行數(shù)據(jù)同步
--rsync-path=PATH指定遠(yuǎn)程服務(wù)器上的rsync命令所在路徑信息
-C,--cvs-exclude 使用和CVS一樣的方法自動(dòng)忽略文件,用來(lái)排除那些不希望傳輸?shù)奈募?/strong>
--existing僅僅更新那些已經(jīng)存在于DST的文件,而不備份那些新創(chuàng)建的文件
--delete刪除那些DST中SRC沒(méi)有的文件
--delete-excluded同樣刪除接收端那些被該選項(xiàng)指定排除的文件
--delete-after傳輸結(jié)束以后再刪除
--ignore-errors及時(shí)出現(xiàn)IO錯(cuò)誤也進(jìn)行刪除
--max-delete=NUM最多刪除NUM個(gè)文件
--partial保留那些因故沒(méi)有完全傳輸?shù)奈募?#xff0c;以是加快隨后的再次傳輸
--force強(qiáng)制刪除目錄,即使不為空
--numeric-ids不將數(shù)字的用戶和組ID匹配為用戶名和組名
--timeout=TIMEIP超時(shí)時(shí)間,單位為秒
-I,--ignore-times 不跳過(guò)那些有同樣的時(shí)間和長(zhǎng)度的文件
--size-only當(dāng)決定是否要備份文件時(shí),僅僅察看文件大小而不考慮文件時(shí)間
--modify-window=NUM決定文件是否時(shí)間相同時(shí)使用的時(shí)間戳窗口,默認(rèn)為0
-T--temp-dir=DIR 在DIR中創(chuàng)建臨時(shí)文件
--compare-dest=DIR同樣比較DIR中的文件來(lái)決定是否需要備份
-P等同于 --partial
--progress顯示備份過(guò)程
-z,--compress 對(duì)備份的文件在傳輸時(shí)進(jìn)行壓縮處理
--exclude=PATTERN指定排除不需要傳輸?shù)奈募J?/strong>
--include=PATTERN指定不排除而需要傳輸?shù)奈募J?/strong>
--exclude-from=FILE排除FILE中指定模式的文件
--include-from=FILE不排除FILE指定模式匹配的文件
--version打印版本信息
--address綁定到特定的地址
--config=FILE指定其他的配置文件,不使用默認(rèn)的rsyncd.conf文件
--port=PORT指定其他的rsync服務(wù)端口
--blocking-io對(duì)遠(yuǎn)程shell使用阻塞IO
-stats給出某些文件的傳輸狀態(tài)
--progress在傳輸時(shí)現(xiàn)實(shí)傳輸過(guò)程
--log-format=formAT指定日志文件格式
--password-file=FILE從FILE中得到密碼
--bwlimit=KBPS限制I/O帶寬,KBytes per second
-h,--help 顯示幫助信息
?
實(shí)例:
(1) 查看服務(wù)端文件及列表:
l rsync 9.186.110.53::查看服務(wù)端可用的模塊列表以及注釋信息;rsync ibmuser@9.186.110.53::www/查看服務(wù)端 www 模塊中的目錄及文件列表(使用 rsyncd 用戶認(rèn)證方式)
l rsync ibmuser@9.186.110.53:/var/www/html/查看服務(wù)端/var/www/html 目錄中的內(nèi)容(使用服務(wù)端的系統(tǒng)用戶進(jìn)行驗(yàn)證,如 ibmuser)
(2) 保持客戶端與服務(wù)端的數(shù)據(jù)同步:
l rsync -avz ibmuser@9.186.110.53::www/ /backup1/使用后臺(tái)服務(wù)方式將服務(wù)端www 模塊下的內(nèi)容備份到本地 /backup1 目錄中,備份時(shí)保留原有權(quán)限、屬性、屬主及符號(hào)連接等,并使用壓縮方式加快數(shù)據(jù)傳輸。
l rsync – avzibmuser@9.186.110.53:/var/www/html /backup2/使用 ssh 方式將遠(yuǎn)程的/var/www/html 目錄備份到本地 /backup2/ 目錄下
l rsync -avz --deleteibmuser@9.186.110.53::www/ /backup3/將遠(yuǎn)程 www 模塊備份到本地/backup3/ 目錄中,同時(shí)進(jìn)行同步目錄,刪除本地目錄中多余的文件。
(3) 當(dāng)服務(wù)端的數(shù)據(jù)出現(xiàn)問(wèn)題時(shí),需要通過(guò)客戶端的數(shù)據(jù)對(duì)服務(wù)端進(jìn)行恢復(fù),只要客戶端有服務(wù)端的寫(xiě)入權(quán)限,即可通過(guò)調(diào)換 rsync 命令的 SRC、DEST 參數(shù)進(jìn)行恢復(fù)。
?
ftp
ftp命令使用文件傳輸協(xié)議(FileTransfer 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)性,但是它并沒(méi)有嘗試去保留一個(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傳輸?shù)侥康姆?wù)器上,必須在目的服務(wù)器上安裝ftp server,基本的安裝和啟動(dòng)過(guò)程如下:
根據(jù)服務(wù)對(duì)象的不同,FTP服務(wù)可以分為兩類:一類是系統(tǒng)FTP服務(wù)器,它只允許系統(tǒng)上的合法用戶使用;另一類是匿名FTP服務(wù)器,它允許任何人登錄到FTP服務(wù)器,和服務(wù)器連接后,在登錄提示中輸入Anonymous,即可訪問(wèn)服務(wù)器。
Yum list *ftp* (找到可用的Ftp包)
sudo yum install ftp包
手工啟動(dòng)和關(guān)閉:啟動(dòng):/usr/sbin/ftprestart 關(guān)閉:/usr/sbin/ftpshut
FTP服務(wù)器的配置:為了確保FTP服務(wù)器安全,必須設(shè)置一些重要的配置文件,以更好地控制用戶的訪問(wèn)權(quán)限。這些配置文件是:/etc/ftpusers;/etc/ftpconversions;/etc/ftp-groups;/etc/ftpphosts;/etc/ftpaccess。利用這些文件,能夠非常精確地控制哪些人、在什么時(shí)間、從什么地點(diǎn)可以連接服務(wù)器,并且可以對(duì)他們連接后所做的工作進(jìn)行檢查跟蹤。
(1) /etc/ftpusers:該文件夾中包含的用戶不能通過(guò)FTP登錄服務(wù)器,有時(shí)將需要禁止的用戶賬號(hào)寫(xiě)入文件/etc/ftpuser中,這樣就可以禁止一些用戶使用FTP服務(wù)。
(2) /etc/ftpconversions:用來(lái)配置壓縮/解壓縮程序。
(3) /etc/ftpgroups:創(chuàng)建用戶組,這個(gè)組中的成員預(yù)先定義可以訪問(wèn)FTP服務(wù)器。
(4) /etc/ftpphosts:用來(lái)根據(jù)禁止或允許遠(yuǎn)程主機(jī)對(duì)特定賬戶的訪問(wèn),例如:allow czc 192.168.0.0/24 deny cdd 10.0.0.0/8(表示允許czc用戶從192.168.0這個(gè)網(wǎng)段連線訪問(wèn),拒絕cdd從10.這個(gè)網(wǎng)段連線訪問(wèn))。
(5) /etc/ftpaccess:是非常重要的一個(gè)配置文件,用來(lái)控制存取權(quán)限,文件中的每一行定義一個(gè)屬性,并對(duì)屬性的值進(jìn)行設(shè)置。下面對(duì)它的一些常用配置做一點(diǎn)介紹:
l 定義用戶類別:格式:class[類名] [real/guest/anonymous][IP地址] 功能:這個(gè)指令的功能設(shè)定FTP服務(wù)器上用戶的類別。并可對(duì)客戶端的IP地址進(jìn)行限制,允許特定或者全部的IP地址訪問(wèn)FTP服務(wù)器。
l 登錄重試次數(shù):在命令行中輸入:loginfails 10,這表明如果10次還沒(méi)有登錄成功就切斷連線。
l 密碼檢查:格式:passwd-check〈strictness〉 warn。是對(duì)匿名用戶的密碼使用方式的檢查,其中〈strictness〉是三個(gè)可能的字符串之一:None、Trivial、RFC822。若選None,表示將不對(duì)口令做任何檢查;若選Trivial,表示對(duì)口令有一定的要求,它需要在口令中至少要有一個(gè)@符號(hào);若選RFC822,則表示最嚴(yán)格,要求E-mail地址必須遵守RFC822報(bào)文標(biāo)題標(biāo)準(zhǔn)(如:czc@domain.com )。例如:passwd-check rfc822 warn,表明密碼的要求很嚴(yán)格,當(dāng)密碼不符合規(guī)定時(shí)出現(xiàn)警告信息。
l 登錄人數(shù)的限制:格式:limit[類別] [人數(shù)] [時(shí)間] [文件名]。設(shè)置指定類別在約定時(shí)間內(nèi)可以登錄FTP的人數(shù)。例如:limit remote Any/etc/many.msg,說(shuō)明類別Remote類別在任何時(shí)間內(nèi)登錄人數(shù)不超過(guò)20個(gè)人,否則會(huì)顯示Many.msg警告信息。
安裝、配置好FTP服務(wù)器后,只需要在命令提示符后輸入:FTP Servername,用主機(jī)名或希望連接的FTP服務(wù)器的IP地址代替Servername,按照提示輸入用戶名和口令,然后用標(biāo)準(zhǔn)的Linux上移或下移FTP服務(wù)器目錄結(jié)構(gòu)。另外,也可以采用圖形化FTP程序,包括窗口式gFTP,可以借助Web瀏覽器去訪問(wèn)FTP服務(wù)器。
在登錄上ftp后,可以使用如下ftp命令進(jìn)行操作:
l FTP> ! 從 ftp 子系統(tǒng)退出到外殼
l FTP> ? 顯示 ftp 命令說(shuō)明,和 help 相同,格式:? [command]說(shuō)明:[command]指定需要幫助的命令名稱。假如沒(méi)有指定 command,linux ftp命令參數(shù)將顯示全部命令的列表。
l FTP> append 使用當(dāng)前文檔類型配置將本地文檔附加到遠(yuǎn)程電腦上的文檔。格式:append local-file [remote-file],說(shuō)明:local-file 指定要添加的本地文檔,remote-file指定要添加 local-file 的遠(yuǎn)程電腦上的文檔。假如省略了 remote-file,本地文檔名將被用作遠(yuǎn)程文檔名。
l FTP> ascii 將文檔傳送類型配置為默認(rèn)的 ASCII。說(shuō)明:linux ftp命令參數(shù)支持兩種文檔傳送類型,ASCII 碼和二進(jìn)制圖像,在傳送文本文檔時(shí)應(yīng)該使用ASCII。
l FTP> bell 轉(zhuǎn)換響鈴以在每個(gè)文檔傳送命令完成后響鈴??默認(rèn)情況下,鈴聲是關(guān)閉的。
l FTP> binary(或bi) 將文檔傳送類型配置為二進(jìn)制
l FTP> bye(或by) 結(jié)束和遠(yuǎn)程電腦的linux ftp命令參數(shù)會(huì)話并退出linux ftp命令參數(shù)。
l FTP> cd 更改遠(yuǎn)程電腦上的工作目錄。格式:cd remote-directory,說(shuō)明:remote-directory 指定要更改的遠(yuǎn)程電腦上的目錄。
l FTP> close 結(jié)束和遠(yuǎn)程服務(wù)器的linux ftp命令參數(shù)會(huì)話并返回命令解釋程式。
l FTP> debug 轉(zhuǎn)換調(diào)試。當(dāng)調(diào)試打開(kāi)時(shí),發(fā)送到遠(yuǎn)程電腦的每個(gè)命令都打印,前面是字符串">"。默認(rèn)情況下,調(diào)試是關(guān)閉的。
l FTP> delete 刪除遠(yuǎn)程電腦上的文檔。格式:delete remote-file,說(shuō)明:remote-file 指定要?jiǎng)h除的文檔。
l FTP> dir 顯示遠(yuǎn)程目錄文檔和子目錄列表。格式:dir [remote-directory] [local-file],說(shuō)明:remote-directory 指定要查看其列表的目錄。假如沒(méi)有指定目錄,將使用遠(yuǎn)程電腦中的當(dāng)前工作目錄。Local-file 指定要存儲(chǔ)列表的本地文檔。假如沒(méi)有指定,輸出將顯示在屏幕上。
l FTP> disconnect 從遠(yuǎn)程電腦斷開(kāi),保留linux ftp命令參數(shù)提示。
l FTP> get 使用當(dāng)前文檔轉(zhuǎn)換類型將遠(yuǎn)程文檔復(fù)制到本地,格式:get remote-file [local-file],說(shuō)明:remote-file 指定要復(fù)制的遠(yuǎn)程文檔,Local-file指定要在本地電腦上使用的名稱,假如沒(méi)有指定,文檔將命名為 remote-file。
l FTP>glob 轉(zhuǎn)換文檔名組合,組合允許在內(nèi)部文檔或路徑名中使用通配符(*和?),默認(rèn)情況下,組合是打開(kāi)的。
l FTP>hash 轉(zhuǎn)換已傳輸?shù)拿總€(gè)數(shù)據(jù)塊的數(shù)字簽名 (#) 打印,數(shù)據(jù)塊的大小是2048 字節(jié),默認(rèn)情況下,散列符號(hào)打印是關(guān)閉的。
l FTP>help 顯示linux ftp命令參數(shù)命令說(shuō)明。格式:help [command], 說(shuō)明:command 指定需要有關(guān)說(shuō)明的命令的名稱,假如沒(méi)有指定 command,linux ftp命令參數(shù)將顯示全部命令的列表。
l FTP>lcd 更改本地電腦上的工作目錄,默認(rèn)情況下,工作目錄是啟動(dòng)linux ftp命令參數(shù)的目錄。格式:lcd [directory],說(shuō)明:directory 指定要更改的本地電腦上的目錄,假如沒(méi)有指定directory,將顯示本地電腦中當(dāng)前的工作目錄。
l FTP>literal 將參數(shù)逐字發(fā)送到遠(yuǎn)程linux ftp命令參數(shù)服務(wù)器,將返回單個(gè)的linux ftp命令參數(shù)回復(fù)代碼,格式:literal argument [ ...],說(shuō)明:argument 指定要發(fā)送到linuxftp命令參數(shù)服務(wù)器的參數(shù)。
l FTP>ls 顯示遠(yuǎn)程目錄文檔和子目錄的縮寫(xiě)列表,格式:ls [remote-directory] [local-file],說(shuō)明:remote-directory 指定要查看其列表的目錄,假如沒(méi)有指定目錄,將使用遠(yuǎn)程電腦中的當(dāng)前工作目錄,local-file 指定要存儲(chǔ)列表的本地文檔??假如沒(méi)有指定,輸出將顯示在屏幕上。
l FTP>mdelete 刪除遠(yuǎn)程電腦上的文檔,格式:mdelete remote-files [ ...],說(shuō)明:remote-files 指定要?jiǎng)h除的遠(yuǎn)程文檔。
l FTP>mdir 顯示遠(yuǎn)程目錄文檔和子目錄列表,能夠使用 mdir 指定多個(gè)文檔,格式:mdir remote-files [ ...] local-file,說(shuō)明:remote-files 指定要查看列表的目錄,必須指定 remote-files,請(qǐng)鍵入 - 使用遠(yuǎn)程電腦上的當(dāng)前工作目錄。local-file 指定要還原列表的本地文檔,請(qǐng)鍵入- 在屏幕上顯示列表。
l FTP>mget 使用當(dāng)前文檔傳送類型將遠(yuǎn)程文檔復(fù)制到本地電腦,格式:mget remote-files [ ...],說(shuō)明:remote-files 指定要復(fù)制到本地電腦的遠(yuǎn)程文檔。
l FTP>mkdir 創(chuàng)建遠(yuǎn)程目錄,格式:mkdir directory,說(shuō)明:directory 指定新的遠(yuǎn)程目錄的名稱。
l FTP>mls 顯示遠(yuǎn)程目錄文檔和子目錄的縮寫(xiě)列表,格式:mls remote-files [ ...] local-file,說(shuō)明:remote-files 指定要查看列表的文檔??必須指定remote-files;,請(qǐng)鍵入- 使用遠(yuǎn)程電腦上的當(dāng)前工作目錄。local-file 指定要存儲(chǔ)列表的本地文檔,請(qǐng)鍵入 - 以在屏幕上顯示列表。
l FTP>mput 使用當(dāng)前文檔傳送類型將本地文檔復(fù)制到遠(yuǎn)程電腦上。格式:mput local-files [ ...],說(shuō)明:local-files 指定要復(fù)制到遠(yuǎn)程電腦的本地文檔。
l FTP>open 和指定的linux ftp命令參數(shù)服務(wù)器連接,格式:open computer [port],說(shuō)明:computer 指定要連接的遠(yuǎn)程電腦??能夠通過(guò) IP 地址或電腦名稱指定電腦(DNS 或主機(jī)文檔必須可用),假如自動(dòng)登錄打開(kāi)(默認(rèn)),ftp 還將嘗試自動(dòng)將用戶登錄到linux ftp命令參數(shù)服務(wù)器port 指定用來(lái)聯(lián)系linux ftp命令參數(shù)服務(wù)器的端口號(hào)。
l FTP>prompt 轉(zhuǎn)換提示,假如關(guān)閉提示時(shí) mget 及 mput 傳送任何文檔,linux ftp命令參數(shù)在多文檔傳送過(guò)程中將提示允許您有選擇地檢索或存儲(chǔ)文檔,默認(rèn)情況下,提示是打開(kāi)的。
l FTP>put 使用當(dāng)前文檔傳送類型將本地文檔復(fù)制到遠(yuǎn)程電腦上,格式:put local-file [remote-file],說(shuō)明:local-file 指定要復(fù)制的本地文檔,remote-file指定要在遠(yuǎn)程電腦上使用的名稱??假如沒(méi)有指定,文檔將命名為 local-file。
l FTP>pwd 顯示遠(yuǎn)程電腦上的當(dāng)前目錄。
l FTP>quit 結(jié)束和遠(yuǎn)程電腦的linux ftp命令參數(shù)會(huì)話并退出linux ftp命令參數(shù)。
l FTP>quote 將參數(shù)逐字發(fā)送到遠(yuǎn)程linux ftp命令參數(shù)服務(wù)器,將返回單個(gè)的linux ftp命令參數(shù)回復(fù)代碼。
l FTP>recv 使用當(dāng)前文檔傳送類型將遠(yuǎn)程文檔復(fù)制到本地電腦,Recv 和 get相同。格式:recv remote-file [local-file],說(shuō)明:remote-file 指定要復(fù)制的遠(yuǎn)程文檔,local-file指定要在本地電腦上使用的名稱,假如沒(méi)有指定,文檔將命名為 remote-file。
l FTP>remotehelp 顯示遠(yuǎn)程命令幫助,格式:remotehelp [command],說(shuō)明:command 指定需要幫助的命令的名稱,假如沒(méi)有指定 command,linux ftp命令參數(shù)將顯示全部遠(yuǎn)程命令的列表。
l FTP>rename 重命名遠(yuǎn)程文檔,格式:rename filename newfilename,說(shuō)明:filename 指定要重命名的文檔,newfilename指定新的文檔名。
l FTP>rmdir 刪除遠(yuǎn)程目錄,格式:rmdir directory,說(shuō)明:directory 指定要?jiǎng)h除的遠(yuǎn)程目錄的名稱。
l FTP>send 使用當(dāng)前文檔傳送類型將本地文檔復(fù)制到遠(yuǎn)程電腦上,Send 和put 相同,格式:send local-file [remote-file],說(shuō)明:local-file 指定要復(fù)制的本地文檔,remote-file指定要在遠(yuǎn)程電腦上使用的名稱,假如沒(méi)有指定,文檔將命名為 local-file。
l FTP>status 顯示linux ftp命令參數(shù)連接和轉(zhuǎn)換的當(dāng)前狀態(tài)。
l FTP>trace 轉(zhuǎn)換數(shù)據(jù)包跟蹤,Trace 在運(yùn)行l(wèi)inux ftp命令參數(shù)命令時(shí)顯示每個(gè)數(shù)據(jù)包的路由。
l FTP>type 配置或顯示文檔傳送類型,格式:type [type-name],說(shuō)明:type-name 指定文檔傳送類型,默認(rèn)配置為 ascii,假如沒(méi)有指定type-name,將顯示當(dāng)前的類型。
l FTP>user 指定遠(yuǎn)程電腦的用戶,格式:user username [password] [account],說(shuō)明:user-name 指定登錄到遠(yuǎn)程電腦所使用的用戶名,password 指定 user-name 的密碼,假如沒(méi)有指定,但必須指定,linux ftp命令參數(shù)會(huì)提示輸入密碼。account 指定登錄到遠(yuǎn)程電腦所使用的帳戶,假如沒(méi)有指定account,但是需要指定,linux ftp命令參數(shù)會(huì)提示您輸入帳戶。
l FTP>verbose 轉(zhuǎn)換 verbose 模式,假如打開(kāi),將顯示任何 linux ftp命令參數(shù)響應(yīng),在文檔傳送完成后,將同時(shí)顯示和傳送效率有關(guān)的統(tǒng)計(jì)信息,默認(rèn)情況下,verbose 是打開(kāi)的。
sftp
sftp(安全文件傳輸協(xié)議)與ftp 有著幾乎一樣的語(yǔ)法和功能。FTP 為 SSH的一部份,是一種傳輸檔案至 Blogger 伺服器的安全方式。它并不使用ftp守護(hù)進(jìn)程(ftpd或wu-ftpd)來(lái)進(jìn)行連接,而是有意義地增強(qiáng)系統(tǒng)的安全性。實(shí)際上,通過(guò)監(jiān)視一些系統(tǒng)中的log文件,可以注意到很多攻擊是針對(duì)于ftpd守護(hù)進(jìn)程的。sftp避免了這些攻擊從而可以停止在wu-ftpd上潛在的危險(xiǎn)。SFTP本身沒(méi)有單獨(dú)的守護(hù)進(jìn)程,它必須使用sshd守護(hù)進(jìn)程(端口號(hào)默認(rèn)是22)來(lái)完成相應(yīng)的連接操作。使用SFTP是非常安全的。但是,由于這種傳輸方式使用了加密/解密技術(shù),所以傳輸效率比普通的FTP要低得多,如果您對(duì)網(wǎng)絡(luò)安全性要求更高時(shí),可以使用SFTP代替FTP。
用法舉例:
(1) sftproot@10.48.30.192:/root/test.sh(直接將192上的文件復(fù)制到本地)
(2) sftproot@10.48.30.192:/root (直接連接到192的root目錄下,這樣就可以使用getput等命令了)
sftp使用在數(shù)據(jù)連接上使用ssh2,所以文件的傳輸是盡可能地安全。使用sftp代替ftp兩個(gè)主要的的原因是:
(1) password從不用明文傳輸,防止sniffer(嗅探器)的攻擊。
(2) 數(shù)據(jù)在傳輸時(shí)被加密,使用刺探和修改連接非常困難。
使用sftp2是非常簡(jiǎn)單的。讓我們假設(shè)你使用了你的帳戶:myname通過(guò)sftp連按上了主機(jī)host1。可以使用命令:sftp myname@host1。當(dāng)sftp2準(zhǔn)備好了來(lái)接受連接時(shí),它將顯示一個(gè)狀態(tài)提示符 sftp>。在sftp手冊(cè)中有完整的用戶可以使用的命令列表;其中有:
l quit:從這個(gè)應(yīng)用程序中退出。
l cd directory:改變當(dāng)前的遠(yuǎn)程工作目錄。
l lcd directory:改變當(dāng)前的本地工作目錄。
l ls [ -r ] [ -l ] [ file ... ]:列出在遠(yuǎn)地服務(wù)器上的文件名。如果是目錄,則列出目錄的內(nèi)容。當(dāng)命令行中指定了-r,則遞歸地顯示目錄樹(shù)。(默認(rèn)情況下,子目錄并不被訪問(wèn))。當(dāng)命令行中指定了-l,文件與目錄的權(quán)限,屬主,大小和修改時(shí)間被列出。當(dāng)沒(méi)有參數(shù)被指定,則.(當(dāng)前目錄)的內(nèi)容被列出。普通情況下選項(xiàng)-r和-l是互相不兼容的。
l lls [ -r ] [ -l ] [ file ... ]:與ls一樣,但是是對(duì)于本地文件操作。
l get [file ...]:從遠(yuǎn)程端傳送指定的文件到本地端。目錄內(nèi)容被遞歸地復(fù)制。
l put [ file ... ]:從本地端傳送指定的文件到遠(yuǎn)地端。目錄內(nèi)容被遞歸地復(fù)制。
l mkdir dir (rmdir dir):嘗試建立或刪除參數(shù)中指定的目錄。
l 通配符對(duì)于ls,lls,get和put是支持的。格式在sshregex手冊(cè)中有描述。
從sftp使用加密技術(shù)以來(lái),一直有一個(gè)障礙:連接速度慢(有2-3倍),但是這一點(diǎn)對(duì)于非常好的安全性來(lái)講只能放在一邊了。在一個(gè)測(cè)試中,局域網(wǎng)上的sniffer可以在一個(gè)小時(shí)中捉住ftp連接上的4個(gè)password.。sftp的使用可以從網(wǎng)絡(luò)上傳送文件并且除去這些安全問(wèn)題。
lftp
lftp 是一個(gè)功能強(qiáng)大的下載工具,它支持訪問(wèn)文件的協(xié)議: ftp, ftps, http, https, hftp, fish.(其中ftps和https需要在編譯的時(shí)候包含openssl庫(kù))。llftp非常像一個(gè)shell: 有命令補(bǔ)全,歷史記錄,允許多個(gè)后臺(tái)任務(wù)執(zhí)行等功能,使用起來(lái)非常方便。它還有書(shū)簽、排隊(duì)、鏡像、斷點(diǎn)續(xù)傳、多進(jìn)程下載等功能。
命令行語(yǔ)法
(1) lftp [-d] [-e cmd] [-p port][-u user[,pass]] [site]
-e在選擇后執(zhí)行命令
-u [,] 使用指定的用戶名/口令進(jìn)行驗(yàn)證
-p 連接指定的端口
Site:主機(jī)名,URL 或書(shū)簽的名字
(2) lftp -f script_file
執(zhí)行文件中的命令后退出
(3) lftp -c commands
執(zhí)行命令后退出
(4) lftp –version
顯示 lftp 版本后退出
(5) lftp --help
顯示幫助信息后退出
例子:
(1) 如果在命令行中輸入的站點(diǎn)名稱,lftp將直接登錄站點(diǎn),比如
lftp ftp://.............
(2) 如果在命令行不輸入站點(diǎn)名稱,則必須在進(jìn)入到lftp界面后用open命令打開(kāi)
Lftp
lftp :~> open ftp://...................
常用命令
l 下載單個(gè)文件和一組文件,斷點(diǎn)續(xù)傳用-c參數(shù)
lftp ................:/> get -c ls-lR.txt
lftp ...............:/> mget *.txt
l 鏡像(反鏡像即上傳)一個(gè)目錄,可以用多個(gè)線程并行鏡像一個(gè)目錄(--parallel=N)
lftp ................:/> mirror incoming local_name
lftp ................:/> mirror -R local_name
lftp ................:/> mirror --parallel=3 incominglocal_name
l 多線程下載,類似網(wǎng)絡(luò)螞蟻的功能;缺省是5個(gè)線程
lftp ................:/> pget -n 4 ls-lR.txt
l 后臺(tái)任務(wù)管理
缺省情況下,按 Ctrl+z,正在執(zhí)行的任務(wù)將轉(zhuǎn)為后臺(tái)執(zhí)行,也可以在命令行末尾加&符號(hào)使任務(wù)在后臺(tái)執(zhí)行。用jobs命令可以查看所有的后臺(tái)進(jìn)程。用queue命令可以排隊(duì)新的任務(wù)。如果退出lftp是還有任務(wù)在后臺(tái)執(zhí)行,lftp將轉(zhuǎn)為后臺(tái)執(zhí)行。
l 其它用法
lftp支持類似bash的管道操作,例如用下面的命令可以將ftp服務(wù)器上的特定目錄下(也可以是整個(gè)站點(diǎn))所有文件的大小存到本地的文件ls.txt中
lftp ................:/> du incoming > ls.txt
相關(guān)文件
(1) /etc/lftp.conf
全局配置文件,實(shí)際位置依賴系統(tǒng)配置文件目錄,可能在/etc,也可能在/usr/local/etc
(2) ~/.lftp/rc, ~/.lftprc
用戶配置文件,將在/etc/lftp.conf之后執(zhí)行,所以這里面的設(shè)置會(huì)覆蓋/etc/lftp.conf中的設(shè)置。
(3) lftp 缺省不會(huì)顯示 ftp 服務(wù)器的歡迎信息和錯(cuò)誤信息,這在很多時(shí)候不方便,因?yàn)槟阌锌赡芟胫肋@個(gè)服務(wù)器到底是因?yàn)闆](méi)開(kāi)機(jī)連不上,還是連接數(shù)已滿。如果是這樣,你可以在 ~/.lftprc 里寫(xiě)入一行,debug 3,就可以看到出錯(cuò)信息了。更多的配置選項(xiàng)請(qǐng)查man手冊(cè)或在lftp界面內(nèi)用命令 set -a 獲得。
(4) ~/.lftp/log
當(dāng)lftp轉(zhuǎn)為后臺(tái)非掛起模式執(zhí)行時(shí),輸出將重定向到這里
(5) ~/.lftp/bookmarks
這是lftp存儲(chǔ)書(shū)簽的地方,可以lftp查看bookmark命令
(6) ~/.lftp/cwd_history
這個(gè)文件用來(lái)存儲(chǔ)訪問(wèn)過(guò)的站點(diǎn)的工作目錄
(7) ~/.lftprc
在用lftp訪問(wèn)國(guó)內(nèi)一些ftp服務(wù)器時(shí),往往看到的中文是亂碼。不用慌,這是由于服務(wù)器和本地編碼不一致造成的。我們只要在主目錄下新建一個(gè)文件~/.lftprc或者~/.lftp/rc。并在其中加入以下內(nèi)容:debug 3set ftp:charset GBKset file:charset UTF-8#setftp:passtive-mode no#alias utf8 " set ftp:charset UTF-8"#alias gbk" set ftp:charset GBK"
登錄ftp服務(wù)器:
lftpftp://user:password@site:port
lftpuser:password@site:port
lftpsite -p port -u user,password
lftpsite:port -u user,password
上面的幾種方式都能正常工作,不過(guò)密碼都是明文,這樣好像不太安全哦。沒(méi)關(guān)系,使用lftp user@site:port,系統(tǒng)會(huì)提示輸入password,密碼就回顯為******了,不過(guò)每次都輸入這么多,好麻煩哦。如果有類似leapftp的站點(diǎn)管理器就好了,其實(shí)lftp早就給我們想好了:這就是bookmark。后面我們將會(huì)看到。
在終端運(yùn)行如manlftp或登錄ftp后輸入help就可以看到命令列表,下面我們看一下lftp常用的命令:
(1) ls:顯示遠(yuǎn)端文件列表(!ls顯示本地文件列表)。
(2) cd:切換遠(yuǎn)端目錄(lcd 切換本地目錄)。
(3) get:下載遠(yuǎn)端文件。
(4) mget:下載遠(yuǎn)端文件(可以用通配符也就是 *)。
(5) pget:使用多個(gè)線程來(lái)下載遠(yuǎn)端文件, 預(yù)設(shè)為五個(gè)。
(6) mirror:下載/上傳(mirror-R)/同步整個(gè)目錄。
(7) put:上傳文件。
(8) mput:上傳多個(gè)文件(支持通配符)。
(9) mv:移動(dòng)遠(yuǎn)端文件(遠(yuǎn)端文件改名)。
(10) rm:刪除遠(yuǎn)端文件。
(11) mrm:刪除多個(gè)遠(yuǎn)端文件(支持通配符)。
(12) mkdir:建立遠(yuǎn)端目錄。
(13) rmdir:刪除遠(yuǎn)端目錄。
(14) pwd:顯示目前遠(yuǎn)端所在目錄(lpwd顯示本地目錄)。
(15) du:計(jì)算遠(yuǎn)端目錄的大小
(16) !:執(zhí)行本地 shell的命令(由于lftp 沒(méi)有 lls, 故可用 !ls 來(lái)替代)
(17) Lcd:切換本地目錄
(18) Lpwd:顯示本地目錄
(19) Alias:定義別名
(20) Bookmark:設(shè)定書(shū)簽。
(21) Exit:退出ftp
(22) 快捷書(shū)簽:ftp中的bookmark命令,是將配置寫(xiě)到~/.lftp/bookmarks文件中;我們可以直接修改此文件,快速登陸ftp服務(wù)器。
wget
wget 是一個(gè)經(jīng)由 GPL 許可的可從網(wǎng)絡(luò)上自動(dòng)獲取文件的自由軟件包。它是一個(gè)非交互式的命令行工具。支持 HTTP,HTTPS 和 FTP 協(xié)議,支持代理服務(wù)器以及斷點(diǎn)續(xù)傳功能。 wget 可實(shí)現(xiàn)遞歸下載,即可跟蹤 HTML 頁(yè)面上的鏈接依次下載來(lái)創(chuàng)建遠(yuǎn)程服務(wù)器的本地版本,完全重建原始站點(diǎn)的目錄結(jié)構(gòu),實(shí)現(xiàn)遠(yuǎn)程網(wǎng)站的鏡像。在遞歸下載時(shí),wget 將頁(yè)面中的超級(jí)鏈接轉(zhuǎn)換成指向本地文件,方便離線瀏覽。由于非交互特性,wget 支持后臺(tái)運(yùn)行,用戶在退出系統(tǒng)后,仍可繼續(xù)運(yùn)行。功能強(qiáng)大,設(shè)置方便簡(jiǎn)單。
基本語(yǔ)法: wget [options][URL-list]
Options:
?
-r 遞歸下載服務(wù)器上所有的目錄和文件。由 -l選項(xiàng)來(lái)指定遞歸深度。
-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 表示無(wú)限制,默認(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è)置目錄前綴
例子:遞歸下載 http://www.ibm.com.cn 站點(diǎn)的信息。下載所有顯示完整網(wǎng)頁(yè)所以需要的文件,如圖片等。在下載不進(jìn)行上層目錄搜索并將絕對(duì)鏈接轉(zhuǎn)換為相對(duì)鏈接。
wget -r -p -np -k http://www.ibm.com.cn
將在本地硬盤建立http://www.ibm.com.cn 的鏡像,鏡像文件存入當(dāng)前目錄下一個(gè)名為 www.ibm.com.cn 的子目錄中(也可以使用 -nH 參數(shù)指定不建立該子目錄,而直接在當(dāng)前目錄下建立鏡像的目錄結(jié)構(gòu)),遞歸深度為 4,重試次數(shù)為無(wú)窮(若連接出現(xiàn)問(wè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.ibm.com.cn
curl
curl是對(duì) libcurl 庫(kù)的一個(gè)命令行工具包裝。libcurl 庫(kù)中提供了相應(yīng)功能的 API,可以在程序中調(diào)用。 curl 使用 URL 的語(yǔ)法來(lái)傳輸文件,它支持 FTP, FTPS, HTTP, HTTPS, TFTP, SFTP, TELNET 等多種協(xié)議。 curl 功能強(qiáng)大,它提供了包括代理支持,用戶認(rèn)證,FTP 上載,HTTP post,SSL 連接,文件續(xù)傳等許多特性。
基本語(yǔ)法:curl [options …] <url>
?
其中下載參數(shù)大約有 80 多個(gè),curl 的各個(gè)功能完全依靠這些參數(shù)來(lái)完成。下面舉例說(shuō)明 curl 的一些基本用法。
?
使用實(shí)例:
(1) 獲取 GNU 的主頁(yè)curl http://www.gnu.org
(2) 獲取 GNU 的 FTP 服務(wù)器上根目錄下的 README 文件curl ftp://ftp.gnu.org/README
(3) 從一個(gè)字典中獲取 curl 的定義curl dict://dict.org/m:curl
(4) 如果需要指定用戶名和密碼的話,可以在 url 中指定,或者使用 -u 參數(shù)curl ftp://name:passwd@machine.domain:port/full/path/to/file或者curl -uname:passwd ftp://machine.domain:port/full/path/to/file
(5) curl 會(huì)將從指定 url 處獲取的內(nèi)容打印到標(biāo)準(zhǔn)輸出上。如果需要保存在本地文件中,可以使用 -o,或使用 -O 參數(shù)指定使用遠(yuǎn)程主機(jī)上的文件名(如果 url 中沒(méi)有給出文件名的部分,則此操作將會(huì)失敗)curl -o gnu.html http://www.gnu.org 或者curl -O http:///www.gnu.org/index.htm
(6) 使用 -x 選項(xiàng)來(lái)使用代理進(jìn)行連接curl -x my-proxy:port ftp://ftp.somesite.com/READMEN
(7) 通過(guò)使用 curl 的 -T 選項(xiàng)來(lái)進(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 的末尾。
總的來(lái)說(shuō),curl 適合用來(lái)進(jìn)行自動(dòng)的文件傳輸或操作序列,它是一個(gè)很好的模擬用戶在網(wǎng)頁(yè)瀏覽器上的行為的工具。尤其當(dāng)需要在程序中調(diào)用時(shí),libcurl 是個(gè)很好的選擇。
傳輸速度
因?yàn)榻?jīng)常在服務(wù)器見(jiàn)進(jìn)行文件傳輸,就對(duì)傳輸速度和帶寬有要求,這里總結(jié)一下可以影響以上rcp,scp,rsync,ftp,sftp,lftp,wget,curl這6個(gè)命令的傳輸速度和帶寬的參數(shù):
(1) rcp:沒(méi)有參數(shù)可以調(diào)整帶寬和傳輸速度
(2) scp:如果傳輸?shù)奈募](méi)有壓縮,可以使用-C參數(shù)(-C 使能壓縮選項(xiàng))。-c 選擇使用那個(gè)加密算法,具體對(duì)應(yīng)到ssh的-c cipher-spec,這個(gè)參數(shù)值會(huì)被傳給ssh,可選擇值3des,blowfish,des),使用blowfish會(huì)快很多,可以參看man ssh 中的-c cipher-spec。可以使用-l 限制使用帶寬,Kbit/s。避免因?yàn)閭鬏斘募绊懫渌绦蚴褂脦挕?o ssh_option使用ssh選項(xiàng)
(3) rsync:-B, --block-size=SIZE 檢驗(yàn)算法使用的塊尺寸,默認(rèn)是700字節(jié);-z, --compress 對(duì)備份的文件在傳輸時(shí)進(jìn)行壓縮處理;--bwlimit=KBPS 限制I/O帶寬,KBytes per second ;-e, --rsh=COMMAND 指定使用rsh、ssh方式進(jìn)行數(shù)據(jù)同步
(4) ftp:FTP>ascii 將文檔傳送類型配置為默認(rèn)的 ASCII。說(shuō)明:linux ftp命令參數(shù)支持兩種文檔傳送類型,ASCII 碼和二進(jìn)制圖像,在傳送文本文檔時(shí)應(yīng)該使用ASCII。Binary二進(jìn)制傳輸。
(5) sftp: -B buffer_size, -C使用壓縮,-ossh_option使用ssh選項(xiàng)
(6) lftp:可以調(diào)整進(jìn)程數(shù)等
(7) wget: --limit-rate=amount限制帶寬。
(8) curl:-B/--use-ascii和--ciphers<list of ciphers>,--compressed等。
總結(jié)
(1) 傳輸性能:wget 通過(guò)支持后臺(tái)執(zhí)行及斷點(diǎn)續(xù)傳提高文件傳輸效率; rsync 則以其高效的傳輸及壓縮算法達(dá)到快傳輸?shù)哪康摹?/strong>
(2) 配置難度:rcp 只需進(jìn)行簡(jiǎn)單的配置,創(chuàng)建.rhost文件以及設(shè)置/etc/hosts文件中主機(jī)名與IP地址列表; wget設(shè)置方便簡(jiǎn)單,只需在客戶端指定參數(shù)執(zhí)行命令即可; rsync 在使用前需要對(duì)服務(wù)端/etc/rsyncd.conf 進(jìn)行參數(shù)設(shè)定,配置內(nèi)容相對(duì)復(fù)雜。
(3) 安全性能:ftp、rcp不保證傳輸?shù)陌踩?#xff0c;scp、rsync則均可基于ssh 認(rèn)證進(jìn)行傳輸,提供了較強(qiáng)的安全保障。wget 也可通過(guò)指定安全協(xié)議做到安全傳輸。
通過(guò)上述的對(duì)比不難發(fā)現(xiàn),每種文件傳輸方法基于其自身的特點(diǎn)與優(yōu)勢(shì)均有其典型的適用場(chǎng)景:
(1) ftp 作為最常用的入門式的文件傳輸方法,使用簡(jiǎn)單,易于理解,并且可以實(shí)現(xiàn)腳本自動(dòng)化;但是需要安裝ftp server才可以訪問(wèn)遠(yuǎn)程ftp server
(2) rcp 相對(duì)于ftp可以保留文件屬性并可遞歸的拷貝子目錄;
(3) scp 利用ssh傳輸數(shù)據(jù),并使用與ssh相同的認(rèn)證模式,相對(duì)于rcp提供更強(qiáng)的安全保障;
(4) wget實(shí)現(xiàn)遞歸下載,可跟蹤HTML頁(yè)面上的鏈接依次下載來(lái)創(chuàng)建遠(yuǎn)程服務(wù)器的本地版本,完全重建原始站點(diǎn)的目錄結(jié)構(gòu),適合實(shí)現(xiàn)遠(yuǎn)程網(wǎng)站的鏡像;
(5) curl 則適合用來(lái)進(jìn)行自動(dòng)的文件傳輸或操作序列,是一個(gè)很好的模擬用戶在網(wǎng)頁(yè)瀏覽器上的行為的工具;
(6) rsync 更適用于大數(shù)據(jù)量的每日同步,拷貝的速度很快,相對(duì)wget來(lái)說(shuō)速度快且安全高效。
(7) sftp使用在數(shù)據(jù)連接上使用ssh2,所以文件的傳輸是盡可能地安全。但傳輸速度慢。是ftp的替代品,比f(wàn)tp安全,不能訪問(wèn)http資源。
(8) lftp可以訪問(wèn)ftp資源,也可以訪問(wèn)http資源。支持?jǐn)帱c(diǎn)續(xù)傳,多進(jìn)程下載。
========================================================
1. Linux 終端連接FTP
[oracle@Dave ~]$ ftp 10.85.7.97
Connected to 10.85.7.97.
220 Serv-U FTP Server v6.4 for WinSock ready...
500 'AUTH': command not understood.
500 'AUTH': command not understood.
KERBEROS_V4 rejected as an authentication type
Name (10.85.7.97:oracle): super
331 User name okay, need password.
Password: -- Linux 的密碼是不回顯的
230 User logged in, proceed.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
如果FTP 允許匿名用戶,那么用戶名要輸入anonymous,密碼任意。 不能直接敲回車。
2. 查看FTP 命令
ftp> ?
Commands may be abbreviated. Commands are:
! cr mdir proxy send
$ delete mget sendport site
account debug mkdir put size
append dir mls pwd status
ascii disconnect mode quit struct
bell form modtime quote system
binary get mput recv sunique
bye glob newer reget tenex
case hash nmap rstatus trace
ccc help nlist rhelp type
cd idle ntrans rename user
cdup image open reset umask
chmod lcd passive restart verbose
clear ls private rmdir ?
close macdef prompt runique
cprotect mdelete protect safe
可以通過(guò)help command 查看每個(gè)命令的說(shuō)明
ftp> help put
put send one file
ftp> help mput
mput send multiple files
3. 上傳文件
Put命令:格式:put local-file [remote-file] 將一個(gè)文件上傳到ftp
Mput命令:格式:mput local-files 將本地主機(jī)中一批文件傳送至遠(yuǎn)端主機(jī).
注意:mput命令只能將當(dāng)前本地目錄下的文件上傳到FTP上的當(dāng)前目錄。比如,在 /root/dave下運(yùn)行的ftp命令,則只有在/root/dave下的文件linux才會(huì)上傳到服務(wù)器上的當(dāng)前目錄下。
Put 代碼示例:
ftp> pwd -- 顯示FTP上當(dāng)前路徑
257 "/" is current directory.
ftp> ls -- 顯示當(dāng)前目錄下的文件
227 Entering Passive Mode (10,85,7,97,16,141)
150 Opening ASCII mode data connection for /bin/ls.
drw-rw-rw- 1 user group 0 Aug 17 16:11 .
drw-rw-rw- 1 user group 0 Aug 17 16:11 ..
-rw-rw-rw- 1 user group 1433088 Feb 5 2010 ASPAJAXExtSetup_PConline_PConline.msi
-rw-rw-rw- 1 user group 197626837 Mar 8 10:00 DelphiV7.0.zip
drw-rw-rw- 1 user group 0 Jul 9 10:17 HHT
-rw-rw-rw- 1 user group 9235148 Dec 24 2009 Install_HSKey_V1.3.exe
-rw-rw-rw- 1 user group 47316992 May 27 16:38 Release_4.rar
ftp> mkdir Dave -- 創(chuàng)建文件夾Dave
257 "/Dave" directory created.
ftp> cd Dave -- 進(jìn)入文件夾Dave
250 Directory changed to /Dave
ftp> pwd -- 顯示當(dāng)前目錄
257 "/Dave" is current directory.
ftp> lcd -- 顯示當(dāng)前本地的路徑,我們可以將這個(gè)路徑下的這個(gè)文件上傳到FTP服務(wù)器的相關(guān)位置
Local directory now /home/oracle
ftp> ! -- 退出當(dāng)前的窗口,返回Linux 終端,當(dāng)我們退出終端的時(shí)候,又會(huì)返回到FTP上。
[oracle@Dave ~]$ ls -- 顯示當(dāng)前目錄下的文件
dead.letter scripts sqlnet.log
[oracle@Dave ~]$ vi Dave -- 創(chuàng)建文件 Dave
[oracle@Dave ~]$ vi DBA -- 創(chuàng)建文件 DBA
[oracle@Dave ~]$ ls -- 顯示文件夾里的內(nèi)容,等會(huì)我們將這些文件copy到FTP上
Dave DBA dead.letter scripts sqlnet.log
[oracle@Dave ~]$ exit -- 退出終端,返回FTP命令行
exit
ftp> lcd
Local directory now /home/oracle
ftp> put DBA DBA -- 將剛才創(chuàng)建的文件DBA 上傳到ftp的當(dāng)前目錄上并命名為DBA。
local: DBA remote: DBA
227 Entering Passive Mode (10,85,7,97,16,156)
150 Opening BINARY mode data connection for DBA.
226 Transfer complete.
5 bytes sent in 3.3e-05 seconds (1.5e+02 Kbytes/s)
ftp> put DBA /Dave/SFDBA -- 將剛才創(chuàng)建的文件DBA 上傳到ftp的當(dāng)前目錄上并重命名為SFDBA。
local: DBA remote: /Dave/SFDBA
227 Entering Passive Mode (10,85,7,97,16,158)
150 Opening BINARY mode data connection for SFDBA.
226 Transfer complete.
5 bytes sent in 1.8e-05 seconds (2.7e+02 Kbytes/s)
ftp> put /home/oracle/DBA /test/SFDBA?
local: /home/oracle/DBA remote: /test/SFDBA
227 Entering Passive Mode (10,85,7,97,16,163)
150 Opening BINARY mode data connection for SFDBA.
226 Transfer complete.
5 bytes sent in 2.2e-05 seconds (2.2e+02 Kbytes/s)
ftp> cd test
250 Directory changed to /test
ftp> ls
227 Entering Passive Mode (10,85,7,97,16,169)
150 Opening ASCII mode data connection for /bin/ls.
drw-rw-rw- 1 user group 0 Aug 17 17:11 .
drw-rw-rw- 1 user group 0 Aug 17 17:11 ..
-rw-rw-rw- 1 user group 5 Aug 17 17:11 SFDBA
-rw-rw-rw- 1 user group 5508 Aug 17 16:21 sqlnet.log
226 Transfer complete.
Mput 示例代碼:
ftp> cd Dave
250 Directory changed to /Dave
ftp> mput *
mput alert_log.txt? -- 這里每個(gè)文件都要確認(rèn),按回車鍵就可以了
227 Entering Passive Mode (10,85,7,97,16,196)
150 Opening BINARY mode data connection for alert_log.txt.
226 Transfer complete.
712 bytes sent in 2.9e-05 seconds (2.4e+04 Kbytes/s)
mput alert_newccs.hist?
227 Entering Passive Mode (10,85,7,97,16,197)
150 Opening BINARY mode data connection for alert_newccs.hist.
226 Transfer complete.
9321666 bytes sent in 0.78 seconds (1.2e+04 Kbytes/s)
mput alert_newccs.log?
227 Entering Passive Mode (10,85,7,97,16,198)
150 Opening BINARY mode data connection for alert_newccs.log.
226 Transfer complete.
21707 bytes sent in 0.0014 seconds (1.5e+04 Kbytes/s)
ftp> ls -- 顯示目錄下的文件
227 Entering Passive Mode (10,85,7,97,16,217)
150 Opening ASCII mode data connection for /bin/ls.
drw-rw-rw- 1 user group 0 Aug 17 17:22 .
drw-rw-rw- 1 user group 0 Aug 17 17:22 ..
-rw-rw-rw- 1 user group 5 Aug 17 17:09 SFDBA
-rw-rw-rw- 1 user group 712 Aug 17 17:21 alert_log.txt
-rw-rw-rw- 1 user group 9321666 Aug 17 17:21 alert_newccs.hist
-rw-rw-rw- 1 user group 21707 Aug 17 17:21 alert_newccs.log
226 Transfer complete.
ftp> delete SFDBA --刪除SFDBA 文件
250 DELE command successful.
ftp> mdelete a* -- 批量刪除文件
mdelete alert_log.txt? -- 每個(gè)文件都要確認(rèn)
250 DELE command successful.
mdelete alert_newccs.hist?
250 DELE command successful.
mdelete alert_newccs.log?
250 DELE command successful.
4. 下載文件
同樣也有2個(gè)命令: get 和 mget。 Mget 用戶批量下載。
格式:get [remote-file] [local-file]
mget [remote-files]
同樣,mget 是將文件下載到本地的當(dāng)前目錄下。
Get 示例:
ftp> get /test/SFDBA /home/SFDBA
local: /home/SFDBA remote: /test/SFDBA
local: /home/SFDBA: Permission denied --Linux對(duì)權(quán)限控制的很嚴(yán)格,下載的時(shí)候是否有對(duì)應(yīng)文件夾的寫(xiě)權(quán)限
ftp> get /test/SFDBA /home/oracle/SFDBA
local: /home/oracle/SFDBA remote: /test/SFDBA
227 Entering Passive Mode (10,85,7,97,17,0)
150 Opening BINARY mode data connection for SFDBA (5 Bytes).
226 Transfer complete.
5 bytes received in 6.2e-05 seconds (79 Kbytes/s)
ftp> !
[oracle@Dave bdump]$ cd /home/oracle/
[oracle@Dave ~]$ ls
Dave DBA dead.letter scripts SFDBA sqlnet.log
Mget 示例:
ftp> ls
227 Entering Passive Mode (10,85,7,97,17,10)
150 Opening ASCII mode data connection for /bin/ls.
drw-rw-rw- 1 user group 0 Aug 17 17:38 .
drw-rw-rw- 1 user group 0 Aug 17 17:38 ..
-rw-rw-rw- 1 user group 5 Aug 17 17:38 DBA
-rw-rw-rw- 1 user group 12 Aug 17 17:38 Dave
-rw-rw-rw- 1 user group 5 Aug 17 17:11 SFDBA
226 Transfer complete.
ftp> mget *
mget DBA? -- 每個(gè)文件都要確認(rèn), 按回車即可
227 Entering Passive Mode (10,85,7,97,17,12)
150 Opening BINARY mode data connection for DBA (5 Bytes).
226 Transfer complete.
5 bytes received in 8.1e-05 seconds (60 Kbytes/s)
mget Dave?
227 Entering Passive Mode (10,85,7,97,17,13)
150 Opening BINARY mode data connection for Dave (12 Bytes).
226 Transfer complete.
12 bytes received in 8.3e-05 seconds (1.4e+02 Kbytes/s)
mget SFDBA?
227 Entering Passive Mode (10,85,7,97,17,14)
150 Opening BINARY mode data connection for SFDBA (5 Bytes).
226 Transfer complete.
5 bytes received in 9e-05 seconds (54 Kbytes/s)
ftp> !
[oracle@Dave ~]$ ls
Dave DBA dead.letter scripts SFDBA sqlnet.log
說(shuō)明的地方:FTP 當(dāng)前目錄下的文件下載到本地的當(dāng)前目錄。
5. 斷開(kāi)FTP 連接
Bye命令或者quit命令:中斷與服務(wù)器的連接。
ftp> bye
221 Goodbye!
FROM:http://blog.csdn.net/emili/article/details/6858818
http://blog.csdn.net/tianlesoftware/article/details/5818990
轉(zhuǎn)載于:https://www.cnblogs.com/nkwy2012/p/6225539.html
總結(jié)
以上是生活随笔為你收集整理的Linux下不同服务器间数据传输的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Java程序员的日常—— Arrays工
- 下一篇: 数据库中间件支持数据库集群方案