Итак, у меня, казалось бы, простая проблема, но до сих пор я не нашел решения: я хочу исключить самый верхний каталог из rsync, сохраняя при этом синхронизацию всех его дочерних элементов. Особая проблема заключается в том, что у меня нет разрешения изменять время самого верхнего каталога, но я хочу, чтобы все дочерние элементы правильно синхронизировали время.
Команда rsync, которую я использую, выглядит следующим образом:
rsync --exclude ./ -rlptDu ./ server.example.com:/usr/local/directory/
и server.example.com:/usr/local/directory/
выглядит так:
drwxrws--- 5 root staff 24576 Jul 9 15:00 .
(мой локальный пользователь является членом staff
)
Когда я запускаю rsync, я получаю следующую ошибку:
rsync: failed to set times on "/usr/local/directory/.": Operation not permitted (1)
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1070) [sender=3.0.9]
make: *** [pub_to_mel_internal] Error 23
Это версия 3.0.9 на локальной машине и 3.0.7 на удаленной, обе машины работают под управлением Debian.
Ответы:
Я думаю, что правила фильтрации rsync не могут соответствовать каталогу верхнего уровня, поэтому он всегда синхронизируется. Обходной путь - синхронизировать все файлы в этом каталоге вместо самого каталога.
Добавьте
.[!.]*
после,*
если у вас есть точечные файлы в верхнем каталоге, и..?*
если у вас есть имена файлов, начинающиеся с двух точек.источник
*
заключалась в том, что--delete
файлы не были удалены, поскольку они не были частью поиска.