linux使用命令列操作ftp

weixin_34041003發表於2017-06-05

由於公司軟體比較特殊,我們釋出版本通常會給很多伺服器都一併釋出了,而且用的還是ftp,如果每個伺服器都先開啟ftp軟體,連線上,然後再上傳,這樣無疑不符合我們程式設計師懶的特質。

於是我就花時間寫了一個這樣的指令碼用來批量上傳檔案,我在這裡會使用到lftp這個軟體,這個軟體比系統自帶的ftp命令強大多了,而且ftp命令是不支援覆蓋現有的目錄的,所以還在苦苦尋找使用ftp覆蓋目錄的童鞋可以不用再繼續了,下面就是簡單介紹一下lftp的基本操作。

lftp的操作基本和ftp命令大同小異,首先開啟ftp連線:lftp username:password@ip,開啟連結後,你需要使用cd命令進入到你需要上傳的目錄,然後通過lcd命令進入到本地的目錄,這時你就可以通過putmputmirror等命令上傳檔案,或通過getmget等命令下載檔案,最後可以通過exit退出ftp。

lftp主要命令

命令 作用
help 產看命令列表
ls 顯示遠端檔案列表
cd 切換遠端目錄
get 下載遠端檔案(單檔案)
mget 下載遠端檔案(多檔案)
pget 使用多個執行緒來下載遠端檔案
mirror 同步目錄,可以用於下載和上傳(- R)目錄
put 上傳檔案(單檔案)
mput 上傳檔案(多檔案)
mv 移動檔案(可以重新命名目錄、檔案)
rm 刪除遠端檔案
mrm 刪除多個檔案,可以使用萬用字元
mkdir 建立目錄
rmdir 刪除目錄
pwd 顯示遠端的當前目錄
lcd 切換本地目錄
lpwd 顯示本地目錄
exit 退出ftp

示例:

# 連線資料庫
lftp username:password@127.0.0.1

# 列出當前ftp目錄的檔案
lftp username@127.0.0.1:~> ls

# 進入ftp上的某個目錄
lftp username@127.0.0.1:~> cd testDir

# 定位到本地目錄
lftp username@127.0.0.1:~> lcd /local/testDir

# 上傳單個檔案
lftp username@127.0.0.1:~> put testFile

# 上傳多個檔案,可以使用萬用字元
lftp username@127.0.0.1:~> mput *.md

# 將本地的目錄同步到ftp上
lftp username@127.0.0.1:~> mirror -R . 

# 獲取遠端的檔案
lftp username@127.0.0.1:~> get testFile

# 獲取遠端的多個檔案
lftp username@127.0.0.1:~> mget testFile

# 將遠端的目錄同步到本地
lftp username@127.0.0.1:~> mirror . 

# 退出ftp
lftp username@127.0.0.1:~> exit

ftp上傳指令碼:

#!/bin/bash

pathStr=`pwd`

# 將指令碼所在的目錄的所有檔案都上傳到ftp上
# 引數為ftp連線資訊 username:password@ip
lftp $1 <<EOF
lcd $pathStr
mirror -R -c .
rm ftp.sh
exit;
EOF

只要將上面指令碼的mirror -R -c .改為mirror -c .就可以變成一個備份指令碼

如果想要了解lftp的更多細節,可以訪問他們的官網

相關文章