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]
例子:
lftp ftp://userName:password@127.0.0.1
-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