lftp命令詳解


lftp.sh自動上傳腳本:

#!/bin/bash
echo -e "\nScript start at \033[43;35m `date "+%H:%M:%S"` \033[0m"
echo -e "\033[1;34m-----------------------------------------------------------------------\033[0m"
cd /root/upload ; rm -fr /root/upload/*
git clone git@10.35.33.29:xiaoban/server-api/xiaoban-server.git
mv /root/upload/xiaoban-server/* /root/upload/ ; rm -fr /root/upload/xiaoban-server
tar zcvf code.tar.gz ./* >/dev/null


lftp << EOF
open ftp://xiaoban:xiaoban@2018@ftp.wjoyxt.ren
cd
put /root/upload/code.tar.gz
close
bye
EOF
rm -fr /root/upload/*
echo -e "\033[1;34m-----------------------------------------------------------------------\033[0m"
echo -e "Script end at \033[43;35m `date "+%H:%M:%S"` \033[0m \n "

 

使用lftp相比使用ftp的優勢較多,可以顯示上傳下載的百分比進度以及可以上傳下載文件夾。

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

1、登錄ftp
代碼:
lftp 用戶名:密碼@ftp地址:傳送端口(默認21)
用法
(1)lftp username:password@127.0.0.1:21
(2)lftp username@127.0.0.1 回車     ##默認21端口 回車后輸入密碼
(3)lftp 127.0.0.1 回車   ##回車后 login 登錄
(4)lftp 回車 --> open 127.0.0.1 --> login 登錄


2、lftp中文亂碼問題
登錄后看到的都是中文亂碼(因為一般本地都是utf-8的編碼),怎么半呢,用 set 命令來解決

set ftp:charset gbk(或者 gb2312 或 utf-8) ##設置ftp端的編碼格式
set file:charset utf-8 (...同上) ##設置本地編碼格式

附:set命令的技巧 (1)輸入set 查看已經設置好的命令 (2)set -a 查看所有可以設置的命令清晰網


3、查找ftp端文件

ls *.txt ##查找當前目錄下的所有txt文件
ls ./123/ ##列出123目錄下所有文件
find . -name "*.txt"   ##遞歸查找站點上所有的txt文件
find ./xx -name "*.txt" ##查找xx目錄下所有的txt文件

附1: ls第二次讀取的是本地緩存,可以用 rels 代替 ls 或者catch off / catch on 來開關catch,catch flush清空本地catch
附2: 瀏覽本地目錄的命令可用 !ls , 如 !ls /usr/local/bin/


4、下載文件

下載文件之前要先設置好本地的目錄,用來存放下載的文件
lcd /home/123/web   ##設置本地存放目錄 默認為 /home/usr

get 123.txt     ##下載123.txt文件到 /home/123/web 中
get -c 123.txt ##斷點續傳下載
mget *.txt     ##批量下載所有txt文件
mget -c *.txt ##斷點續傳
mget -c ./123/aaa/*.txt   ##斷點續傳、批量下載ftp端aaa目錄下的所有txt文件

pget -c -n 10 file.dat
##以最多10個線程以允許斷點續傳的方式下載file.dat
##可以通過設置 set pget:default-n 5 的值而使用默認值。

mirror aaa/
##將aaa目錄整個的下載下來,子目錄也會自動復制 本地自動建立目錄


5、上傳文件

put 123.txt     ##同下載
mput *.txt     ##同下載

mirror -R aaa/ ##同下載


6、設置被動/非被動模式

set ftp:passive-mode 1 ## 1 被動 0非主動


多任務處理

ctrl+z ##將當前進行的任務移交后台處理
wait   ##將后台處理任務調至前台查看
jobs   ##查看后台進行的任務列表
kill all 或者 job_no ##刪除所有任務 或 指定的任務

##將任務加入任務列表
queue get 123.txt
queue put 234.txt
queue mirror aaa/ 

queue ##查看任務列表
jobs   ##查看后台任務列表

queue start ##開始任務列表
queue stop ##停止任務列表


其他命令清晰網 

alias []
定義別名
alias less more
alias reconnect "close; cd ."
直接輸入 alias 即可看到目前定義了那些別名。如果只輸入 alias name 的話, 則是取消 name 這個別名。

bookmark SUBCMD
設定書簽, 可將目前站台及所在目錄設成書簽, 下次可直接進來, 不用再 cd 來 cd 去的

bookmark add name 用來新增名稱為 name 的書簽
bookmark del name 刪除名稱為 name 的書簽
bookmark list 顯示目前有設定那些書簽(另外直接打 bookmark 和 bookmark list 的結果一樣)
bookmark edit 呼叫編輯器修改書簽 (~/.lftp/bookmarks)

cd 切換遠端目錄

cache SUBCMD
管理 lftp 的 cache

rels []
從 cache 中顯示遠端檔案列表
rels 則不會從 cache 中讀取

recls opts [path/]pattern
從 cache 中顯示遠端的檔案列表, 應該算是 ls 的加強版, 有很多參數可用,應該是可用來產生各種不同>的檔案列表以供其他程式使用。
recls 則不會從 cache 中讀取

du options
計算遠端整個目錄占用容量

get OPTS -o
抓取遠端檔案 清晰網 

get rfile -o lfile
抓 rfile 到本地改名為 lfile
-c 為續傳
-E 抓檔完成后, 將遠端的檔案砍了
-a 為 ascii mode, 預設為 binary mode
-O 設定 base directory 為本地端放檔案的目錄

mget OPTS
下載遠端檔案(可用 wildcard expansion 也就是 *)

pget OPTS -o
使用多個連結來下載檔案, 預設為五個。
-n 3 為叄個連結

jobs -v
顯示目前有那些程序在背景執行
-v 顯示詳細的資訊(-v 可多加幾個來顯示更詳細的資訊)

lcd
切換本地端的目錄

mirror OPTS remote [local]
下載整個目錄(樓上的 get 只能用來抓檔案)
-c 續傳
-e 這個要小心一些, 比較遠端和本地端的檔案, 假如遠端沒有的, 就將本地端的檔案刪除, 也就是將本地端和遠端資料同步。
-R 上傳整個目錄
-n 只下載較新的檔案
-r 不用遞回到目錄中
--parallel=n 同時下載 n 個檔案(預設一次只下載一個)清晰網 

module name args
載入模組

put OPTS -o
上傳檔案

mput OPTS
上傳檔案(可用 wildcard expansion 也就是 *)

mv
將遠端的 file1 改名為 file2

mrm
用 wildcard expansion 方式來刪除遠端檔案

open OPTS
開啟某個站台
open -u , -p site

queue OPTS []
將 cmd 放到佇列中等待執行
-d index 將編號為 index 的 job 刪除
-m index new_index 將編號為 index 的 job 移至編號 new_index, 插隊專用。
-n index 在編號 index 之前新增一個 job

wait []
將背景執行中的程序移至前景(也可用 fg)

kill all|
刪除全部的 jobs 或 job_no

repeat delay command
每隔 delay 秒, 重覆執行 command, 預設是每隔一秒

rm -r -f
移除遠端檔案

mkdir -p
建立遠端目錄

rmdir -f
移除遠端目錄

set OPT []
設定變數
直接鍵入 set 可看目前定義了那些變數

source
讀取 file, 並執行 file 中的命令(應該是和 bash 中的 source 命令是一樣的吧)

debug [|off] -o
設定 debug level 為 level
-o 將輸出導向至 file

exit [|bg]
結束 lftp
此時若還有 jobs, 則會將 lftp 放至背景執行, 繼續未完成的工作

history -w file-r file-c|-l cnt
和 bash 中的 history 功能一樣

renlist []
只顯示遠端的檔名

pwd -p
顯示目前遠端所在目錄
-p 連登入密碼也顯示

scache []
只打 scache 顯示目前所有的 session, 加上 session_no 可切換至其他的 session,
對於同時開啟多個站台或同個站台不同目錄間切換。

國內的大多數ftp服務器使用的中文編碼是gbk,而linxu大多數版本(包括debian,redhat,centOS,fc等版本)默認的編碼是utf-8,於是會出現訪問ftp服務器是出現中文亂碼的問題,解決辦法有兩種:
1、臨時解決
用lftp登錄到ftp服務器上,設置遠程服務器編碼為gbk,而設置本地編碼為utf-8,做法為:輸入下面兩個命令:
set ftp:charset gbk
set file:charset utf8

2、永久解決
在目錄$HOME/.lftp編輯文件(如果沒有則建立)rc,輸入下面兩行,設置遠程編碼為gbk,本地編碼為utf-8:
set ftp:charset gbk
set file:charset utf8
這種方法會導致訪問utf8編碼的服務器時出現中文亂碼,不過就目前國內環境來說機會比較少。如果出現亂碼時則臨時輸入下面兩行就可以了:
set ftp:charset utf8
set file:charset utf8

另外一個用的很多的圖形界面的ftp客戶端是gftp,在選項中可以選擇編碼,用慣了win下客戶端的人應該能夠很快的早到編碼選擇的地方,選擇服務器端的編碼為gbk就可以了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM