【问题标题】:Getting continue behavior (not redownloading files already present) using lftp.使用 lftp 获得继续行为(不重新下载已经存在的文件)。
【发布时间】:2012-05-23 18:39:58
【问题描述】:

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

#!/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 的问题,而不是一般的 bash ftp,可能应该这样标记(并在摘要中描述)。

标签: bash lftp


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    #!/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 服务器上管理所有这些文件。
    • 我用 dir 替换了 lock 文件:搜索有关 atomicity 的网络。
      文件不是原子的,而目录是原子的。
    • 陷阱在正常退出和其他信号下运行
    • 如果您使用 bash,[[ ]] 测试更强大。
    • 缩进不仅仅是一种选择;)

    【讨论】:

    • 由于您将文件存储为非数组变量,这种方法不会因文件名包含空格而失败吗?此外,您正在计算 local 列表,但随后获取它们而不是放置它们......您不需要 remote 列表来获取吗?
    【解决方案3】:

    如果您只是提取文件(不是播种),您可以使用带有--Remove-source-files 选项的 lftp 镜像在传输后从源删除文件(这样就不会重复,重新下载)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多