CwRsync игнорирует "nontsec" в Windows 7
Я использую cwRsync для синхронизации некоторого файла с Windows на Ubuntu. Этот процесс отлично работал на Vista, но с тех пор, как я обновился до Windows7, я все время получаю разрешения.
Некоторые предпосылки... Я использовал для получения одинаковых разрешений на Vista, но это было разрешено с помощью переменной среды CYGWIN=nontsec
.
Проблема с допуском
rsync: failed to modify permissions on xxx: Permission denied (13)
Так как разрешения на файлы Windows и UNIX отличаются, синхронизация файлов с разрешениями Windows не имеет смысла. Что делает rsync, устанавливается разрешение на стороне UNIX на 0 (d---------
). Чтобы предотвратить это, cygwin имеет переменную nontsec
, которая инструктирует ее игнорировать права доступа к файлам Windows.
Проблема в Windows7: nontsec
не имеет никакого эффекта.
Ответы
Ответ 1
re ваше решение, мне пришлось внести корректировку, чтобы увидеть, как он работает для меня - вместо вашего содержимого etc/fstab я использовал этот контент из темы форума, которую вы ссылаетесь:
none /cygdrive cygdrive binary,posix=0,user,noacl 0 0
Я использую cwRsync installer 4.0.3. Я достаточно доволен, что он работает для меня, но я не могу предложить причину, почему, не будучи достаточно знакомым с синтаксисом fstab и параметрами. Надеюсь, он добавит что-то полезное кому-то другому.
Ответ 2
Я понял, что проблема не в Windows 7. Скорее, это была новая версия cwrsync, которая игнорировала среду nontsec
var. Для версий cwRsync выше 1.7 вам необходимо использовать опцию noacl
. (см. тему форума: Нет доступа к подпапкам папки резервного копирования RSYNC)
Решение включает в себя создание файла fstab
с параметром noacl
:
# In this example, my cwRsync dir is located at: "C:/Program Files (x86)/cwRsync"
# Filename: "C:/Program Files (x86)/cwRsync/etc/fstab"
C:/Program\040Files\040(x86)/cwRsync / ntfs override,binary,noacl 0 0
C:/Program\040Files\040(x86)/cwRsync/bin /usr/bin ntfs override,binary,noacl 0 0
И это! Вы также можете удалить CYGWIN=nontsec
env var, поскольку он больше не используется.
Ответ 3
У меня была эта же проблема с копированием с моего веб-хостинга на Solaris до моего локального ПК. Разрешения для ПК были удалены, когда файлы были скопированы. Я устанавливаю файл fstab, но не хожу.
В конце я понял, что я делаю полный путь к rsync.exe, что означает, что мой текущий каталог не собирал папку etc, которую я только что создал. Чтобы решить эту проблему, я добавил эти строки чуть выше вызова команды rsync, и она отлично работала.
SET CWRSYNCHOME=%PROGRAMFILES%\CWRSYNC
c:
cd %CWRSYNCHOME%
Теперь мои права доступа к файлам правильны по умолчанию для разрешений родительской папки без проблем.
Я просто хотел пометить это в этом потоке, если кто-то еще в будущем столкнется с той же проблемой, что и я.
Ответ 4
Теперь это также рассматривается в cwrsync FAQ:
http://www.itefix.no/i2/node/11324
Я также могу сообщить, что исправление в FAQ (и Raise answer) тоже работало для меня.
Ответ 5
У меня была такая же проблема, но ни одно из решений не работало для меня, пока я не понял, что папка назначения находится вне папки rsync. (Я хотел rsync файлы из Linux в Windows.)
Вот что сработало для меня:
-
Создайте subdir etc
внутри папки cwRsync (то есть, где находится rsync.exe
).
-
Создайте файл с именем fstab
(без суффикса) внутри этой папки.
-
Вставьте одну строку в этот fstab
файл, убедитесь, что закончились строки UNIX!
none /cygdrive cygdrive binary,posix=0,user,noacl 0 0
-
Установить среду:
SET CWRSYNCHOME=<cwRsync installation path>
SET HOME=<Directory to save user configuration files, like ssh known_hosts>
-
Перед запуском rsync.exe(это был самый важный шаг в моем случае):
cd <Destination folder>
Часть SET HOME
важна для SSH, она создаст вложенную папку .ssh
с файлом known_hosts
.