🚀 【LFTP 教學】沒有 Rsync 怎麼辦?最強 FTP 備份神器安裝與腳本自動化攻略
🔥 一句話總結: 當你的遠端伺服器只開放了傳統的 FTP 協定,卻又渴望擁有像 rsync 那樣聰明的「自動比對、斷點續傳、資料夾鏡像同步」功能時,LFTP 絕對是你唯一的神級救星!
在 Linux 的終端機世界裡,傳輸檔案的工具有千百種。雖然我自己日常還是滿常用 NcFTP 來一行指令上傳一堆檔案(畢竟如果是自家主機,大多直接用 rsync 搞定備份了),但如果你今天遇到一台「只開放 FTP 連接埠,不給 SSH/Rsync 權限」的固執主機時,想隨時自動備份該怎麼辦?這時候,LFTP 這套強悍的 FTP 用戶端軟體就能派上大用場了 🤖🤓🤖!
一般的 FTP 軟體就像是「傳統的搬家工人」,你叫他搬 10 箱東西,他就乖乖搬 10 箱,就算裡面有 9 箱昨天已經搬過了,他還是會傻傻重搬一次。
而 LFTP 就像是一間「高科技智能物流公司」,它不僅具備 Rsync 等級的精準比對能力(只搬有變動的檔案),還能支援多路併發傳輸,幫你省下大把的頻寬與時間!
🛠️ 第一階段:LFTP 基礎安裝
-
❶ 匯入 EPEL 套件庫並安裝 (以 CentOS 為例)
安裝 LFTP 其實非常簡單,只要確保你的系統已經掛載了 CentOS 官方認可的 EPEL (Extra Packages for Enterprise Linux) 套件庫即可。請在 SSH 中依序輸入以下指令:sudo yum remove -y epel-release sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm sudo yum-config-manager --enable epel
最後,下達安裝指令,幾秒鐘就能把這套神器請入伺服器中了! yum install -y lftp
⚙️ 第二階段:基本語法與「腳本自動化」實戰
LFTP 最強大的地方在於它的指令列控制能力。以下是它的標準起手式語法:
lftp [-d] [-e cmd] [-p port] [-u user[,pass]] [site] lftp -f script_file lftp -c commands
📊 常用啟動參數白話分解
| ⚙️ 參數名稱 | 📖 實際作用 |
|---|---|
| -p | 指定遠端 FTP 主機提供的連接埠(例如自訂的 Port 2121)。 |
| -u | 輸入帳號與密碼,格式為 使用者,密碼。如果不加上此參數,LFTP 會預設嘗試用「匿名模式 (Anonymous)」登入。 |
| -f | 執行寫好的純文字腳本檔(Script),自動化備份全靠它! |
| -c | 後面直接接上想要執行的指令字串,適合單次快速操作。 |
-
❷ 建立自動化備份腳本 (Script)
懂了基本參數後,我們可以把複雜的下載指令寫成一個文字檔,未來就能搭配 cronjob 實現全自動排程備份了!
我們建立一個名為 lftp.txt 的檔案,內容如下:open qoo.com -p 21 -u qoo_user,qoo_pw lcd /backup/520.be/ cd /web/www/520.be/ mirror -c exit
接著只要執行以下指令,系統就會照著腳本一步一步幫你把遠端資料同步回本地端:
lftp -f /root/lftp.txt💡 腳本語法小提示:
lcd 代表切換「本地端 (Local)」的儲存目錄;而 cd 則是切換「遠端 FTP」的目錄。最後呼叫 mirror -c 進行斷點續傳的鏡像同步。如果想反向「上傳檔案到遠端」,只要把 mirror -c 改成 mirror -cR 就可以了!
🛡️ 核心必殺技:三大神級指令詳解
一、Mirror 鏡像同步指令 (Rsync 的完美替代品)
語法:mirror [參數] [來源目錄 [目標目錄]]
鏡像 (Mirror) 就像是聘請了一位擁有強迫症的「超級收納管家」。他會嚴格比對你本地端(自家倉庫)跟遠端 FTP(雲端保險箱)的檔案狀態,只會下載或上傳「缺少」或「時間較新」的檔案。完全不浪費時間重傳一模一樣的東西!
Mirror 支援的細部參數非常多,這裡幫大家整理出最實用的清單(如果目標目錄最後有加上斜線 /,來源目錄的名稱會被附加到目標名稱之後):
| 🛠️ Mirror 參數 | 📖 作用說明 |
|---|---|
| -c, –continue | 支援斷點續傳(網路斷掉也不用重頭來)。 |
| -e, –delete | 強制同步:比較遠端和本地端的檔案,如果遠端沒有的檔案,就直接刪除本地端的檔案(保持兩邊完全一致)。 |
| -R, –reverse | 反向鏡像:也就是將本地端資料「上傳」至遠端 FTP。 |
| -n, –only-newer | 只下載比本地端「還新」的檔案(注意:此時 -c 斷點續傳選項將會無效)。 |
| –only-missing | 只下載本地端「缺少」的檔案。 |
| -P, –parallel[=N] | 並行下載:同時開啟 N 個通道來下載多個檔案。 |
| –size-range=RANGE | 進階過濾:只下載指定大小範圍內的檔案。 |
| –Remove-source-files | ⚠️ 謹慎使用: 檔案傳輸完成後,直接把來源端的檔案刪除。 |
| -s, –allow-suid | 儲存遠端 FTP 檔案的屬性,嘗試保留權限設定。 |
| -x RX, –exclude | 利用正規表示式 (Regex) 來排除不需要下載的檔案。 |
※ 其他次要參數還包括:–delete-first (先刪舊檔再傳新檔)、–depth-first (先進入子目錄再傳檔)、–ignore-time、–ignore-size、–no-empty-dirs、-r (不進入子目錄)、–no-symlinks、-p (不設定權限)、-L (將捷徑視為實體檔案下載)、-N (只下載特定時間後的檔案)、–on-change=CMD (有變動時執行外部指令) 等等。
二、pget 多執行緒暴力下載
語法:pget [參數] 遠端檔案 [-o 本地檔案]
這就像去大賣場買一組超巨大的沙發。傳統 FTP (單線程) 只能派一個員工慢慢搬;而 pget 會直接呼叫 5 到 10 個搬家工人(多執行緒),把沙發拆分成好幾塊同時透過不同的通道運送,最後在你的電腦裡瞬間組裝好,速度直接衝破天際!
- -c:支援斷點續傳。
- -n:指定使用幾個線程來暴力下載(預設為 5 個)。
- -o:指定下載回來的檔案儲存位置與檔名。
🔥 一行神速下載範例:
lftp -c ‘pget -c -n 10 http://voip.hinet.net/msjavx86.exe -o /web/www/520.be/msjavx86.exe’
三、mget / mput 批次處理神技
如果你不想用 Mirror 掃描整個資料夾,只是想利用萬用字元(如 *.jpg)抓取或上傳特定檔案,就可以使用 mget(多個下載)與 mput(多個上傳)。
- -c:斷點續傳。
- -d:自動建立與檔名相同的目錄,並將檔案放進去(而不是放在當前目錄)。
- -a:強制使用 ascii 模式傳輸(LFTP 預設為 binary 二進位模式)。
- -O <base>:指定基礎儲存位置。
- -E:⚠️ 謹慎使用: 傳輸完成後,直接刪除來源檔案(過河拆橋大法)!
🔧 實用環境設定與「阿薩布魯」雜項指令
在 LFTP 的提示字元底下,你還可以透過 set 指令來調整系統的全域設定,尤其是遇到令人頭痛的中文亂碼時,這招一定要學起來:
# 解決遠端 FTP 顯示亂碼 (可改用 big5 繁體中文,或 gbk 簡體中文) set ftp:charset UTF-8 # 設定本地端檔案列表的編碼 set file:charset "UTF-8" # 限制上傳與下載的極速 各為 10KB/s (不怕吃光伺服器頻寬) set net:limit-rate 10000,10000
🗃️ 其他日常必備管理指令總整理
| ⌨️ 指令語法 | 📖 功能說明 |
|---|---|
| ! shell command | 執行本地端 (Local) 的 Shell 命令(例如 LFTP 沒有 lls,可用 !ls 替代)。 |
| alias / bookmark | 自定義別名與設定 FTP 書籤,方便下次快速連線。 |
| cat, more, zcat, zmore | 直接在終端機查看遠端 FTP 裡面的文字檔內容。 |
| cd / lcd | 切換遠端目錄 (cd) / 切換本地端目錄 (lcd)。 |
| pwd / lpwd | 顯示遠端當前目錄 (pwd) / 顯示本地端當前目錄 (lpwd)。 |
| ls / !ls | 顯示遠端檔案列表 / 顯示本地端檔案列表。 |
| chmod mode files | 更改遠端 FTP 的檔案或目錄權限。 |
| mkdir [-p] / rmdir | 建立遠端目錄(加 -p 可連同子目錄一起建) / 刪除遠端目錄。 |
| mv file1 file2 | 移動遠端檔案,這招也常被用來當作「重新命名」使用。 |
| rm [-r] [-f] files | 刪除遠端檔案(加 -r 遞迴刪除整個目錄;-f 強制且不顯示錯誤訊息)。 |
| mrm | 一次刪除多個遠端檔案,完美支援 * 萬用字元。 |
| du | 計算遠端 FTP 目錄佔用的空間大小。 |
| exit | 安全登出並退出 LFTP 程式。 |
如果想深入研究更多隱藏參數,你隨時可以在 SSH 終端機敲下 man lftp 來召喚官方說明書,或是前往線上說明手冊查閱:
👉 http://tutorials.papamike.ca/pub/lftp.html
列印本文
逆向行駛 最愛的最殘酷、最美的最虛無