rsync: как исключить самый верхний каталог

rsync: как исключить самый верхний каталог

Итак, у меня, казалось бы, простая проблема, но пока я не нашел решения: я хочу исключить самый верхний каталог из 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.

решение1

Я думаю, что правила фильтрации rsync не могут соответствовать каталогу верхнего уровня, поэтому он всегда синхронизирован. Обходной путь — синхронизировать все файлы внутри этого каталога, а не сам каталог.

rsync -rlptDu -- * server.example.com:/usr/local/directory/

Добавьте .[!.]*после *, если в самом верхнем каталоге есть файлы с точками, и ..?*если имена файлов начинаются с двух точек.

решение2

Похоже, rsync может исключить самый верхний каталог с помощью --files-from:

$ rsync -anv from/ to/
sending incremental file list
./
a
b.test

sent 97 bytes  received 25 bytes  244.00 bytes/sec
total size is 0  speedup is 0.00 (DRY RUN)
$ printf '%s\n' 'a' 'b.test' | rsync -anv --files-from=- from/ to/
building file list ... done
a
b.test

sent 88 bytes  received 22 bytes  220.00 bytes/sec
total size is 0  speedup is 0.00 (DRY RUN)

Просто наткнулся на это и оставляю здесь подсказку, вдруг она кому-то поможет (или мне в будущем).

Связанный контент