Копировать файлы с удаленного сервера на локальный, игнорируя существующие файлы (rsync недоступен) - PullRequest
2 голосов
/ 07 июля 2011

Я хотел бы скопировать каталог файлов с удаленного сервера. Поскольку это большое количество файлов, желательно игнорировать существующие файлы на конечном сервере. К сожалению, rsync по какой-то причине недоступен (удаленный сервер из службы CDN и находится вне моего контроля). Так что я думаю, что застрял с помощью scp -r в рассматриваемой папке.

Есть ли способ сделать это, игнорируя существующие файлы?

спасибо

Ответы [ 3 ]

1 голос
/ 07 июля 2011

С помощью модуля 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;
                              }
            );
1 голос
/ 07 июля 2011

Вы также можете создать * .tar.gz или * .tar.bz2 архив, скопировать его, а затем распаковать.Я не знаю, использует ли scp -r какое-либо сжатие.Если нет, то сжатие сначала может потенциально ускорить процесс.

0 голосов
/ 03 апреля 2018

SCP нужен файл для записи, чтобы он мог заменить этот файл.

Используя это, для файлов, которые вы не хотите заменять, вы можете удалить разрешение на запись для них. И продолжить со своим scp для всех файлов.

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

...