FTP
一. ftp簡介
網絡文件共享服務主流的主要有三種,分別是ftp、nfs、samba。
FTP是File Transfer Protocol(文件傳輸協議)的簡稱,用於internet上的控制文件的雙向傳輸。
FTP也是一個應用程序,基於不同的操作系統有不同的FTP應用程序,而所有這些應用程序都遵守同一種協議以傳輸文件。
在FTP的使用當中,用戶經常遇到兩種概念:下載和上傳
下載(Download) | 上傳(Upload) |
---|---|
從遠程主機拷貝文件至自己的計算機上 | 將文件從自己的計算機上拷貝至遠程主機上 |
二. ftp架構
FTP工作於應用層,監聽於tcp的21號端口,是一種C/S架構的應用程序。其有多種客戶端和服務端的應用程序,下面來簡單介紹一下
客戶端工具 | 服務端軟件 |
---|---|
ftplftp,lftpgetwget,curlfilezillagftp(Linux GUI)商業軟件(flashfxp,cuteftp) | wu-ftpdproftpd(提供web接口的一種ftp服務端程序)pureftpvsftpd(Very Secure)ServU(windows平臺的一種強大ftp服務端程序) |
三. ftp數據連接模式
ftp有2種數據連接模式:命令連接和數據連接
- 命令連接:是指文件管理類命令,始終在線的持久性連接,直到用戶退出登錄爲止
- 數據連接:是指數據傳輸,按需創建及關閉的連接
其中數據連接需要關注的有2點,一是數據傳輸格式,二是數據傳輸模式
數據傳輸格式有以下兩種:
- 文件傳輸
- 二進制傳輸
數據傳輸模式也有2種:
- 主動模式:由服務器端創建數據連接
- 被動模式:由客戶端創建數據連接
兩種數據傳輸模式的建立過程:
傳輸模式 | 建立過程 |
---|---|
主動模式 | 命令連接:Client(1025)–> Server(21)客戶端以一個隨機端口(大於1023)來連服務器端的21號端口數據連接:Server(20/tcp) --> Client(1025+1)服務器端以自己的20號端口去連客戶端創建命令連接時使用的隨機端口+1的端口號 |
被動模式 | 命令連接:Client(1110) --> Server(21)客戶端以一個隨機端口來連成服務器端的21號端口數據連接:Client(1110+1) --> Server(隨機端口)客戶端以創建命令連接的端口+1的端口號去連服務器端通過命令連接告知自己的一個隨機端口號來創建數據連接 |
主動模式有個弊端,因爲客戶端的端口是隨機的,客戶端如果開了防火牆,
則服務器端去連客戶端創建數據連接時可能會被拒絕
四. 用戶認證
ftp的用戶主要有三種:
- 虛擬用戶:僅用於訪問某特定服務中的資源
- 系統用戶:可以登錄系統的真實用戶
- 匿名用戶
五. vsftpd
此處我們要說的ftp應用程序是vsftpd,這也是在公司中用得最多的一款ftp軟件。
5.1 vsftpd安裝
[root@wangqing ~]# yum -y install vsftpd
...
...
Total download size: 169 k
Installed size: 348 k
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : vsftpd-3.0.2-22.el7.x86_64 1/1
Verifying : vsftpd-3.0.2-22.el7.x86_64 1/1
Installed:
vsftpd.x86_64 0:3.0.2-22.el7
Complete!
5.2 vsftpd配置
/etc/pam.d/vsftpd //vsftpd用戶認證配置文件
/etc/vsftpd/ //配置文件目錄
/etc/vsftpd/vsftpd.conf //主配置文件
//匿名用戶(映射爲ftp用戶)的共享資源位置是/var/ftp
//系統用戶通過ftp訪問的資源位置爲用戶的家目錄
//虛擬用戶通過ftp訪問的資源位置爲給虛擬用戶指定的映射成爲的系統用戶的家目錄
vsftpd常見的配置參數:
參數 | 作用 |
---|---|
anonymous_enable=YES | 啓用匿名用戶登錄 |
anon_upload_enable=YES | 允許匿名用戶上傳 |
anon_mkdir_write_enable=YES | 允許匿名用戶創建目錄,但是不能刪除 |
anon_other_write_enable=YES | 允許匿名用戶創建和刪除目錄 |
local_enable=YES | 啓用本地用戶登錄 |
write_enable=YES | 允許本地用戶有寫權限 |
local_umask=022 | 通過ftp上傳文件的默認遮罩碼 |
chroot_local_user=YES | 禁錮所有的ftp本地用戶於其家目錄中 |
chroot_list_enable=YES | 開啓禁錮文件列表需要與chroot_list_file參數一起使用 |
chroot_list_file=/etc/vsftpd/chroot_list | 指定禁錮列表文件路徑在此文件裏面的用戶將被禁錮在其家目錄中 |
allow_writeable_chroot=YES | 允許被禁錮的用戶家目錄有寫權限 |
xferlog_enable=YES | 是否啓用傳輸日誌,記錄ftp傳輸過程 |
xferlog_std_format=YES | 傳輸日誌是否使用標準格式 |
xferlog_file=/var/log/xferlog | 指定傳輸日誌存儲的位置 |
chown_uploads=YES | 是否啓用改變上傳文件屬主的功能 |
chown_username=whoever | 指定要將上傳的文件的屬主改爲哪個用戶此用戶必須在系統中存在 |
pam_service_name=vsftpd | 指定vsftpd使用/etc/pam.d下的哪個pam配置文件進行用戶認證 |
userlist_enable=YES | 是否啓用控制用戶登錄的列表文件:默認爲/etc/vsftpd/user_list文件 |
userlist_deny=YES | 是否拒絕userlist指定的列表文件中存在的用戶登錄ftp |
max_clients=# | 最大併發連接數 |
max_per_ip=# | 每個IP可同時發起的併發請求數 |
anon_max_rate | 匿名用戶的最大傳輸速率,單位是“字節/秒” |
local_max_rate | 本地用戶的最大傳輸速率,單位是“字節/秒” |
dirmessage_enable=YES | 啓用某目錄下的.message描述信息假定有一個目錄爲/upload,在其下創建一個文件名爲.message,在文件內寫入一些描述信息,則當用戶切換至/upload目錄下時會自動顯示.message文件中的內容 |
message_file | 設置訪問一個目錄時獲得的目錄信息文件的文件名,默認是.message |
idle_session_timeout=600 | 設置默認的斷開不活躍session的時間 |
data_connection_timeout=120 | 設置數據傳輸超時時間 |
ftpd_banner=“Welcome to chenlf FTP service.” | 定製歡迎信息,登錄ftp時自動顯示 |
//虛擬用戶的配置:
//所有的虛擬用戶會被統一映射爲一個指定的系統帳號,訪問的共享位置即爲此係統帳號的家目錄
//各虛擬用戶可被賦予不同的訪問權限,通過匿名用戶的權限控制參數進行指定
//虛擬用戶帳號的存儲方式:
1.文件:編輯文件,此文件需要被編碼爲hash格式。
奇數行爲用戶名
偶數行爲密碼
2.關係型數據庫的表中:
通過即時查詢數據庫完成用戶認證
mysql庫:pam要依賴於pam_mysql軟件,可以通過epel源yum安裝
5.3 vsftpd虛擬用戶配置
//安裝依賴的程序:
[root@wangqing ~]# cd /etc/yum.repos.d/
[root@wangqing yum.repos.d]# wget http://mirrors.163.com/.help/CentOS7-Base-163.repo
--2018-08-10 12:07:17-- http://mirrors.163.com/.help/CentOS7-Base-163.repo
Resolving mirrors.163.com (mirrors.163.com)... 59.111.0.251
Connecting to mirrors.163.com (mirrors.163.com)|59.111.0.251|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1572 (1.5K) [application/octet-stream]
Saving to: ‘CentOS7-Base-163.repo’
100%[=================================>] 1,572 --.-K/s in 0s
2018-08-10 12:07:17 (191 MB/s) - ‘CentOS7-Base-163.repo’ saved [1572/1572]
[root@wangqing ~]# sed -i 's/\$releasever/7/g' /etc/yum.repos.d/CentOS7-Base-163.repo
[root@wangqing ~]# sed -i 's/^enabled=.*/enabled=1/g' /etc/yum.repos.d/CentOS7-Base-163.repo
[root@wangqing ~]# yum clean all
[root@wangqing ~]# yum -y install epel-release
[root@wangqing ~]# yum -y install vsftpd
//創建文本格式的用戶名、密碼列表,例如若要添加兩個用戶tom、jerry,密碼分別爲123、456
[root@wangqing ~]# echo 'tom' >> /etc/vsftpd/vu.list
[root@wangqing ~]# echo '123' >> /etc/vsftpd/vu.list
[root@wangqing ~]# echo 'jerry' >> /etc/vsftpd/vu.list
[root@wangqing ~]# echo '456' >> /etc/vsftpd/vu.list
[root@wangqing ~]# cat /etc/vsftpd/vu.list
tom
123
jerry
456
//這裏的用戶名和密碼是一一對應的,前面輸的是帳號,後面跟的是密碼
//安裝db4工具
[root@wangqing ~]# yum -y install db4*
//將剛創建的文本格式用戶名、密碼文件使用db4工具轉換成數據庫文件
[root@wangqing ~]# db_load -T -t hash -f /etc/vsftpd/vu.list /etc/vsftpd/vu.db
//上面的-T表示轉換,-t表示加密方式使用hash算法加密
//爲提高虛擬用戶帳號文件的安全性,應將文件權限設置爲600,以避免數據外泄
[root@wangqing ~]# chmod 600 /etc/vsftpd/vu.*
[root@wangqing ~]# ll /etc/vsftpd/vu.*
-rw-------. 1 root root 12288 Aug 2 15:53 /etc/vsftpd/vu.db
-rw-------. 1 root root 18 Aug 2 15:50 /etc/vsftpd/vu.list
//添加虛擬用戶的映射帳號、創建ftp根目錄。例如要將使用的ftp根目錄設置爲/var/ftproot, \
//映射帳號的名稱爲vftp,可以執行以下操作
[root@wangqing ~]# useradd -d /var/ftproot -s /sbin/nologin vftp
[root@wangqing ~]# chmod 755 /var/ftproot/
[root@wangqing ~]# ll -d /var/ftproot/
drwxr-xr-x. 2 vftp vftp 62 Aug 2 15:56 /var/ftproot/
//爲虛擬用戶建立PAM認證
[root@wangqing ~]# cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak
//或者用 [root@wangqing ~]# cp /etc/pam.d/vsftpd{,.bak}
[root@wangqing ~]# vim /etc/pam.d/vsftpd //只需要以下三行
#%PAM-1.0
auth required pam_userdb.so db=/etc/vsftpd/vu
account required pam_userdb.so db=/etc/vsftpd/vu
//修改vsftpd配置文件,添加虛擬用戶支持
[root@wangqing ~]# echo 'guest_enable=YES' >> /etc/vsftpd/vsftpd.conf
[root@wangqing ~]# echo 'guest_username=vftp' >> /etc/vsftpd/vsftpd.conf
//爲不同的虛擬用戶建立獨立的配置文件
[root@wangqing ~]# echo 'user_config_dir=/etc/vsftpd/vusers_dir' >> /etc/vsftpd/vsftpd.conf
[root@wangqing ~]# echo 'allow_writeable_chroot=YES' >> /etc/vsftpd/vsftpd.conf
//有了上述配置後,就可以在/etc/vsftpd/vusers_dir目錄中爲每個虛擬用戶分別建立配置文件了。 \
//例如,若要使用虛擬用戶tom能夠上傳文件、創建目錄,而jerry只有默認的下載權限, \
//可以執行以下操作
[root@wangqing ~]# mkdir /etc/vsftpd/vusers_dir
[root@wangqing ~]# ll /etc/vsftpd/
total 36
-rw-------. 1 root root 125 Mar 23 2017 ftpusers
-rw-------. 1 root root 361 Mar 23 2017 user_list
-rw-------. 1 root root 5106 Aug 2 16:01 vsftpd.conf
-rwxr--r--. 1 root root 338 Mar 23 2017 vsftpd_conf_migrate.sh
-rw-------. 1 root root 12288 Aug 2 15:53 vu.db
-rw-------. 1 root root 18 Aug 2 15:50 vu.list
drwxr-xr-x. 2 root root 6 Aug 2 16:03 vusers_dir
//設置tom用戶可上傳文件、創建目錄
[root@wangqing ~]# echo 'anon_upload_enable=YES' >> /etc/vsftpd/vusers_dir/tom
[root@wangqing ~]# echo 'anon_mkdir_write_enable=YES' >> /etc/vsftpd/vusers_dir/tom
// anon_other_write_enable=YES anon_umask=022 (上傳用的umask碼)
//設置jerry用戶只有默認的下載權限,只需要創建一個名爲jerry的空文件即可
[root@localhost ~]# touch /etc/vsftpd/vusers_dir/jerry
//注意:虛擬用戶是通過匿名訪問的,所以必須開啓匿名訪問功能!!!
//啓動服務
[root@localhost ~]# systemctl start vsftpd
[root@localhost ~]# ss -antl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:22 *:*
LISTEN 0 32 :::21 :::*
LISTEN 0 128 :::22 :::*
LISTEN 0 100 ::1:25 :::*
客戶端:
客戶端需要下載工具:yum install -y lftp
lftp -u + 用戶,密碼+ IP地址
5.3.1 虛擬用戶配置
# 先安裝ftp
[root@100 ~]# yum -y install vsftpd
# 創建文本格式的用戶名、密碼列表,例如若要添加兩個用戶tom、jerry,密碼分別爲123、456
[root@100 ~]# cat > /etc/vsftpd/vu.list << EOF
> tom
> 123
> jerry
> 456
> EOF
[root@100 ~]# cat /etc/vsftpd/vu.list
tom
123
jerry
456
# 這裏面奇數行爲賬號偶數行爲密碼
# 將剛創建的文本格式用戶名、密碼文件使用db4工具轉換成數據庫文件
[root@100 ~]# db_load -T -t hash -f /etc/vsftpd/vu.list /etc/vsftpd/vu.db
# 上面的-T表示轉換,-t表示加密方式使用hash算法加密
# 爲提高虛擬用戶帳號文件的安全性,應將文件權限設置爲600,以避免數據外泄
[root@100 ~]# chmod 600 /etc/vsftpd/vu.*
[root@100 ~]# ll /etc/vsftpd/vu.*
-rw------- 1 root root 12288 7月 30 10:43 /etc/vsftpd/vu.db
-rw------- 1 root root 18 7月 30 10:42 /etc/vsftpd/vu.list
# 添加虛擬用戶的映射帳號、創建ftp根目錄。例如要將使用的ftp根目錄設置爲/runtime,映射帳號的名稱爲vftp,可以執行以下操作
[root@100 ~]# useradd -d /runtime -s /sbin/nologin vftp
[root@100 ~]# chmod 755 /runtime/
# 爲虛擬用戶建立PAM認證(建議複製一個備份文件在同一目錄下,以防直接修改錯誤,而無法恢復。)
[root@100 ~]# cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak
[root@100 ~]# vim /etc/pam.d/vsftpd //只需要以下三行內容
#%PAM-1.0
auth required pam_userdb.so db=/etc/vsftpd/vu
account required pam_userdb.so db=/etc/vsftpd/vu
# 修改vsftpd配置文件,添加虛擬用戶支持
[root@100 ~]# echo 'guest_enable=YES' >> /etc/vsftpd/vsftpd.conf
[root@100 ~]# echo 'guest_username=vftp' >> /etc/vsftpd/vsftpd.conf
# 爲不同的虛擬用戶建立獨立的配置文件
[root@100 ~]# echo 'user_config_dir=/etc/vsftpd/vusers_dir' >> /etc/vsftpd/vsftpd.conf
[root@100 ~]# echo 'allow_writeable_chroot=YES' >> /etc/vsftpd/vsftpd.conf
# 例如,若要使用虛擬用戶tom能夠上傳文件、創建目錄,而jerry只有默認的下載權限
# 可以執行以下操作
[root@100 ~]# mkdir /etc/vsftpd/vusers_dir
# 設置tom用戶可上傳文件、創建目錄
[root@100 ~]# echo 'anon_upload_enable=YES' >> /etc/vsftpd/vusers_dir/tom
[root@100 ~]# echo 'anon_mkdir_write_enable=YES' >> /etc/vsftpd/vusers_dir/tom
# 設置jerry用戶只有默認的下載權限,只需要創建一個名爲jerry的空文件即可
touch /etc/vsftpd/vusers_dir/jerry
# 啓動服務
[root@100 ~]# systemctl start vsftpd
[root@100 ~]# ss -antl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:22 *:*
LISTEN 0 32 :::21 :::*
LISTEN 0 128 :::22 :::*
LISTEN 0 100 ::1:25 :::*
# 關閉防火牆和selinux
[root@100 ~]# getenforce
Disabled
[root@100 ~]# systemctl stop firewalld
[root@100 ~]# systemctl disable firewalld
# 客戶端驗證:
# 安裝客戶端工具lftp
[root@96 ~]# yum -y install lftp
# 使用tom用戶登錄
[root@96 ~]# lftp -u tom,123 192.168.100.100
lftp tom@192.168.100.100:~>
# 在服務端創建一個文件,客戶端在遠程主機上下載
[root@100 ~]# cd /runtime/
[root@100 runtime]# touch hello
[root@100 runtime]# ls
hello
lftp tom@192.168.100.100:/> ls
-rw-r--r-- 1 0 0 0 Jul 30 03:07 hello
lftp tom@192.168.100.100:/> get hello
[root@96 ~]# ls
hello
# 上傳文件至遠程主機
lftp tom@192.168.100.100:/> put haha
lftp tom@192.168.100.100:/> ls
-rw------- 1 1001 1001 0 Jul 30 03:12 haha
-rw-r--r-- 1 0 0 0 Jul 30 03:07 hello
[root@100 ~]# ls /runtime/
haha hello
# 在遠程主機上創建目錄
lftp tom@192.168.100.100:/> mkdir xixi
mkdir 成功, 建立 `xixi'
lftp tom@192.168.100.100:/> ls
-rw------- 1 1001 1001 0 Jul 30 03:12 haha
-rw-r--r-- 1 0 0 0 Jul 30 03:07 hello
drwx------ 2 1001 1001 6 Jul 30 03:14 xixi
[root@100 ~]# ls /runtime/
haha hello xixi
# 使用jerry用戶登錄
[root@96 ~]# lftp -u jerry,456 192.168.100.100
lftp jerry@192.168.100.100:~>
# 在遠程主機上下載文件
lftp jerry@192.168.100.100:~> ls
-rw------- 1 1001 1001 0 Jul 30 03:12 haha
-rw-r--r-- 1 0 0 0 Jul 30 03:07 hello
drwx------ 2 1001 1001 6 Jul 30 03:14 xixi
lftp jerry@192.168.100.100:/> lcd /opt/
lcd 成功, 本地目錄=/opt
lftp jerry@192.168.100.100:/> get hello
[root@96 ~]# ls /opt/
hello
# 在遠程主機上上傳文件
lftp jerry@192.168.100.100:/> put a
put: Access failed: 550 Permission denied. (a) //此處沒有權限,因爲開始只給了Jerry用戶下載的權限
lftp jerry@192.168.100.100:/>
5.3.2 匿名用戶配置
# 安裝vsftpd
[root@100 ~]# yum -y install vsftpd
# 修改 /etc/vsftpd/vsftp.conf 文件:(建議複製一個備份文件在同一目錄下,以防直接修改錯誤,而無法恢復。)
# 例如匿名用戶有創建目錄和上傳文件的權限
[root@100 ~]# echo 'anon_mkdir_write_enable=YES' >>/etc/vsftpd/vsftpd.conf
[root@100 ~]# echo 'anon_upload_enable=YES' >>/etc/vsftpd/vsftpd.conf
保存退出,重啓FTP服務器:
[root@100~]# systemctl restart vsftpd
# 關閉防火牆和selinux
[root@100 ~]# getenforce
Disabled
[root@100 ~]# systemctl stop firewalld
[root@100 ~]# systemctl disable firewalld
在 /var/ftp 目錄下創建文件abc
[root@100 ~]# cd /var/ftp/
[root@100 ftp]# touch abc
[root@100 ftp]# ls
abc pub
# 客戶端驗證:
[root@96 ~]# lftp -u ftp 192.168.100.100 (用戶名爲ftp密碼爲空)
口令:
lftp ftp@192.168.100.100:~> ls
-rw-r--r-- 1 0 0 0 Jul 30 03:39 abc
drwxr-xr-x 2 0 0 6 Mar 23 2017 pub
# 從遠程主機下載文件
lftp ftp@192.168.100.100:/> get abc
[root@96 ~]# ls
abc
# 將/var/ftp/ 目錄權限改爲777 (不然不能創建和上傳)
[root@100 ~]# chmod -R 777 /var/ftp/
# 在遠程主機上創建文件
lftp ftp@192.168.100.100:/> mkdir hehe
mkdir 成功, 建立 `hehe'
lftp ftp@192.168.100.100:/>
[root@100 ftp]# ls
abc hehe pub
# 從遠程主機上上傳文件
lftp ftp@192.168.100.100:/> put hello
lftp ftp@192.168.100.100:/>
[root@localhost ftp]# ls
abc hehe hello pub
# 刪除文件會失敗因爲沒有刪除的權限
lftp ftp@192.168.100.100:/> ls
-rwxrwxrwx 1 0 0 0 Jul 30 03:39 abc
drwxrwxrwx 2 14 50 6 Jul 30 03:57 hehe
-rw------- 1 14 50 0 Jul 30 04:02 hello
drwxrwxrwx 2 0 0 6 Mar 23 2017 pub
lftp ftp@192.168.100.100:/> rm -f hello
lftp ftp@192.168.100.100:/> ls
-rwxrwxrwx 1 0 0 0 Jul 30 03:39 abc
drwxrwxrwx 2 14 50 6 Jul 30 03:57 hehe
-rw------- 1 14 50 0 Jul 30 04:02 hello
drwxrwxrwx 2 0 0 6 Mar 23 2017 pub
5.3.3 系統用戶配置
# 安裝vsftpd
[root@100 ~]# yum -y install vsftpd
# 修改 /etc/vsftpd/vsftp.conf 文件:(建議複製一個備份文件在同一目錄下,以防直接修改錯誤,而無法恢復。)
[root@100 ~]# echo 'chroot_local_user=YES' >>/etc/vsftpd/vsftpd.conf
[root@100 ~]# echo 'chroot_list_enable=YES' >>/etc/vsftpd/vsftpd.conf
[root@100 ~]# echo 'chroot_list_file=/etc/vsftpd/chroot_list' >>/etc/vsftpd/vsftpd.conf
# 保存退出,重啓FTP服務器:
[root@100 ~]# systemctl restart vsftpd
# 設置用戶名和密碼
[root@100 ~]# useradd natasha -d /data
[root@100 ~]# echo "12" |passwd --stdin natasha
# 在 /etc/vsftpd 目錄下建立chroot_liste文件,將用戶名添加進去
[root@100 ~]# touch /etc/vsftpd/chroot_list
[root@100 ~]# echo 'natasha' >/etc/vsftpd/chroot_list
# 關閉防火牆和selinux
[root@100 ~]# getenforce
Disabled
[root@100 ~]# systemctl stop firewalld
[root@100 ~]# systemctl disable firewalld
# 客戶端驗證:
# 系統用戶登錄
[root@96 ~]# lftp -u natasha,12 192.168.100.100
lftp natasha@192.168.100.100:~>
[root@100 ~]# cd /data/
[root@100 data]# touch qq
[root@100 data]# ls
qq
lftp natasha@192.168.100.100:~> ls
-rw-r--r-- 1 0 0 0 Jul 30 04:34 qq
# 創建目錄
lftp natasha@192.168.100.100:~> mkdir ww
mkdir 成功, 建立 `ww'
lftp natasha@192.168.100.100:~> ls
-rw-r--r-- 1 0 0 0 Jul 30 04:34 qq
drwxr-xr-x 2 1001 1001 6 Jul 30 04:38 ww
# 刪除目錄
lftp natasha@192.168.100.100:~> rm -rf ww
rm 成功, 刪除 `ww'
lftp natasha@192.168.100.100:~> ls
-rw-r--r-- 1 0 0 0 Jul 30 04:34 qq
# 上傳和下載文件
lftp natasha@192.168.100.100:~> put haha
lftp natasha@192.168.100.100:~> ls
-rw-r--r-- 1 1001 1001 0 Jul 30 04:40 haha
-rw-r--r-- 1 0 0 0 Jul 30 04:34 qq
lftp natasha@192.168.100.100:~> get qq
[root@96 ~]# ls
qq
# 因爲put、get都只能對文件進行操作所以可以使用mirror對目錄進行鏡像
# 從遠程主機上下載目錄到本地
lftp natasha@192.168.100.100:~> mkdir kk
mkdir 成功, 建立 `kk'
lftp natasha@192.168.100.100:~> ls
-rw-r--r-- 1 1001 1001 0 Jul 30 04:40 haha
drwxr-xr-x 2 1001 1001 6 Jul 30 04:41 kk
-rw-r--r-- 1 0 0 0 Jul 30 04:34 qq
lftp natasha@192.168.100.100:~> mirror kk
Total: 1 directory, 0 files, 0 symlinks
[root@96 ~]# ls
kk
# 從本地上傳目錄至遠程主機
[root@96 ~]# mkdir mm
lftp natasha@192.168.100.100:~> mirror -R mm (上傳需要使用-R選項)
Total: 1 directory, 0 files, 0 symlinks
lftp natasha@192.168.100.100:~> ls
-rw-r--r-- 1 1001 1001 0 Jul 30 04:40 haha
drwxr-xr-x 2 1001 1001 6 Jul 30 04:41 kk
drwxr-xr-x 2 1001 1001 6 Jul 30 04:45 mm
-rw-r--r-- 1 0 0 0 Jul 30 04:34 qq
[root@100 data]# ls
haha kk mm qq