lftp 是一款类 Unix 系统下命令行界面的 FTP 客户端软件,作者是 Alexander Lukyanov ,在 GNU通用公共许可证下发布。除了 FTP 外,还支持 FTPS 、 HTTP 、 HTTPS 、 SFTP 、 FXP 等多种协议。此外, lftp 也内含一个简单的 BitTorrent 客户端。
以下是使用lftp实现断点续传的一个脚本示例:
#!/bin/bash
# 配置信息
HOST="8.8.4.18" # 远程主机地址
USER="u38" # 用户名
PASS="sj21sdf@" # 密码
LOCAL_DIR="/opt/localdir" # 本地目录
REMOTE_DIR="/2025/remotedir" # 远程目录
echo "Start upload files at:"`date +%Y-%m-%d_%H:%M:%S`
# 使用lftp命令批量上传
lftp -u ${USER},${PASS} sftp://${HOST}/${REMOTE_DIR} <<EOF
pwd
lcd ${LOCAL_DIR}
lpwd
mput -c *.zip
bye
EOF
# 检查上传结果
if [ $? -eq 0 ]; then
echo "文件上传成功!"
echo `date +%Y-%m-%d_%H:%M:%S`
else
echo `date +%Y-%m-%d_%H:%M:%S`
echo "文件上传失败!"
fi
为了防止在传输过程中出现异常,导致上传文件遇到问题(在手动上传过程中,出现过一次网络闪断,还有一次文件大小长时间不变),我又准备了一个脚本/root/checkftp.sh放到任务计划中,每隔五分钟执行一次,内容如下:
pid=`ps -ef|grep lftp |grep u38|awk '{print $2}'`
if [ -z $pid ]; then
echo "lftp进程已退出,restart lftp process."
nohup /root/lftp_upload.sh &>/root/lftp.upload.log &
else
echo "`date +%Y-%m-%d/%H:%M:%S` >>> lftp进程未退出,进程号:$pid"
fi
read current_upload_last_filesize file_name <<< `/root/sftp_checkfiles.sh |tail -2 |head -1 |awk '{print $5, $NF}'`
if [ -f /root/upload_last_filesize.txt ];then
forward_upload_last_filesize=`cat /root/upload_last_filesize.txt`
else
forward_upload_last_filesize=${current_upload_last_filesize}
fi
echo ${current_upload_last_filesize} > /root/upload_last_filesize.txt
if [ ${current_upload_last_filesize} -eq $forward_upload_last_filesize ];then
echo "File size not changed,it's need to restart lftp process."
kill -9 $pid
nohup /root/lftp_upload.sh &>/root/lftp.upload.log &
else
echo "The size of $file_name has been changed to ${current_upload_last_filesize} from $forward_upload_last_filesize,nothing to do."
fi
/root/sftp_checkfiles.sh脚本内容如下:
#!/bin/bash
# 配置信息
HOST="8.8.4.18" # 远程主机地址
USER="u38" # 用户名
PASS="sj21sdf@" # 密码
LOCAL_DIR="/opt/localdir" # 本地目录
REMOTE_DIR="/2025/remotedir" # 远程目录
# 使用sftp命令批量上传
sshpass -p "$PASS" sftp -oBatchMode=no -b - $USER@$HOST <<EOF
ls -lrt $REMOTE_DIR
exit
EOF
最后一个脚本可以用一个命令替换。
sshpass -p "sj21sdf@" sftp -oBatchMode=no -b <(echo 'ls -lrt /2025/remotedir') u38@8.8.4.18
最后修改时间:2025-04-22 17:42:29
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




