rsync не зберігає право власності на каталог навіть із -a


12

Я використовую це виклик rsync для резервного копіювання домашнього каталогу:

rsync -aARrx --info= --force --delete --info=progress2 -F "$USER_HOME" "$BACKUP_MNTPOINT"

Сторінка людини rsync говорить, що -a означає -g та -o (серед інших комутаторів), які повинні зберігати право власності. Однак я помітив, що якщо каталог не існує під $BACKUP_MNTPOINT/$USER_HOME, він створюється з root: root володіння замість правильного. (Це відбувається лише з каталогами прямо під $BACKUP_MNTPOINT/$USER_HOME). Чому так?

$BACKUP_MNTPOINT- місцевий привід. $BACKUP_MNTPOINT/$USER_HOMEмає право власності та дозволи. Ні косою, $USER_HOMEні $BACKUP_MNTPOINTкінкою.

І вихідна, і цільова файлові системи є XFS, і запущена програма mkdir $BACKUP_MNTPOINT/$USER_HOMEстворює каталог із очікуваним правом власності.


1
Що таке файлова система $BACKUP_MNTPOINTта за допомогою яких опцій вона монтується? Чи трапляється це лише для батьківського $BACKUP_MNTPOINT/$USER_HOMEкаталогу ( ) або для всіх створених каталогів? Зробіть $BACKUP_MNTPOINTі $USER_HOMEзакінчуєте /?
terdon

Я використовую XFS для обох /homeі резервних дисків. Поки що я думаю, що це сталося лише для батьківських каталогів. Ні косою, $BACKUP_MNTPOINTні $USER_HOMEкінкою. EDIT: Я можу зараз підтвердити, що це відбувається лише в каталогах прямо внизу$BACKUP_MNTPOINT/$USER_HOME
kralyk

Отже, $BACKUP_MNTPOINT/$USER_HOMEмає правильні дозволи, але будь-які підкаталоги ні? Будь ласка , змініть своє питання і додати ці деталі. Також уточнюйте, чи mkdir $BACKUP_MNTPOINT/$USER_HOME/fooстворюється каталог, що належить вашому користувачеві, якщо ви робите це вручну.
terdon

Так, mkdir $BACKUP_MNTPOINT/$USER_HOME/fooстворюється каталог із правом власності користувача.
кралик

Було б дуже приємно побачити відповідну інформацію з strace(як зазначено у псевдовідповіді).
Павло Шімерда

Відповіді:


18

У мене була подібна проблема при використанні rsyncрезервного копіювання системи на моєму сервері. Я використав:

rsync -aAXSHPr \
-e ssh \
--rsync-path="sudo /usr/bin/rsync/" \
--numeric-ids \
--delete \
--progress \
--exclude-from="/path/to/file/that/lists/excluded/folders.txt" \
--include-from="/path/to/file/that/lists/included/folders.txt" \
/ USER@SERVER:/path/to/folder/where/backup/should/go/

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


1
Нічого собі, це мені не прийшло в голову, добре помічено, дякую.
кралик

0

Можливо, запустіть rsync через strace / truss і побачте, чи не отримуєте ви помилку від системного виклику chown (), а також для підтвердження того, що chown () має правильний шлях та UID / GID.


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