![如何使用lftp在下载新文件之前删除旧文件?](https://linux22.com/image/103500/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8lftp%E5%9C%A8%E4%B8%8B%E8%BD%BD%E6%96%B0%E6%96%87%E4%BB%B6%E4%B9%8B%E5%89%8D%E5%88%A0%E9%99%A4%E6%97%A7%E6%96%87%E4%BB%B6%EF%BC%9F.png)
我在 Raspbian 上运行 lftp
我在远程站点上有 100GB 的内容,并且我的 SD 卡上有 100GB 的可用空间,因此我需要在下载新内容之前从 SD 卡中删除远程站点上不存在的文件。
我怎样才能实现这个目标?
#!/bin/bash
login="username"
pass="password"
host="server.feralhosting.com"
remote_dir="/folder/you/want/to/copy"
local_dir="/cygdrive/s/lftp/somefolder/where/you.want/your/files/"
base_name="$(basename "$0")"
lock_file='/tmp/'"$base_name"'.lock'
trap 'rm -f '"$lock_file"'' SIGINT SIGTERM
if [[ -e "$lock_file" ]]
then
echo "$base_name is running already."
exit 1
else
touch "$lock_file"
lftp -u $login,$pass $host << EOF
set ftp:ssl-allow no
set mirror:use-pget-n 5
mirror -c -P5 --log='/var/log/'"$base_name"'.log' "$remote_dir" "$local_dir"
quit
EOF
rm -f "$lock_file"
trap - SIGINT SIGTERM
exit 0
fi
答案1
我找到了解决方案。
添加 --delete-first 选项,因此:
mirror -c -P5 --log='/var/log/'"$base_name"'.log' "$remote_dir" "$local_dir"
变成这样:
mirror -c -P5 --delete-first --log='/home/osmc/'"$base_name"'.log' "$remote_dir" "$local_dir"