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.)

Вот что сработало для меня:

  1. Создать подкаталог etc внутри папки cwRsync (то есть где rsync.exe проживает).

  2. Создайте файл с именем fstab (без суффикса) внутри этой папки.

  3. Вставьте одну строку в это fstab файл, обязательно иметь окончание строки UNIX!

    none /cygdrive cygdrive binary,posix=0,user,noacl 0 0
    
  4. Установить среду:

    SET CWRSYNCHOME=<cwRsync installation path>
    SET HOME=<Directory to save user configuration files, like ssh known_hosts>
    
  5. Перед запуском rsync.exe (это был самый важный шаг в моем случае):

    cd <Destination folder>
    

SET HOME часть важна для SSH, она создаст .ssh подпапка там с known_hosts файл.

Другие вопросы по тегам