lftp介绍:
lftp 是一个功能强大的下载工具,它支持访问文件的协议: ftp, ftps, http, https, hftp, fish.(其中ftps和https需要在编译的时候包含openssl库)。llftp的界面非常像一个shell: 有命令补全,历史记录,允许多个后台任务执行等功能,使用起来非常方便。它还有书签、排队、镜像、断点续传、多进程下载等功能。
lftp 安装:
装好后看一下
# lftp -v
# man lftp
lftp配置文件:
全局配置文件
# vi /etc/lftp.conf
set ftp:charset GBK
set file:charset UTF-8
set ftp:passive-mode no
用户配置文件
# vi ~/.lftp/rc
或者
# vi ~/.lftprc
debug 3
可以看到出错信息了
更多的配置选项请查man手册或在lftp界面内用命令 set -a~/.lftp/log
~/.lftp/log
当lftp转为后台非挂起模式执行时,输出将重定向到这里
~/.lftp/bookmarks
这是lftp存储书签的地方,可以lftp查看bookmark命令
~/.lftp/cwd_history
这个文件用来存储访问过的站点的工作目录
lftp 使用方法:
lftp ftp://user:password@site:port
lftp user:password@site:port
lftp site -p port -u user,password
lftp site:port -u user,password
命令行选项:
lftp –help
-f 执行文件中的命令后退出
-c 执行命令后退出
–help 显示帮助信息后退出
–version 显示 lftp 版本后退出
其他的选项同 ‘open’ 命令
-e 在选择后执行命令
-u [,] 使用指定的用户名/口令进行验证
-p 连接指定的端口
常用命令:
!
可执行本地端 shell中的命令, 如 !ls
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 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中的命令
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,对于同时开启多个控制台或同控制台不同目录间切换
后台任务管理:
按Ctrl+z,正在执行的任务将转为后台执行,也可以在命令行末尾加&符号使任务在后台执行。fg后台转为前台执行。用jobs命令可以查看所有的后台进程。用queue命令可以排队新的任务。如果退出lftp是还有任务在后台执行,lftp将转为后台执行。
lftp的queue 示例:
lftp localhost:/pub/Iso> queue
lftp localhost:/pub/Iso> jobs
0 queue (ftp://localhost)
Queue is stopped.
lftp localhost:/pub/Iso> queue get rettcd.iso
lftp localhost:/pub/Iso> jobs
0 queue (ftp://localhost)
Queue is stopped.
Commands queued:
1. get rettcd.iso
lftp localhost:/pub/Iso> queue mirror Linux/
lftp localhost:/pub/Iso> jobs
0 queue (ftp://localhost)
Queue is stopped.
Commands queued:
1. get rettcd.iso
2. mirror Linux/
lftp localhost:/pub/Iso> queue start
lftp localhost:/pub/Iso> jobs
0 queue (ftp://localhost)
Now executing: 1 get rettcd.iso
Commands queued:
1. mirror Linux/
1 get rettcd.iso
`rettcd.iso’ at 4772864 (9%) 3.00M/s eta:14s Receiving data
自动同步的脚本示例:
#!bin/bash
echo “script start at `date ”+%Y-%m-%d %H:%M:%S”
HOST=”hostname”
USER=”yourname”
PASS=”password”
LCD=”LocalePath”
RCD=”RemotePath”
/usr/sbin/lftp << EOF
open ftp://$USER:$PASS@$HOST
mirror $RCD $LCD
EOF
echo “script end at “ `date ”+%Y-%m-%d %H:%M:%S”