права доступу до файлів rsync для Windows


32

У мене є служба rsync, яка синхронізує файли з віддаленої машини до машини, яка передає їх на мережевий диск.

Мені потрібні скопійовані файли, щоб взяти дозволені папки призначення.

Процес синхронізації працює нормально, але після його завершення я не можу отримати доступ до деяких папок - Дозвіл відхилено.

Я увійшов як адміністратор домену; це також не дозволить мені змінювати будь-які дозволи на вказані папки. Що дає?

запустити команду:

rsync.exe  -v -rlt -z --delete "src_path" "dst_path"

яку команду ви зараз використовуєте для синхронізації?
Джон Т

Відповіді:


24

http://www.samba.org/ftp/rsync/rsync.html )

Підводячи підсумок: для надання файлів призначення (і старих, і нових) вихідних прав, використовуйте --perms.

Щоб надати новим файлам дозволи за замовчуванням за призначенням (при цьому залишаючи існуючі файли незмінними), переконайтесь, що --permsпараметр вимкнено та використовуйте --chmod=ugo=rwX(що гарантує, що всі бітки, що не маскуються, активуються).

Якщо ви б хотіли спростити цю останню поведінку, ви можете визначити псевдонім popt для нього, наприклад, помістити цей рядок у файл ~ / .popt (нижче визначається параметр -Z і включає --no- g, щоб використовувати групу за замовчуванням пункту призначення dir):

    rsync alias -Z --no-p --no-g --chmod=ugo=rwX

THX багато. Я не міг запам’ятати правильні прапори для використання ...
Vokuhila-Oliba

2
Це стосується rsync в Linux, але не завжди вирішує проблему під час rsync'ing на диск Windows, про що запитує оригінальна публікація.
Саймон Іст

18

Захищеність Cygwin "posix" спричинила мені багато проблем з дозволами на файли Windows NTFS - навіть з використанням --no-permsrsync.

Я виявив, що новостворені файли / папки належним чином не успадковують дозволи за замовчуванням, але кожен файл / папка закінчується великою кількістю <not inherited>записів на вкладці безпеки файлу / папки Windows. (І ця проблема пов'язана не лише з rsync).

Я знайшов цю пов’язану публікацію, і це посилання дуже корисно у вирішенні цих проблем за допомогою noaclпараметра у /etc/fstabфайлі cygwin . Мінус цього рішення полягає в тому, що cygwin втрачає можливість встановлювати дозволи на файли / папки, але в багатьох випадках це не важливо.

(Переглядаючи цю тему, ви, ймовірно, знайдете посилання на встановлення змінної середовища CYGWIN = NONTSEC, але це стосується cygwin v1.5 і не працює в cygwin v1.7 і далі.)


Редагування файлу / etc / fstab виправило це для мене. Для цього мені довелося використовувати rsync в межах cygwin замість іншого розгортання, такого як DeltaCopy.
Метт Конноллі

Якщо ви просто використовуєте пакет cwrsync (а не cygwin), куди ви кладете файл fstab?
Саймон Іст

Я не використовую цигуін. Я беру звичайний привід NTFS, встановлений на OS X, і rsync-файли до нього. Потім ці файли в Windows повністю перекрутили дозволи. Шукаєте рішення.
Стівен Лу

схоже, я використовував "ризикований" метод кріплення NTFS на macOS за допомогою вбудованого драйвера, який повинен бути набагато менш стабільним, ніж драйвери paragon / tuxera та FUSE. Тож майте це на увазі, якщо ви перебуваєте в одному човні
Стівен Лу

8

У Windows з DeltaCopy я можу змусити його працювати з:

rsync --perms --chmod=a=rw,Da+x ...

Це працювало навіть з --recursive


Це в основному спрацювало, проте мені довелося змінити параметр --chmod, щоб він включав = rwx, щоб пакетні файли тощо виконувались належним чином.
Тейлор Геррінг

1
Це єдиний варіант, який працював на мене. Спробував запропоновані вище --no perms та fstab безрезультатно. Цей дав мені лише деякі <не успадковані> дозволи, які були типом дозволів, які я хотів, і не включали дозволу заборонити користувачеві, що виконує. Спасибі!
AronVanAmmers

DeltaCopy також містить виконуваний файл chmod, який може потім виправити дозволи, наприклад, chmod -R 777 / cygdrive / g
jnnnnnn

1
--perms - це те, чого мені не вистачало, щоб вирішити копію як проблему лише для читання.
Тайлер С. Лопер

1

rsync, принаймні на Cygwin є наступний перемикач:

-A, --acls зберігають ACL (мається на увазі --perms)

Моя версія Cygwin:

CYGWIN_NT-6.3 1.7.29 (0.272 / 5/3) 2014-04-07 13:46 x86_64 Cygwin

Сподіваюся, це допомагає!


1
Ласкаво просимо до Супер Користувача! Хоча це теоретично може відповісти на питання, задля вдосконалення було б краще включити деталі, як це відповідає на питання (посилання на джерело для резервного копіювання вашої претензії є плюсом).
G-Man каже: «Відновіть Моніку»

1

Відповідь з найвищим рейтингом працює лише в тому випадку, якщо ви використовуєте rsync над ssh у windows. Якщо ви використовуєте демон dagon cygwin rsync, просто використання noacl в / etc / fstab не допомагає, з будь-якої причини він не шанує спадщину, навіть якщо ви позбудетесь користувача і спробуєте noacl, переозначити тощо. якщо ви rsyncing на приводі верхнього рівня і використовуєте path = / cygdrive / все, що в /etc/rsyncd.conf. Замість цього вам потрібно зробити окрему точку монтажу в / etc / fstab і використовувати це у своєму rsyncd.conf:

D:\     /d_drive  ntfs    binary,posix=0,noacl,user,override      0 0

у /etc/rsyncd.conf у вас буде щось подібне:

use chroot = yes

[d_drive]
path = /d_drive
comment = d_drive
auth users = someUser
secrets file = /etc/rsyncd.secrets
read only = false
write only = false
list = false
uid = someUser

Тоді мені довелося перезавантажити систему Windows, тільки перезапуск служби rsync поодинці не здавалося, що це допомогло, вона продовжувала кидати помилки chroot та chdir (навіть незважаючи на те, що / d_drive був встановлений і використовував chroot = false, і я міг писати до нього). Потім, коли ви rsync у системі Windows, використовуйте:

cd /local/path/to/copy
rsync -rltD --no-p --no-g --no-o  ./ rsync://someUser@localhost:remotePort/d_drive/

1

Раніше я лише переназначав дозволи в Windows для мого поточного користувача після цього, використовуючи takeownв підвищеному командному рядку:

takeown /f <NameOfFolder> /r /d Y

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


1
Ласкаво просимо до Супер Користувача! Будь ласка, прочитайте запитання ще раз уважно. Ваша відповідь не відповідає на початкове запитання.
DavidPostill

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

О, зачекайте, я не можу додавати коментарі, бо не маю репутації 50+, тому це доведеться залишатись тут.
CodingLumis

correct rsync flags> а що б це було?
oldmud0

@ oldmud0 див. відповіді, які передували моїм, на відповідні комбінації прапорів, які встановлюють дозволи під час копіювання. Моє рішення ідеально підходить для тих, хто вже скопіював файли і не хотів видалити їх, скопіювавши їх знову, щоб переконатися в правильності дозволів.
CodingLumis

0

У мене виникла ця проблема rsnapshot, яка використовує rsync для резервного копіювання. Я перекрив це видалення --relativeз rsync_long_args. Після цього папка cдля самого диска з дивними дозволами не створюється.

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