我想从远程服务器复制文件目录。由于它是大量文件,因此需要忽略目标服务器上的现有文件。 不幸的是,rsync由于某种原因不可用(远程服务器来自CDN服务,并且超出了我的控制范围)。 所以我觉得我在相关文件夹上使用scp -r卡住了。
无论如何都忽略现有文件吗?
感谢
答案 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获取所有文件。