Как скопировать только новые файлы с помощью “scp” команду?

Вы не должны туннелировать ssh. Вы можете ssh к посредническому хосту затем ssh где-либо еще Вам нужно.

Можно даже сделать это в единственной команде путем принуждения выделения использования pseudo-tty -t флаг:

me@inside$ ssh -t intermediary ssh external
Last login: Fri Sep 21 14:13:25 2012 from intermediary
me@external$ logout
Connection to external closed.
Connection to intermediary closed.
me@inside$ 

Единственные вниз примыкают, то, что у Вас есть несколько сессий SSH. Но я не могу действительно видеть, почему это было бы проблемой.

24
13.04.2017, 15:22
3 ответа

Можно использовать rsync для него. rsync действительно разработан для этого типа операции.

Синтаксис:

rsync -avh /source/path/ host:/destination/path

или

rsync -a --ignore-existing /local/directory/ host:/remote/directory/

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

Если необходимо туннелировать, трафик посредством соединения SSH (например, в целях конфиденциальности), как обозначено Вами, первоначально прося основанное на SCP решение, просто добавляет -e ssh к параметрам к rsync. Например:

rsync -avh -e ssh /source/path/ host:/destination/path
40
27.01.2020, 19:40
  • 1
    --ignore-existing действительно требуемый? –  Meysam 14.12.2013, 14:41
  • 2
    Поскольку в этом примере руководства: rsync -t *.c foo:src/ -> "Это передало бы все файлы, соответствующие шаблону *.c от текущего каталога до каталога src на нечто машины. Если какой-либо из файлов уже существует в удаленной системе затем, rsync протокол удаленного обновления используется для обновления файла путем отправки только различий" –  Meysam 14.12.2013, 14:46
  • 3
    я обычно использую rsync -avuzh /source/path/ host:/destination/path. Это делает целое задание в одной команде, и на последующих вызовах, только передает файлы, которым нужен он. –  Edward Falk 25.06.2016, 00:07

Если вы хотите придерживаться SCP по какой-либо причине, вы можете удалить разрешения W в ваших локальных данных (если у вас есть право на это), и SCP не прикаси не с ним. Чтобы быть более точным:

  1. CHMOD AW LOCAL / *. TAR.GZ (в вашем локальном режиме)
  2. SCP Remote / *. Tar.gz Local

Это не очень эффективно, приятно, но может Помогите, если вам нужно быстрое временное решение, не переходя на что-то еще, чем SCP. (Kudos: SCP без замены существующих файлов в пункт назначения )

6
27.01.2020, 19:40

Не было точного ответа о том, как это сделать с SCP, так как именно это и задавался исходным вопросом.

sudo find / files / -type f -exec chmod aw {} \;

scp -r (скрытый) / files

После завершения копирования файлов измените права доступа обратно:

sudo chmod a + w -R / files

4
27.01.2020, 19:40

Теги

Похожие вопросы