由於工做緣由,須要常常在不一樣的服務器見進行文件傳輸,特別是大文件的傳輸,所以對linux下不一樣服務器間數據傳輸命令和工具進行了研究和總結。主要是rcp,scp,rsync,ftp,sftp,lftp,wget,curl。html
rcp
rcp不是一種安全的的傳輸文件的方式,rcp經過rsh(rsh見下面)來執行遠程命令,要使用rcp必須通過一些配置,如今rcp已經被scp取代了,經常使用scp來進行文件傳輸。要使用rcp,須要具有如下條件:linux
(1)若是系統中有/etc/hosts 文件,應確保該文件包含要與之進行通訊的遠程主機信息:internet_address official_name alias。例如:1.186.10.*** blade1.ibm.com.cnblade算法
(2).rhosts 文件:.rhosts 文件位於遠程系統的根目錄下,其中包含本地系統的名稱和本地登陸名。例如,遠程系統的 .rhosts 文件中的項多是:blade1 root;其中,blade1 是本地系統的名稱,root 是本地登陸名。這樣,blade1 上的 root 便可在包含 .rhosts 文件的遠程系統中來回複製文件。sql
配置過程:shell
(1) 在雙方root用戶根目錄下創建.rhosts文件,並將雙方的hostname加進去.在此以前應在雙方的 /etc/hosts文件中加入對方的IP和hostname瀏覽器
(2) 把rsh服務啓動起來,redhat默認是不啓動的。方法:用執行ntsysv命令,在rsh選項前用空格鍵選中,肯定退出。而後執行:service xinetd restart便可。若是沒有rsh,請見下面rsh部分安全
(3) 到/etc/pam.d/目錄下,把rsh文件中的auth required /lib/security/pam_securetty.so一行用「#」註釋掉便可。(只有註釋掉這一行,才能用root用戶登陸)bash
命令使用:服務器
rcp [options] [[user@]host1:]file1 ...[[user@]host2:]file2網絡
options:
-r 遞歸地把源目錄中的全部內容拷貝到目的目錄中。
-p 試圖保留源文件的修改時間和模式,忽略umask。
rsh(remote shell,它不夠安全):rsh使用條件同rcp,rsh配置過程(以root爲例)
(1) 在服務器上運行/urs/bin/ntsysv選中rexec,rlogin,rsh三項服務。
(2) 運行#/sbin/service xinetd restart啓動該三項服務。
(3) 運行echo"rexec">>/etc/securetty; echo"rlogin">>/etc/securetty; echo"rsh">>/etc/securetty
(4) 在服務器上運行echo"你的ip地址root">>/root/.rhosts或者echo"你的主機名root">>/root/.rhosts且確保在服務器上的/etc/hosts中有主機名和ip地址的映射關係
(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,是用來進行遠程文件拷貝的。數據傳輸使用 ssh,而且和ssh 使用相同的認證方式,提供相同的安全保證。 與rcp 不一樣的是,scp 在須要進行驗證時會要求你輸入密碼或口令。
scp [options] [本地用戶名@IP地址:]file1 [遠程用戶名 @IP 地址 :] file2
options:
-v 用來顯示進度,能夠用來查看鏈接,認證,或是配置錯誤。
-C 使能壓縮選項。
-c 選擇使用那個加密算法(具體對應到ssh的-c cipher-spec,這個參數值會被傳給ssh,可選擇值3des,blowfish,des),使用blowfish會快不少,能夠參看man ssh 中的-c cipher-spec
-P 選擇端口
-r 遞歸拷貝整個目錄
-l 限制使用帶寬,Kbit/s
-o 指定傳給ssh的一些參數值,好比Compression=yes
-p 保留文件的修改時間等信息。
rsync
rsync是rcp的替代品之一,rsync 是一款高效的遠程數據備份和鏡象工具,可快速地同步多臺主機間的文件,其具備以下特性:
l 支持連接、全部者、組信息以及權限信息的拷貝;
l 經過遠程 shell(ssh, rsh)進行傳輸;
l 無須特殊權限便可安裝使用;
l 流水線式文件傳輸模式,文件傳輸效率高;
l 支持匿名操做;
須要說起的是 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 上。
經過上述計算,主機 A 將文件的不一樣部分發送給 B,B 接收到兩個拷貝之間的不一樣之處,從而同步獲得更新後的文件。經過如上方式,rsync 避免了對相同數據的傳輸,減小了網絡帶寬的浪費。在時間上整個過程當中需一個往返,從某種程度上也保證了 rsync 的優越性能。
Rsync能夠經過兩種方式來鏈接遠程服務器,一種是經過類shell命令的方式,一種是經過rsync daemon的方式,rsync daemon須要進行安裝和配置,具體以下:
可從官方網站http://rsync.samba.org/ 上下載安裝 rsync 的最新版本。使用時需將 rsync 分別安裝於服務端和客戶端,服務端和客戶端使用同一個 rsync 軟件包來實現遠程鏡像和按期同步更新。須要說明的是一個 rsync 服務端可同時備份多個客戶端的數據;多個服務端備份一個客戶端的數據。 rsync 默認端口爲 873,服務器在該端口接收客戶的匿名或者認證方式的備份請求。
rsync 服務端在使用以前須要進行必要的配置,其配置文件爲 /etc/rsyncd.conf,進行認證、訪問、日誌記錄等控制。配置文件包括全局參數、模塊參數的設置。 rsyncd.conf 文件中 [module] 以前的全部參數爲全局參數,也能夠在全局參數部分定義模塊參數,在這種狀況下該參數的值就是全部模塊的默認值。全局參數設置程序使用的端口號,指定消息文件、日誌文件 pid 文件以及發送日誌消息的級別。模塊參數主要定義服務端哪一個目錄須要被同步。用戶可根據不一樣的須要指定多個模塊,每一個模塊對應須要備份的一個目錄樹,即如有 N 個須要備份的目錄樹,則須要 N 個模塊與之對應。模塊中能夠定義許多參數,常見參數以下。
l Comment 模塊信息描述,該描述連同模塊名在客戶鏈接獲得模塊列表時顯示給客戶。默認沒有描述定義。
l Path 指定供備份的目錄路徑,必須指定該參數。
l max connections 指定最大併發鏈接數以保護服務器,超過限制的鏈接請求將被告知隨後再試。默認值爲 0,即沒有限制。
l log file 指定日誌文件
l read only 設定是否容許客戶上載文件。若爲 true 任何上載請求均會失敗,若爲 false 且客戶端擁有服務器目錄讀寫權限則能夠上載。默認值爲 true 。
l write only 設定是否容許客戶下載文件。若爲 true 任何下載請求均會失敗,默認值爲 false 。
l List 設定當客戶請求可使用的模塊列表時,是否列出該模塊。若爲 false,則建立隱藏的模塊。默認值爲 true 。
l fake super 容許文件享有全部權限,而無需後臺服務以 root 權限進行操做。
l Filter 設置過濾列表以決定哪些文件可由客戶端訪問。
l hosts allow 指定容許客戶鏈接的 IP 地址。能夠爲單個 IP 地址或整個網段。多個 IP或網段須要以空格隔開。默認是容許全部主機鏈接。
l dont compress 指定不進行壓縮處理便可傳輸的文件,默認值是 *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz
l pre-xfer exec, post-xfer exec 設置可在文件傳輸前/後執行的命令。若在文件傳輸前執行的命令失敗,則取消本次傳輸操做。
須要注意的是服務器端啓動:/usr/bin/rsync--daemon --config=/etc/rsyncd/rsyncd.conf
鏈接遠程服務器的兩種方式的基本語法
(1) 經過遠程 shell 方式:
l rsync [OPTION] [USER@]HOST:SRC DEST:用遠程 shell(如 ssh, rsh)實現將遠程機器的內容拷貝到本地機器。 SRC 地址路徑中以單個冒號 ":" 進行分隔。
l rsync [OPTION] SRC [USER@]HOST:DEST:使用遠程 shell(如 rsh、ssh)實現本地機器的內容拷貝到遠程機器。 DEST 地址路徑中以單個冒號 ":" 進行分隔。
(2) 經過 rsync daemon 方式:
l rsync [OPTION] [USER@]HOST::SRC DEST 或rsync [OPTION]rsync://[USER@]HOST[:PORT]/SRC [DEST]:從遠程 rsync 服務器中拷貝文件到本地機。SRC 地址路徑中以雙冒號 "::" 進行分隔。
l rsync [OPTION] SRC [USER@]HOST::DEST 或rsync [OPTION] SRCrsync://[USER@]HOST[:PORT]/DEST:從本地機器拷貝文件到遠程 rsync 服務器中。 DEST 地址路徑中以雙冒號 "::" 進行分隔。
若是 rsync 命令中只指定 SRC 參數而不指定 DEST 參數,則意爲顯示源文件列表而非進行同步拷貝。
Options:
options:
-v,--verbose 詳細模式輸出
-q,--quiet 精簡輸出模式
-c,--checksum 打開校驗開關,強制對文件傳輸進行校驗
-a,--archive 歸檔模式,表示以遞歸方式傳輸文件,並保持全部文件屬性,等於-rlptgoD
-r,--recursive 對子目錄以遞歸模式處理
-R,--relative 使用相對路徑信息
-b,--backup 建立備份,也就是對於目的已經存在有一樣的文件名時,將老的文件從新命名爲~filename。可使用--suffix選項來指定不一樣的備份文件前綴。
--backup-dir將備份文件(如~filename)存放在在目錄下。
-suffix=SUFFIX定義備份文件前綴
-u,--update 僅僅進行更新,也就是跳過全部已經存在於DST,而且文件時間晚於要備份的文件。(不覆蓋更新的文件)
-l,--links 保留軟鏈結
-L,--copy-links 想對待常規文件同樣處理軟鏈結
--copy-unsafe-links僅僅拷貝指向SRC路徑目錄樹之外的鏈結
--safe-links忽略指向SRC路徑目錄樹之外的鏈結
-H,--hard-links 保留硬鏈結
-p,--perms 保持文件權限
-o,--owner 保持文件屬主信息
-g, --group 保持文件屬組信息
-D,--devices 保持設備文件信息
-t,--times 保持文件時間信息
-S,--sparse 對稀疏文件進行特殊處理以節省DST的空間
-n,--dry-run現實哪些文件將被傳輸
-W,--whole-file 拷貝文件,不進行增量檢測
-x,--one-file-system 不要跨越文件系統邊界
-B,--block-size=SIZE 檢驗算法使用的塊尺寸,默認是700字節
-e,--rsh=COMMAND 指定使用rsh、ssh方式進行數據同步
--rsync-path=PATH指定遠程服務器上的rsync命令所在路徑信息
-C,--cvs-exclude 使用和CVS同樣的方法自動忽略文件,用來排除那些不但願傳輸的文件
--existing僅僅更新那些已經存在於DST的文件,而不備份那些新建立的文件
--delete刪除那些DST中SRC沒有的文件
--delete-excluded一樣刪除接收端那些被該選項指定排除的文件
--delete-after傳輸結束之後再刪除
--ignore-errors及時出現IO錯誤也進行刪除
--max-delete=NUM最多刪除NUM個文件
--partial保留那些因故沒有徹底傳輸的文件,以是加快隨後的再次傳輸
--force強制刪除目錄,即便不爲空
--numeric-ids不將數字的用戶和組ID匹配爲用戶名和組名
--timeout=TIMEIP超時時間,單位爲秒
-I,--ignore-times 不跳過那些有一樣的時間和長度的文件
--size-only當決定是否要備份文件時,僅僅察看文件大小而不考慮文件時間
--modify-window=NUM決定文件是否時間相同時使用的時間戳窗口,默認爲0
-T--temp-dir=DIR 在DIR中建立臨時文件
--compare-dest=DIR一樣比較DIR中的文件來決定是否須要備份
-P等同於 --partial
--progress顯示備份過程
-z,--compress 對備份的文件在傳輸時進行壓縮處理
--exclude=PATTERN指定排除不須要傳輸的文件模式
--include=PATTERN指定不排除而須要傳輸的文件模式
--exclude-from=FILE排除FILE中指定模式的文件
--include-from=FILE不排除FILE指定模式匹配的文件
--version打印版本信息
--address綁定到特定的地址
--config=FILE指定其餘的配置文件,不使用默認的rsyncd.conf文件
--port=PORT指定其餘的rsync服務端口
--blocking-io對遠程shell使用阻塞IO
-stats給出某些文件的傳輸狀態
--progress在傳輸時現實傳輸過程
--log-format=formAT指定日誌文件格式
--password-file=FILE從FILE中獲得密碼
--bwlimit=KBPS限制I/O帶寬,KBytes per second
-h,--help 顯示幫助信息
實例:
(1) 查看服務端文件及列表:
l rsync 9.186.110.53::查看服務端可用的模塊列表以及註釋信息;rsync ibmuser@9.186.110.53::www/查看服務端 www 模塊中的目錄及文件列表(使用 rsyncd 用戶認證方式)
l rsync ibmuser@9.186.110.53:/var/www/html/查看服務端/var/www/html 目錄中的內容(使用服務端的系統用戶進行驗證,如 ibmuser)
(2) 保持客戶端與服務端的數據同步:
l rsync -avz ibmuser@9.186.110.53::www/ /backup1/使用後臺服務方式將服務端www 模塊下的內容備份到本地 /backup1 目錄中,備份時保留原有權限、屬性、屬主及符號鏈接等,並使用壓縮方式加快數據傳輸。
l rsync – avzibmuser@9.186.110.53:/var/www/html /backup2/使用 ssh 方式將遠程的/var/www/html 目錄備份到本地 /backup2/ 目錄下
l rsync -avz --deleteibmuser@9.186.110.53::www/ /backup3/將遠程 www 模塊備份到本地/backup3/ 目錄中,同時進行同步目錄,刪除本地目錄中多餘的文件。
(3) 當服務端的數據出現問題時,須要經過客戶端的數據對服務端進行恢復,只要客戶端有服務端的寫入權限,便可經過調換 rsync 命令的 SRC、DEST 參數進行恢復。
ftp
ftp命令使用文件傳輸協議(FileTransfer Protocol ,FTP)在本地主機和遠程主機之間或者兩個遠程主機之間進行文件傳輸。FTP 協議容許數據在不一樣文件系統的主機之間傳輸。儘管這個協議在傳輸數據上提供了高適應性,可是它並無嘗試去保留一個特定文件系統上的文件屬性(例如一個文件的保護模式或者修改次數)。並且 FTP 協議不多對一個文件系統的總體結構做假定,也不提供這樣的功能,好比遞歸的拷貝子目錄。在使用 ftp 命令時,須要注意 FTP 協議的這些特性。當須要保留文件屬性或者須要遞歸的拷貝子目錄時,可使用 rcp/scp 等命令。
若是須要將文件以ftp傳輸到目的服務器上,必須在目的服務器上安裝ftp server,基本的安裝和啓動過程以下:
根據服務對象的不一樣,FTP服務能夠分爲兩類:一類是系統FTP服務器,它只容許系統上的合法用戶使用;另外一類是匿名FTP服務器,它容許任何人登陸到FTP服務器,和服務器鏈接後,在登陸提示中輸入Anonymous,便可訪問服務器。
Yum list *ftp* (找到可用的Ftp包)
sudo yum install ftp包
手工啓動和關閉:啓動:/usr/sbin/ftprestart 關閉:/usr/sbin/ftpshut
FTP服務器的配置:爲了確保FTP服務器安全,必須設置一些重要的配置文件,以更好地控制用戶的訪問權限。這些配置文件是:/etc/ftpusers;/etc/ftpconversions;/etc/ftp-groups;/etc/ftpphosts;/etc/ftpaccess。利用這些文件,可以很是精確地控制哪些人、在什麼時間、從什麼地點能夠鏈接服務器,而且能夠對他們鏈接後所作的工做進行檢查跟蹤。
(1) /etc/ftpusers:該文件夾中包含的用戶不能經過FTP登陸服務器,有時將須要禁止的用戶帳號寫入文件/etc/ftpuser中,這樣就能夠禁止一些用戶使用FTP服務。
(2) /etc/ftpconversions:用來配置壓縮/解壓縮程序。
(3) /etc/ftpgroups:建立用戶組,這個組中的成員預先定義能夠訪問FTP服務器。
(4) /etc/ftpphosts:用來根據禁止或容許遠程主機對特定帳戶的訪問,例如:allow czc 192.168.0.0/24 deny cdd 10.0.0.0/8(表示容許czc用戶從192.168.0這個網段連線訪問,拒絕cdd從10.這個網段連線訪問)。
(5) /etc/ftpaccess:是很是重要的一個配置文件,用來控制存取權限,文件中的每一行定義一個屬性,並對屬性的值進行設置。下面對它的一些經常使用配置作一點介紹:
l 定義用戶類別:格式:class[類名] [real/guest/anonymous][IP地址] 功能:這個指令的功能設定FTP服務器上用戶的類別。並可對客戶端的IP地址進行限制,容許特定或者所有的IP地址訪問FTP服務器。
l 登陸重試次數:在命令行中輸入:loginfails 10,這代表若是10次尚未登陸成功就切斷連線。
l 密碼檢查:格式:passwd-check〈strictness〉 warn。是對匿名用戶的密碼使用方式的檢查,其中〈strictness〉是三個可能的字符串之一:None、Trivial、RFC822。若選None,表示將不對口令作任何檢查;若選Trivial,表示對口令有必定的要求,它須要在口令中至少要有一個@符號;若選RFC822,則表示最嚴格,要求E-mail地址必須遵照RFC822報文標題標準(如:czc@domain.com )。例如:passwd-check rfc822 warn,代表密碼的要求很嚴格,當密碼不符合規定時出現警告信息。
l 登陸人數的限制:格式:limit[類別] [人數] [時間] [文件名]。設置指定類別在約定時間內能夠登陸FTP的人數。例如:limit remote Any/etc/many.msg,說明類別Remote類別在任什麼時候間內登陸人數不超過20我的,不然會顯示Many.msg警告信息。
安裝、配置好FTP服務器後,只須要在命令提示符後輸入:FTP Servername,用主機名或但願鏈接的FTP服務器的IP地址代替Servername,按照提示輸入用戶名和口令,而後用標準的Linux上移或下移FTP服務器目錄結構。另外,也能夠採用圖形化FTP程序,包括窗口式gFTP,能夠藉助Web瀏覽器去訪問FTP服務器。
在登陸上ftp後,可使用以下ftp命令進行操做:
l FTP> ! 從 ftp 子系統退出到外殼
l FTP> ? 顯示 ftp 命令說明,和 help 相同,格式:? [command]說明:[command]指定須要幫助的命令名稱。假如沒有指定 command,linux ftp命令參數將顯示所有命令的列表。
l FTP> append 使用當前文檔類型配置將本地文檔附加到遠程電腦上的文檔。格式:append local-file [remote-file],說明:local-file 指定要添加的本地文檔,remote-file指定要添加 local-file 的遠程電腦上的文檔。假如省略了 remote-file,本地文檔名將被用做遠程文檔名。
l FTP> ascii 將文檔傳送類型配置爲默認的 ASCII。說明:linux ftp命令參數支持兩種文檔傳送類型,ASCII 碼和二進制圖像,在傳送文本文檔時應該使用ASCII。
l FTP> bell 轉換響鈴以在每一個文檔傳送命令完成後響鈴??默認狀況下,鈴聲是關閉的。
l FTP> binary(或bi) 將文檔傳送類型配置爲二進制
l FTP> bye(或by) 結束和遠程電腦的linux ftp命令參數會話並退出linux ftp命令參數。
l FTP> cd 更改遠程電腦上的工做目錄。格式:cd remote-directory,說明:remote-directory 指定要更改的遠程電腦上的目錄。
l FTP> close 結束和遠程服務器的linux ftp命令參數會話並返回命令解釋程式。
l FTP> debug 轉換調試。當調試打開時,發送到遠程電腦的每一個命令都打印,前面是字符串">"。默認狀況下,調試是關閉的。
l FTP> delete 刪除遠程電腦上的文檔。格式:delete remote-file,說明:remote-file 指定要刪除的文檔。
l FTP> dir 顯示遠程目錄文檔和子目錄列表。格式:dir [remote-directory] [local-file],說明:remote-directory 指定要查看其列表的目錄。假如沒有指定目錄,將使用遠程電腦中的當前工做目錄。Local-file 指定要存儲列表的本地文檔。假如沒有指定,輸出將顯示在屏幕上。
l FTP> disconnect 從遠程電腦斷開,保留linux ftp命令參數提示。
l FTP> get 使用當前文檔轉換類型將遠程文檔複製到本地,格式:get remote-file [local-file],說明:remote-file 指定要複製的遠程文檔,Local-file指定要在本地電腦上使用的名稱,假如沒有指定,文檔將命名爲 remote-file。
l FTP>glob 轉換文檔名組合,組合容許在內部文檔或路徑名中使用通配符(*和?),默認狀況下,組合是打開的。
l FTP>hash 轉換已傳輸的每一個數據塊的數字簽名 (#) 打印,數據塊的大小是2048 字節,默認狀況下,散列符號打印是關閉的。
l FTP>help 顯示linux ftp命令參數命令說明。格式:help [command], 說明:command 指定須要有關說明的命令的名稱,假如沒有指定 command,linux ftp命令參數將顯示所有命令的列表。
l FTP>lcd 更改本地電腦上的工做目錄,默認狀況下,工做目錄是啓動linux ftp命令參數的目錄。格式:lcd [directory],說明:directory 指定要更改的本地電腦上的目錄,假如沒有指定directory,將顯示本地電腦中當前的工做目錄。
l FTP>literal 將參數逐字發送到遠程linux ftp命令參數服務器,將返回單個的linux ftp命令參數回覆代碼,格式:literal argument [ ...],說明:argument 指定要發送到linuxftp命令參數服務器的參數。
l FTP>ls 顯示遠程目錄文檔和子目錄的縮寫列表,格式:ls [remote-directory] [local-file],說明:remote-directory 指定要查看其列表的目錄,假如沒有指定目錄,將使用遠程電腦中的當前工做目錄,local-file 指定要存儲列表的本地文檔??假如沒有指定,輸出將顯示在屏幕上。
l FTP>mdelete 刪除遠程電腦上的文檔,格式:mdelete remote-files [ ...],說明:remote-files 指定要刪除的遠程文檔。
l FTP>mdir 顯示遠程目錄文檔和子目錄列表,可以使用 mdir 指定多個文檔,格式:mdir remote-files [ ...] local-file,說明:remote-files 指定要查看列表的目錄,必須指定 remote-files,請鍵入 - 使用遠程電腦上的當前工做目錄。local-file 指定要還原列表的本地文檔,請鍵入- 在屏幕上顯示列表。
l FTP>mget 使用當前文檔傳送類型將遠程文檔複製到本地電腦,格式:mget remote-files [ ...],說明:remote-files 指定要複製到本地電腦的遠程文檔。
l FTP>mkdir 建立遠程目錄,格式:mkdir directory,說明:directory 指定新的遠程目錄的名稱。
l FTP>mls 顯示遠程目錄文檔和子目錄的縮寫列表,格式:mls remote-files [ ...] local-file,說明:remote-files 指定要查看列表的文檔??必須指定remote-files;,請鍵入- 使用遠程電腦上的當前工做目錄。local-file 指定要存儲列表的本地文檔,請鍵入 - 以在屏幕上顯示列表。
l FTP>mput 使用當前文檔傳送類型將本地文檔複製到遠程電腦上。格式:mput local-files [ ...],說明:local-files 指定要複製到遠程電腦的本地文檔。
l FTP>open 和指定的linux ftp命令參數服務器鏈接,格式:open computer [port],說明:computer 指定要鏈接的遠程電腦??可以經過 IP 地址或電腦名稱指定電腦(DNS 或主機文檔必須可用),假如自動登陸打開(默認),ftp 還將嘗試自動將用戶登陸到linux ftp命令參數服務器port 指定用來聯繫linux ftp命令參數服務器的端口號。
l FTP>prompt 轉換提示,假如關閉提示時 mget 及 mput 傳送任何文檔,linux ftp命令參數在多文檔傳送過程當中將提示容許您有選擇地檢索或存儲文檔,默認狀況下,提示是打開的。
l FTP>put 使用當前文檔傳送類型將本地文檔複製到遠程電腦上,格式:put local-file [remote-file],說明:local-file 指定要複製的本地文檔,remote-file指定要在遠程電腦上使用的名稱??假如沒有指定,文檔將命名爲 local-file。
l FTP>pwd 顯示遠程電腦上的當前目錄。
l FTP>quit 結束和遠程電腦的linux ftp命令參數會話並退出linux ftp命令參數。
l FTP>quote 將參數逐字發送到遠程linux ftp命令參數服務器,將返回單個的linux ftp命令參數回覆代碼。
l FTP>recv 使用當前文檔傳送類型將遠程文檔複製到本地電腦,Recv 和 get相同。格式:recv remote-file [local-file],說明:remote-file 指定要複製的遠程文檔,local-file指定要在本地電腦上使用的名稱,假如沒有指定,文檔將命名爲 remote-file。
l FTP>remotehelp 顯示遠程命令幫助,格式:remotehelp [command],說明:command 指定須要幫助的命令的名稱,假如沒有指定 command,linux ftp命令參數將顯示所有遠程命令的列表。
l FTP>rename 重命名遠程文檔,格式:rename filename newfilename,說明:filename 指定要重命名的文檔,newfilename指定新的文檔名。
l FTP>rmdir 刪除遠程目錄,格式:rmdir directory,說明:directory 指定要刪除的遠程目錄的名稱。
l FTP>send 使用當前文檔傳送類型將本地文檔複製到遠程電腦上,Send 和put 相同,格式:send local-file [remote-file],說明:local-file 指定要複製的本地文檔,remote-file指定要在遠程電腦上使用的名稱,假如沒有指定,文檔將命名爲 local-file。
l FTP>status 顯示linux ftp命令參數鏈接和轉換的當前狀態。
l FTP>trace 轉換數據包跟蹤,Trace 在運行linux ftp命令參數命令時顯示每一個數據包的路由。
l FTP>type 配置或顯示文檔傳送類型,格式:type [type-name],說明:type-name 指定文檔傳送類型,默認配置爲 ascii,假如沒有指定type-name,將顯示當前的類型。
l FTP>user 指定遠程電腦的用戶,格式:user username [password] [account],說明:user-name 指定登陸到遠程電腦所使用的用戶名,password 指定 user-name 的密碼,假如沒有指定,但必須指定,linux ftp命令參數會提示輸入密碼。account 指定登陸到遠程電腦所使用的賬戶,假如沒有指定account,可是須要指定,linux ftp命令參數會提示您輸入賬戶。
l FTP>verbose 轉換 verbose 模式,假如打開,將顯示任何 linux ftp命令參數響應,在文檔傳送完成後,將同時顯示和傳送效率有關的統計信息,默認狀況下,verbose 是打開的。
sftp
sftp(安全文件傳輸協議)與ftp 有着幾乎同樣的語法和功能。FTP 爲 SSH的一部份,是一種傳輸檔案至 Blogger 伺服器的安全方式。它並不使用ftp守護進程(ftpd或wu-ftpd)來進行鏈接,而是有意義地加強系統的安全性。實際上,經過監視一些系統中的log文件,能夠注意到不少攻擊是針對於ftpd守護進程的。sftp避免了這些攻擊從而能夠中止在wu-ftpd上潛在的危險。SFTP自己沒有單獨的守護進程,它必須使用sshd守護進程(端口號默認是22)來完成相應的鏈接操做。使用SFTP是很是安全的。可是,因爲這種傳輸方式使用了加密/解密技術,因此傳輸效率比普通的FTP要低得多,若是您對網絡安全性要求更高時,可使用SFTP代替FTP。
用法舉例:
(1) sftproot@10.48.30.192:/root/test.sh(直接將192上的文件複製到本地)
(2) sftproot@10.48.30.192:/root (直接鏈接到192的root目錄下,這樣就可使用getput等命令了)
sftp使用在數據鏈接上使用ssh2,因此文件的傳輸是儘量地安全。使用sftp代替ftp兩個主要的的緣由是:
(1) password從不用明文傳輸,防止sniffer(嗅探器)的攻擊。
(2) 數據在傳輸時被加密,使用刺探和修改鏈接很是困難。
使用sftp2是很是簡單的。讓咱們假設你使用了你的賬戶:myname經過sftp連按上了主機host1。可使用命令:sftp myname@host1。當sftp2準備好了來接受鏈接時,它將顯示一個狀態提示符 sftp>。在sftp手冊中有完整的用戶可使用的命令列表;其中有:
l quit:從這個應用程序中退出。
l cd directory:改變當前的遠程工做目錄。
l lcd directory:改變當前的本地工做目錄。
l ls [ -r ] [ -l ] [ file ... ]:列出在遠地服務器上的文件名。若是是目錄,則列出目錄的內容。當命令行中指定了-r,則遞歸地顯示目錄樹。(默認狀況下,子目錄並不被訪問)。當命令行中指定了-l,文件與目錄的權限,屬主,大小和修改時間被列出。當沒有參數被指定,則.(當前目錄)的內容被列出。普通狀況下選項-r和-l是互相不兼容的。
l lls [ -r ] [ -l ] [ file ... ]:與ls同樣,可是是對於本地文件操做。
l get [file ...]:從遠程端傳送指定的文件到本地端。目錄內容被遞歸地複製。
l put [ file ... ]:從本地端傳送指定的文件到遠地端。目錄內容被遞歸地複製。
l mkdir dir (rmdir dir):嘗試創建或刪除參數中指定的目錄。
l 通配符對於ls,lls,get和put是支持的。格式在sshregex手冊中有描述。
從sftp使用加密技術以來,一直有一個障礙:鏈接速度慢(有2-3倍),可是這一點對於很是好的安全性來說只能放在一邊了。在一個測試中,局域網上的sniffer能夠在一個小時中捉住ftp鏈接上的4個password.。sftp的使用能夠從網絡上傳送文件而且除去這些安全問題。
lftp
lftp 是一個功能強大的下載工具,它支持訪問文件的協議: ftp, ftps, http, https, hftp, fish.(其中ftps和https須要在編譯的時候包含openssl庫)。llftp很是像一個shell: 有命令補全,歷史記錄,容許多個後臺任務執行等功能,使用起來很是方便。它還有書籤、排隊、鏡像、斷點續傳、多進程下載等功能。
命令行語法
(1) lftp [-d] [-e cmd] [-p port][-u user[,pass]] [site]
-e在選擇後執行命令
-u [,] 使用指定的用戶名/口令進行驗證
-p 鏈接指定的端口
Site:主機名,URL 或書籤的名字
(2) lftp -f script_file
執行文件中的命令後退出
(3) lftp -c commands
執行命令後退出
(4) lftp –version
顯示 lftp 版本後退出
(5) lftp --help
顯示幫助信息後退出
例子:
(1) 若是在命令行中輸入的站點名稱,lftp將直接登陸站點,好比
lftp ftp://.............
(2) 若是在命令行不輸入站點名稱,則必須在進入到lftp界面後用open命令打開
Lftp
lftp :~> open ftp://...................
經常使用命令
l 下載單個文件和一組文件,斷點續傳用-c參數
lftp ................:/> get -c ls-lR.txt
lftp ...............:/> mget *.txt
l 鏡像(反鏡像即上傳)一個目錄,能夠用多個線程並行鏡像一個目錄(--parallel=N)
lftp ................:/> mirror incoming local_name
lftp ................:/> mirror -R local_name
lftp ................:/> mirror --parallel=3 incominglocal_name
l 多線程下載,相似網絡螞蟻的功能;缺省是5個線程
lftp ................:/> pget -n 4 ls-lR.txt
l 後臺任務管理
缺省狀況下,按 Ctrl+z,正在執行的任務將轉爲後臺執行,也能夠在命令行末尾加&符號使任務在後臺執行。用jobs命令能夠查看全部的後臺進程。用queue命令能夠排隊新的任務。若是退出lftp是還有任務在後臺執行,lftp將轉爲後臺執行。
l 其它用法
lftp支持相似bash的管道操做,例如用下面的命令能夠將ftp服務器上的特定目錄下(也能夠是整個站點)全部文件的大小存到本地的文件ls.txt中
lftp ................:/> du incoming > ls.txt
相關文件
(1) /etc/lftp.conf
全局配置文件,實際位置依賴系統配置文件目錄,可能在/etc,也可能在/usr/local/etc
(2) ~/.lftp/rc, ~/.lftprc
用戶配置文件,將在/etc/lftp.conf以後執行,因此這裏面的設置會覆蓋/etc/lftp.conf中的設置。
(3) lftp 缺省不會顯示 ftp 服務器的歡迎信息和錯誤信息,這在不少時候不方便,由於你有可能想知道這個服務器究竟是由於沒開機連不上,仍是鏈接數已滿。若是是這樣,你能夠在 ~/.lftprc 裏寫入一行,debug 3,就能夠看到出錯信息了。更多的配置選項請查man手冊或在lftp界面內用命令 set -a 得到。
(4) ~/.lftp/log
當lftp轉爲後臺非掛起模式執行時,輸出將重定向到這裏
(5) ~/.lftp/bookmarks
這是lftp存儲書籤的地方,能夠lftp查看bookmark命令
(6) ~/.lftp/cwd_history
這個文件用來存儲訪問過的站點的工做目錄
(7) ~/.lftprc
在用lftp訪問國內一些ftp服務器時,每每看到的中文是亂碼。不用慌,這是因爲服務器和本地編碼不一致形成的。咱們只要在主目錄下新建一個文件~/.lftprc或者~/.lftp/rc。並在其中加入如下內容: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服務器:
lftpftp://user:password@site:port
lftpuser:password@site:port
lftpsite -p port -u user,password
lftpsite:port -u user,password
上面的幾種方式都能正常工做,不過密碼都是明文,這樣好像不太安全哦。不要緊,使用lftp user@site:port,系統會提示輸入password,密碼就回顯爲******了,不過每次都輸入這麼多,好麻煩哦。若是有相似leapftp的站點管理器就行了,其實lftp早就給咱們想好了:這就是bookmark。後面咱們將會看到。
在終端運行如manlftp或登陸ftp後輸入help就能夠看到命令列表,下面咱們看一下lftp經常使用的命令:
(1) ls:顯示遠端文件列表(!ls顯示本地文件列表)。
(2) cd:切換遠端目錄(lcd 切換本地目錄)。
(3) get:下載遠端文件。
(4) mget:下載遠端文件(能夠用通配符也就是 *)。
(5) pget:使用多個線程來下載遠端文件, 預設爲五個。
(6) mirror:下載/上傳(mirror-R)/同步整個目錄。
(7) put:上傳文件。
(8) mput:上傳多個文件(支持通配符)。
(9) mv:移動遠端文件(遠端文件更名)。
(10) rm:刪除遠端文件。
(11) mrm:刪除多個遠端文件(支持通配符)。
(12) mkdir:創建遠端目錄。
(13) rmdir:刪除遠端目錄。
(14) pwd:顯示目前遠端所在目錄(lpwd顯示本地目錄)。
(15) du:計算遠端目錄的大小
(16) !:執行本地 shell的命令(因爲lftp 沒有 lls, 故可用 !ls 來替代)
(17) Lcd:切換本地目錄
(18) Lpwd:顯示本地目錄
(19) Alias:定義別名
(20) Bookmark:設定書籤。
(21) Exit:退出ftp
(22) 快捷書籤:ftp中的bookmark命令,是將配置寫到~/.lftp/bookmarks文件中;咱們能夠直接修改此文件,快速登錄ftp服務器。
wget
wget 是一個經由 GPL 許可的可從網絡上自動獲取文件的自由軟件包。它是一個非交互式的命令行工具。支持 HTTP,HTTPS 和 FTP 協議,支持代理服務器以及斷點續傳功能。 wget 可實現遞歸下載,便可跟蹤 HTML 頁面上的連接依次下載來建立遠程服務器的本地版本,徹底重建原始站點的目錄結構,實現遠程網站的鏡像。在遞歸下載時,wget 將頁面中的超級連接轉換成指向本地文件,方便離線瀏覽。因爲非交互特性,wget 支持後臺運行,用戶在退出系統後,仍可繼續運行。功能強大,設置方便簡單。
基本語法: wget [options][URL-list]
Options:
-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,能夠在程序中調用。 curl 使用 URL 的語法來傳輸文件,它支持 FTP, FTPS, HTTP, HTTPS, TFTP, SFTP, TELNET 等多種協議。 curl 功能強大,它提供了包括代理支持,用戶認證,FTP 上載,HTTP post,SSL 鏈接,文件續傳等許多特性。
基本語法:curl [options …] <url>
其中下載參數大約有 80 多個,curl 的各個功能徹底依靠這些參數來完成。下面舉例說明 curl 的一些基本用法。
使用實例:
(1) 獲取 GNU 的主頁curl http://www.gnu.org
(2) 獲取 GNU 的 FTP 服務器上根目錄下的 README 文件curl ftp://ftp.gnu.org/README
(3) 從一個字典中獲取 curl 的定義curl dict://dict.org/m:curl
(4) 若是須要指定用戶名和密碼的話,能夠在 url 中指定,或者使用 -u 參數curl ftp://name:passwd@machine.domain:port/full/path/to/file或者curl -uname:passwd ftp://machine.domain:port/full/path/to/file
(5) curl 會將從指定 url 處獲取的內容打印到標準輸出上。若是須要保存在本地文件中,可使用 -o,或使用 -O 參數指定使用遠程主機上的文件名(若是 url 中沒有給出文件名的部分,則此操做將會失敗)curl -o gnu.html http://www.gnu.org 或者curl -O http:///www.gnu.org/index.htm
(6) 使用 -x 選項來使用代理進行鏈接curl -x my-proxy:port ftp://ftp.somesite.com/READMEN
(7) 經過使用 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 是個很好的選擇。
傳輸速度
由於常常在服務器見進行文件傳輸,就對傳輸速度和帶寬有要求,這裏總結一下能夠影響以上rcp,scp,rsync,ftp,sftp,lftp,wget,curl這6個命令的傳輸速度和帶寬的參數:
(1) rcp:沒有參數能夠調整帶寬和傳輸速度
(2) scp:若是傳輸的文件沒有壓縮,可使用-C參數(-C 使能壓縮選項)。-c 選擇使用那個加密算法,具體對應到ssh的-c cipher-spec,這個參數值會被傳給ssh,可選擇值3des,blowfish,des),使用blowfish會快不少,能夠參看man ssh 中的-c cipher-spec。可使用-l 限制使用帶寬,Kbit/s。避免由於傳輸文件而影響其餘程序使用帶寬。-o ssh_option使用ssh選項
(3) rsync:-B, --block-size=SIZE 檢驗算法使用的塊尺寸,默認是700字節;-z, --compress 對備份的文件在傳輸時進行壓縮處理;--bwlimit=KBPS 限制I/O帶寬,KBytes per second ;-e, --rsh=COMMAND 指定使用rsh、ssh方式進行數據同步
(4) ftp:FTP>ascii 將文檔傳送類型配置爲默認的 ASCII。說明:linux ftp命令參數支持兩種文檔傳送類型,ASCII 碼和二進制圖像,在傳送文本文檔時應該使用ASCII。Binary二進制傳輸。
(5) sftp: -B buffer_size, -C使用壓縮,-ossh_option使用ssh選項
(6) lftp:能夠調整進程數等
(7) wget: --limit-rate=amount限制帶寬。
(8) curl:-B/--use-ascii和--ciphers<list of ciphers>,--compressed等。
總結
(1) 傳輸性能:wget 經過支持後臺執行及斷點續傳提升文件傳輸效率; rsync 則以其高效的傳輸及壓縮算法達到快傳輸的目的。
(2) 配置難度:rcp 只需進行簡單的配置,建立.rhost文件以及設置/etc/hosts文件中主機名與IP地址列表; wget設置方便簡單,只需在客戶端指定參數執行命令便可; rsync 在使用前須要對服務端/etc/rsyncd.conf 進行參數設定,配置內容相對複雜。
(3) 安全性能:ftp、rcp不保證傳輸的安全性,scp、rsync則都可基於ssh 認證進行傳輸,提供了較強的安全保障。wget 也可經過指定安全協議作到安全傳輸。
經過上述的對比不難發現,每種文件傳輸方法基於其自身的特色與優點均有其典型的適用場景:
(1) ftp 做爲最經常使用的入門式的文件傳輸方法,使用簡單,易於理解,而且能夠實現腳本自動化;可是須要安裝ftp server才能夠訪問遠程ftp server
(2) rcp 相對於ftp能夠保留文件屬性並可遞歸的拷貝子目錄;
(3) scp 利用ssh傳輸數據,並使用與ssh相同的認證模式,相對於rcp提供更強的安全保障;
(4) wget實現遞歸下載,可跟蹤HTML頁面上的連接依次下載來建立遠程服務器的本地版本,徹底重建原始站點的目錄結構,適合實現遠程網站的鏡像;
(5) curl 則適合用來進行自動的文件傳輸或操做序列,是一個很好的模擬用戶在網頁瀏覽器上的行爲的工具;
(6) rsync 更適用於大數據量的每日同步,拷貝的速度很快,相對wget來講速度快且安全高效。
(7) sftp使用在數據鏈接上使用ssh2,因此文件的傳輸是儘量地安全。但傳輸速度慢。是ftp的替代品,比ftp安全,不能訪問http資源。
(8) lftp能夠訪問ftp資源,也能夠訪問http資源。支持斷點續傳,多進程下載。
========================================================
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
能夠經過help command 查看每一個命令的說明
ftp> help put
put send one file
ftp> help mput
mput send multiple files
3. 上傳文件
Put命令:格式:put local-file [remote-file] 將一個文件上傳到ftp
Mput命令:格式:mput local-files 將本地主機中一批文件傳送至遠端主機.
注意:mput命令只能將當前本地目錄下的文件上傳到FTP上的當前目錄。好比,在 /root/dave下運行的ftp命令,則只有在/root/dave下的文件linux纔會上傳到服務器上的當前目錄下。
Put 代碼示例:
ftp> pwd -- 顯示FTP上當前路徑
257 "/" is current directory.
ftp> ls -- 顯示當前目錄下的文件
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 -- 建立文件夾Dave
257 "/Dave" directory created.
ftp> cd Dave -- 進入文件夾Dave
250 Directory changed to /Dave
ftp> pwd -- 顯示當前目錄
257 "/Dave" is current directory.
ftp> lcd -- 顯示當前本地的路徑,咱們能夠將這個路徑下的這個文件上傳到FTP服務器的相關位置
Local directory now /home/oracle
ftp> ! -- 退出當前的窗口,返回Linux 終端,當咱們退出終端的時候,又會返回到FTP上。
[oracle@Dave ~]$ ls -- 顯示當前目錄下的文件
dead.letter scripts sqlnet.log
[oracle@Dave ~]$ vi Dave -- 建立文件 Dave
[oracle@Dave ~]$ vi DBA -- 建立文件 DBA
[oracle@Dave ~]$ ls -- 顯示文件夾裏的內容,等會咱們將這些文件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 -- 將剛纔建立的文件DBA 上傳到ftp的當前目錄上並命名爲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 -- 將剛纔建立的文件DBA 上傳到ftp的當前目錄上並重命名爲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? -- 這裏每一個文件都要確認,按回車鍵就能夠了
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? -- 每一個文件都要確認
250 DELE command successful.
mdelete alert_newccs.hist?
250 DELE command successful.
mdelete alert_newccs.log?
250 DELE command successful.
4. 下載文件
一樣也有2個命令: get 和 mget。 Mget 用戶批量下載。
格式:get [remote-file] [local-file]
mget [remote-files]
一樣,mget 是將文件下載到本地的當前目錄下。
Get 示例:
ftp> get /test/SFDBA /home/SFDBA
local: /home/SFDBA remote: /test/SFDBA
local: /home/SFDBA: Permission denied --Linux對權限控制的很嚴格,下載的時候是否有對應文件夾的寫權限
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? -- 每一個文件都要確認, 按回車便可
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
說明的地方:FTP 當前目錄下的文件下載到本地的當前目錄。
5. 斷開FTP 鏈接
Bye命令或者quit命令:中斷與服務器的鏈接。
ftp> bye
221 Goodbye!
FROM:http://blog.csdn.net/emili/article/details/6858818
http://blog.csdn.net/tianlesoftware/article/details/5818990