将文件从远程服务器复制到本地,忽略现有文件(rsync不可用)

时间:2011-07-07 03:35:24

标签: scp

我想从远程服务器复制文件目录。由于它是大量文件,因此需要忽略目标服务器上的现有文件。 不幸的是,rsync由于某种原因不可用(远程服务器来自CDN服务,并且超出了我的控制范围)。 所以我觉得我在相关文件夹上使用scp -r卡住了。

无论如何都忽略现有文件吗?

感谢

3 个答案:

答案 0 :(得分:1)

您还可以创建* .tar.gz或* .tar.bz2存档,scp它,然后解压缩它。我不知道scp -r是否使用任何压缩。如果没有,首先压缩所有内容可能会使其更快。

答案 1 :(得分:1)

使用模块Net::SFTP::Foreign在Perl中编写脚本很容易:

#!/usr/bin/perl

use Net::SFTP::Foreign;
my $sftp = Net::SFTP::Foreign->new('user@host');
$sftp->die_on_error;
$sftp->rget('/remote/path', '/local/path',
             resume => 'auto',
             on_error => sub { my ($sftp, $e) = @_;
                               warn "error processing $e->{filename}: "
                                    . $sftp->error;
                              }
            );

答案 2 :(得分:0)

SCP需要一个可写文件,以便它可以替换该文件。

使用此选项,对于您不想替换的文件,可以删除为其写入的权限。并继续使用scp获取所有文件。

https://unix.stackexchange.com/a/51932/284063