cwRsync игнорирует "нонсек" в 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
кажется, не имеет никакого эффекта.
5 ответов
В связи с вашим решением мне пришлось внести коррективы, чтобы оно работало для меня - вместо вашего содержимого в etc/fstab я использовал это содержимое из темы форума, на которую вы ссылаетесь:
none /cygdrive cygdrive binary,posix=0,user,noacl 0 0
Я использую установщик cwRsync 4.0.3. Я достаточно счастлив, что это работает для меня, но я не могу предложить причину, по которой я недостаточно знаком с синтаксисом и опциями fstab. Надеюсь, это добавит что-то полезное для кого-то еще.
У меня возникла такая же проблема при копировании с моего веб-хоста на базе Solaris на локальный ПК. Разрешения ПК были повреждены, когда файлы были скопированы. Я установил файл fstab, но не пошел.
В конце концов я понял, что выполняю полный путь к rsync.exe, что означает, что в моем текущем каталоге не было папок etc, которые я только что создал. Чтобы решить эту проблему, я добавил эти строки чуть выше вызова команды rsync, и она отлично работала.
SET CWRSYNCHOME=%PROGRAMFILES%\CWRSYNC
c:
cd %CWRSYNCHOME%
Теперь мои права доступа к файлам по умолчанию соответствуют разрешениям родительской папки без проблем.
Я просто хотел пометить это в этой ветке на случай, если кто-нибудь в будущем столкнется с той же проблемой, что и я.
Об этом также говорится в FAQ cwrsync: http://www.itefix.no/i2/node/11324
Я также могу сообщить, что исправление в FAQ (и ответе Raise) также работает для меня.
Я понял, что проблема была не в Windows 7. Скорее, это была новая версия cwrsync, которая игнорировала nontsec
окружающая среда вар. Для версий 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, так как он больше не используется.
У меня была та же самая проблема, но ни одно из решений не работало для меня, пока я не понял, что моя папка назначения была вне папки rsync. (Я хотел rsync файлы из Linux в Windows.)
Вот что сработало для меня:
Создать подкаталог
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
файл.