FTP Recursive ...如果我已经拥有该文件,如何跳过它?

时间:2011-03-31 17:34:48

标签: perl

我正在使用Net::FTP::Recursive每天将我服务器上的所有文件下载到localhost。有没有办法在localhost b / f检查文件是否存在我下载了所有内容?我想跳过我已下载的文件。

my $host = "host"; my $user = "u"; my $password = "p";
my$f = Net::FTP::Recursive->new($host, Debug => 0, Passive => 0);
    $f->login($user,$password);
    $f->rget();    
    $f->quit;

2 个答案:

答案 0 :(得分:4)

rget中的Net::FTP::Recursive方法采用ParseSub => sub { ... }参数来决定应检索远程服务器上的哪些文件。

查看the source code中的parse_files方法 - 这是rget使用的默认函数 - 并了解如何使用它的修改版本来排除文件已存在于您当地的主机上。

答案 1 :(得分:2)

在初始化FTP连接之前,您可以做的是获取本地计算机上的文件列表。然后将它们组合成一个正则表达式,并使用OmitFiles的{​​{1}}属性来省略本地计算机上的文件。

当然,这不能处理在远程计算机上修改文件而您没有修改的情况。或者您的转移被中断并且您只有半个文件的情况。

您应该考虑使用rget代替,无论是使用命令行程序还是使用File::Rsync module