2016-06-08 2 views
1

Я хочу rsync содержание от /local/path до server:/remote/path.Обновление с помощью rsync и удаление из исходной папки

  • файлов заканчиваются расширениями, состоящих 4 цифры

  • Если файл не существует в удаленном пути, скопируйте файл на удаленный и удалить из местного

  • Если файл существует в удаленный путь и размер не меньше, чем локальный, не копировать файл на удаленный и удалить его из локального

Я попытался

rsync -avmhP --include='*.[0-9][0-9][0-9][0-9]' --include='*/' --exclude='*' --size-only --remove-source-files /local/path server:/remote/path 

Однако некоторые файлы, существующие в удаленном пути, остаются в локальном пути.

Другой вопрос: зачем нам --include='*/' --exclude='*'? Почему только --include='*.[0-9][0-9][0-9][0-9]' не работает для фильтрации файлов?

ответ

1

Вы имеете в виду --remove-sent-file вместо remove-source-file?

По the rsync man page:

--remove-sent-file

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

Это означает, что из источника удалены только переданные файлы (те, у кого изменился размер). Чтобы активировать включенный файл, сначала нужно исключить все остальные, но мой шаблон include. В 3 аргументы вы использовали среднее «Я исключил все файлы (--include='*/' --exclude='*'), но те, соответствие мой рисунок (--include='*.[0-9]{4}')

От человека странице:

--include=PATTERN

не исключают файлы соответствия ОБРАЗЕЦ

--exclude=PATTERN

исключить файлы в соответствие PATTERN

 Смежные вопросы

  • Нет связанных вопросов^_^