rsync: як виключити верхній каталог


14

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


Чи знайомі ви з синтаксисом у цьому прикладі: wirespeed.xs4all.nl/mediawiki/index.php/… Це дозволяє включати конкретні файли / каталоги з інакше виключеного каталогу. Вам може знадобитися використовувати файл виключення.
jippie

Так. Проблема полягає в тому, що я, здається, не можу переконати його виключити каталог (точніше). У мене не було проблем зі змішуванням, що включає / виключає в минулому, це здається, ніби топлевель - це особливий випадок.
Стів Померой

Відповіді:


8

Я думаю, що правила фільтра rsync не можуть відповідати каталогу топлевелю, тому він завжди синхронізований. Вирішення проблеми полягає в синхронізації всіх файлів всередині цього каталогу замість самого каталогу.

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

Додайте .[!.]*після, *якщо у вас є крапкові файли у верхній ..?*папці та якщо у вас є імена файлів, що починаються з двох крапок.


2
Дивовижне, дякую! Це працює. Єдиним недоліком цієї методики є те, що вона вимагає для оболонки, щоб вибрати всі файли. Якщо у каталозі є тонна кількість файлів (чого я не маю в моєму випадку), він може задихатися. Можливо, це можна виправити за допомогою xargs (хоча не з параметрами --delete).
Стів Померой

Одна з проблем, які я отримав із використанням, *полягала в тому, що --deleteвони не видаляли жодних файлів, оскільки вони не були частиною пошуку.
thomasa88

@ thomasa88 Будь ласка, дивіться цю відповідь .
Kamil Maciorowski
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.