Во втором примере пакетные данные считываются через стандартный ввод, поэтому нет необходимости сначала копировать пакетный файл на удаленный компьютер. В этом примере не используется сценарий foo.sh, так как ему нужно было использовать измененную опцию --read-batch, но вы можете отредактировать файл сценария, если хотите использовать его (просто убедитесь, что никакой другой параметр не пытается использовать стандартный ввод, такой как опция "--exclude-from = -").
Предостережения:
Опция read-batch ожидает, что дерево назначения, которое оно обновляет, будет идентичным дереву назначения, которое использовалось для создания набора файлов пакетного обновления. При обнаружении различий между деревьями назначения обновление может быть сброшено с предупреждением (если файл, по-видимому, уже обновлен), или может быть предпринята попытка обновления файла, а затем, если файл не удается проверить , обновление отменено с ошибкой. Это означает, что было бы безопасно перезапустить операцию чтения пакета, если команда была прервана. Если вы хотите, чтобы пакетное обновление всегда выполнялось независимо от размера и даты файла, используйте параметр -I (при чтении пакета). Если произойдет ошибка, дерево назначения, вероятно, будет в частично обновленном состоянии. В таком случае,
Версия rsync, используемая во всех местах назначения, должна быть как минимум такой же новой, как та, которая использовалась для создания командного файла. Rsync умрет с ошибкой, если версия протокола в пакетном файле слишком новая для обработки пакетного чтения rsync. Смотрите также параметр --protocol, чтобы способ создания rsync генерировал пакетный файл, который может понять более старый rsync. (Обратите внимание, что пакетные файлы изменились в версии 2.6.3, поэтому смешивание версий более старых, чем с более новыми версиями, не будет работать.)
При чтении пакетного файла rsync принудительно заставит значения определенных опций соответствовать данным в пакетном файле, если вы не установили их так же, как команда пакетной записи. Другие параметры могут (и должны) быть изменены. Например, --write-batch меняет на --read-batch, --files-from удаляется, а параметры --filter / - include / - exclude не нужны, если не указан один из параметров --delete. ,
Код, который создает файл BATCH.sh, преобразует все параметры фильтра / включения / исключения в единый список, который добавляется в виде документа «здесь» в файл сценария оболочки. Опытный пользователь может использовать это для изменения списка исключений, если необходимо изменить то, что удаляется с помощью --delete. Обычный пользователь может игнорировать эту деталь и просто использовать сценарий оболочки как простой способ запустить соответствующую команду --read-batch для пакетных данных.
Исходный пакетный режим в rsync был основан на «rsync +», но в последней версии используется новая реализация.
remote destination is not allowed with --read-batch