Копировать файлы из одного каталога на другую, игнорирующие файлы, в которых файл назначения был изменен в течение последнего часа?

Как описано здесь, вы можете написать небольшой сценарий оболочки:

for dest in $(

Вам просто нужно создать destinations.txt файл, в котором вы заполните в каждой строке пункт назначения user@host, что-то вроде следующего, например. :

root@192.168.1.65
phphil@unix.stackexchange.com

Обратите внимание, что путь назначения (/remote/path/) жестко закодирован в скрипте, это означает, что этот путь должен существовать на обоих серверах. Если вы предпочитаете устанавливать выделенный путь для каждого места назначения, вы можете отредактировать скрипт, удалить :/remote/path/ и установить его для каждой записи в destinations.txt.

В противном случае вы можете взглянуть на parallel-scp

0
26.07.2018, 00:54
2 ответа

Я не знаю ни одной команды, которая точно соответствовала бы вашим требованиям. Что-то вроде этого должно работать (удалите --dry-runкогда вы уверены, что довольны результатом; замените --verboseна --quiet, если вы хотите, чтобы он работал тише):

src=/path/to/source
dst=/path/to/target

comm -z -23 \
        <(find "$src" -type f -printf '%P\0' | sort -z) \
        <(find "$dst" -type f -mmin -60 -printf '%P\0' | sort -z) |
    rsync --dry-run --verbose --archive --from0 --files-from - "$src" "$dst"

Предполагается, что относительно новые утилиты понимают, как обрабатывать строки, завершающиеся NUL -. При необходимости и при условии, что вы можете гарантировать, что имена файлов не содержат символов новой строки, вы можете удалить три флага -zи rsync--from0и заменить \0в командах findна \n.

0
28.01.2020, 04:16

Если все ваши копии относятся к существующим файлам, вы можете посмотреть на это по-другому :перезаписать локальные файлы, если они старше одного часа. Таким образом, с каталогом назначения в качестве рабочего каталога:

find. -mindepth 1 -maxdepth 1 -type f -mmin +60 -exec cp /source/directory/{}. \;

где:

  • find. -mindepth 1 -maxdepth 1 -type f -mmin +60находит локальные файлы старше часа
  • -exec cp /source/directory/{}. \;перезаписывает их своим тезкой из/source/directory
0
28.01.2020, 04:16

Теги

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