Rsync неправильно устанавливает разрешения для папки Windows
Я использую rsync в Windows 7 (в частности, cwrsync). Я использую простую команду как таковую:
rsync -r --perms --delete /cygdrive/c/Users/Michael/Documents/Personal/ /cygdrive/c/Users/Michael/Documents/Personal_Backup/
Рекурсивная копия работает нормально, за исключением того, что я должен был (щелкнуть правой кнопкой мыши / Свойства / вкладка Безопасность) в любой папке, созданной rsync в месте назначения; Я получаю следующее всплывающее сообщение:
Разрешения для {имя_папки} упорядочены неправильно, что может привести к неэффективности некоторых записей.
Я также попробовал параметр --acls, но получил следующую ошибку:
recv_acl_access: значение вне диапазона: ff ошибка rsync: ошибка в потоке данных протокола rsync (код 12) на acls.c(690) [Receiver=3.0. rsync: соединение неожиданно закрыто (пока получено 9 байт) [отправитель] rsync error: ошибка в потоке данных протокола rsync (код 12) на io.c(610) [sender=3.0.8]
В любом случае, я просто хочу правильно использовать rsync, чтобы при просмотре разрешений безопасности в Windows не возникла ошибка.
3 ответа
Майкл,
Это решение предполагает, что вы не должны использовать --perms
, но используя --chmod=ugo=rwX
вместо.
Удачи!
Dotan
Одним словом, Robocopy.
При использовании cwRsync у меня были точно такие же проблемы с закрытыми правами, я пробовал множество вещей, но ни одна из них не работала, поэтому я в конце концов сдался.
Это инструмент Windows по умолчанию, и он имеет аналогичный (для вас, такой же) набор функций.
Я обнаружил это прошлой ночью и полностью отказался от rsync. Он построен для Unix-подобных, поэтому в Windows ожидается некоторый облом.
Это заставило меня начать:
http://www.sevenforums.com/tutorials/187346-robocopy-create-backup-script.html
Вот небольшой скрипт резервного копирования, который я сделал для себя, чтобы отразить мои разделы на внешний диск.
Не оглядывайся назад на rsync.
Я использую устаревшие cacls, чтобы добавить себя обратно после копирования.
rsync -avASPC sourceDir/* destDir
cacls destDir /t /e /r doej
cacls destDir /t /e /g doej:f
Где sourceDir - это каталог источника, а destDir - каталог назначения, а doej - имя пользователя. Вероятно, было бы лучше использовать icacls, но я еще не изучил это.
Я также попробовал robocopy, но у меня не было разрешений, необходимых для этой работы, кажется.
Флаги, используемые для rsync
-a, --archive archive mode; equals -rlptgoD (no -H,-A,-X)
-r, --recursive recurse into directories
-l, --links copy symlinks as symlinks
-p, --perms preserve permissions
-t, --times preserve modification times
-g, --group preserve group
-o, --owner preserve owner (super-user only)
-D same as --devices --specials
--devices preserve device files (super-user only)
--specials preserve special files
-v, --verbose increase verbosity
-S, --sparse handle sparse files efficiently
-A, --acls preserve ACLs (implies -p, which is also implied by -a)
-P same as --partial --progress
--progress show progress during transfer
--partial keep partially transferred files
-C, --cvs-exclude auto-ignore files in the same way CVS does
Флаги используемые от CACLS
/T Changes ACLs of specified files in
/E Edit ACL instead of replacing it.
/R user Revoke specified user's access rights (only valid with /E).
/P user:perm Replace specified user's access rights.
Perm can be: ...
F Full control