lftp镜像不符合我标准的目录

时间:2013-01-02 22:08:52

标签: linux bash shell mirror lftp

我一直在编写一个lftp脚本,它应该有效地将远程目录镜像到本地目录,可能一次传输多个千兆字节的文件。

其中一个要求是本地用户可以在不再需要时删除本地文件,因为我将有多台“本地”计算机运行此脚本,我不想删除远程文件,直到我知道每个需要它的人,有它。因此,脚本使用--newer-than标志仅镜像自上次lftp脚本本地运行以来在远程服务器上新建/修改的文件。

这是脚本的重要部分:

lftp -u $login,$pass $host << EOF
set ftp:ssl-allow yes
set ftp:ssl-protect-data yes
set ftp:ssl-protect-list yes
set ftp:ssl-force yes
set mirror:use-pget-n 5

mirror -X * -I share*/* --newer-than=/local/file/last.run --continue --parallel=5 $remote_dir $local_dir

quit
EOF

请注意,EOF不是bash脚本的实际结尾。

所以我除了$ remote_dir中的所有内容,除了share /目录中的任何内容,包括比last.run文件的时间戳更新的共享/目录本身。

这可以正常工作,除了在一个案例中我说在share /中有另一个特别命名的目录/名为shareWHATEVER /

所以share / shareWHATEVER / stuff.txt存在。

第一次运行时,shareWHATEVER / stuff.txt被远程复制到本地,一切都很顺利。

如果我在本地完全删除shareWHATEVER目录,包括stuff.txt,那么下次脚本运行时,stuff.txt它没有镜像,但是shareWHATEVER是,即使远程服务器上的时间戳没有改变。

所以本地看起来像share / shareWHATEVER /目录为空。

任何想法为什么shareWHATEVER被复制,即使它自己的时间戳或其任何文件的时间戳都不是 - 比我的本地检查更新?

感谢。

1 个答案:

答案 0 :(得分:0)

显然,即使没有复制文件也可以创建目录lftp的工作方式(而mirror选项--no-empty-dirs不会改变此行为。)

您可以在lftp mailing list中讨论这个问题。