使用 lftp 获取继续行为(不重新下载已存在的文件)



所以,我有一个脚本可以从种子箱下载东西。它适用于远程服务器中然后在我的本地服务器上镜像的新文件。问题是,例如,当我想删除不必要的文件时,再次运行脚本会再次重新下载相同的文件。我尝试进入镜像的手册页,但没有帮助。以下是镜像文件的脚本:

#!/bin/bash
login=XXXX
pass=XXXXXX
host=XXXXX
remote_dir=/files/
local_dir=/home/XXX/XXX
trap "rm -f /tmp/seedroots.lock" SIGINT SIGTERM
if [ -e /tmp/seedroots.lock ]; then
   echo "Synctorrent is running already."
   exit 1
else
   touch /tmp/seedroots.lock
   lftp -p 21 -u $login,$pass $host << EOF
   set ftp:ssl-allow no
   set mirror:use-pget-n 5
   mirror -c -P5 --log=synctorrents.log $remote_dir $local_dir
   EOF
   rm -f /tmp/seedroots.lock
   exit 0
fi

我缺少的镜像选项是否不会再次重新下载本地删除的文件?

lftp 中的 mirror 命令有一个 --continue 标志,这将导致您想要的行为。

你应该试试我的脚本版本(未经测试(:

#!/bin/bash
login=XXXX
pass=XXXXXX
host=XXXXX
remote_dir=/files/
local_dir=/home/XXX/XXX
files=$local_dir/*
trap "rmdir /tmp/seedroots.lock" 0 1 2 3 15
if [[ -d /tmp/seedroots.lock ]]; then
    echo "Synctorrent is running already."
    exit 1
else
    mkdir /tmp/seedroots.lock
    lftp -p 21 -u $login,$pass $host << EOF
    set ftp:ssl-allow no
    set mirror:use-pget-n 5
    mget $files
    EOF
fi

它做什么 :

  • 我构建了一个本地文件列表,随后,使用变量 $files 在 ftp 服务器上获取所有这些文件。
  • 我用目录替换了锁定文件:搜索有关原子性的网络。
    文件不是原子的,而目录是原子的。
  • 疏水阀在正常出口和其他信号下运行
  • 如果您使用的是 bash,[[ ]]测试功能更强大。
  • 缩进不仅仅是一个选项;)

如果您只是窃取文件(而不是种子(,则可以使用 lftp 镜像--Remove-source-files选项在传输后在源中删除文件(因此没有重复,重新下载(。

相关内容

  • 没有找到相关文章

最新更新