cwRsync игнорирует «нонсек» в Windows 7 - PullRequest
11 голосов
/ 23 января 2010

Я использую 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 ]

7 голосов
/ 01 февраля 2010

В соответствии с вашим решением мне пришлось внести коррективы, чтобы оно работало для меня - вместо вашего содержимого etc / fstab я использовал это содержимое из темы форума, на которую вы ссылаетесь:

none /cygdrive cygdrive binary,posix=0,user,noacl 0 0

Я использую установщик cwRsync 4.0.3. Я достаточно счастлив, что это работает для меня, но я не могу назвать причину, по которой я недостаточно знаком с синтаксисом и опциями fstab. Надеюсь, это добавит что-то полезное для кого-то еще.

2 голосов
/ 28 мая 2011

Это теперь также рассматривается в cwrsync FAQ: http://www.itefix.no/i2/node/11324

Я также могу сообщить, что исправление в FAQ (и ответе Рейз) также работает для меня.

2 голосов
/ 10 июля 2010

У меня возникла такая же проблема при копировании с моего веб-хоста на базе Solaris на локальный ПК. Разрешения ПК были отключены, когда файлы были скопированы. Я установил файл fstab, но не пошел.

В конце концов я понял, что выполняю полный путь к rsync.exe, что означает, что в моем текущем каталоге не было папок etc, которые я только что создал. Чтобы решить эту проблему, я добавил эти строки чуть выше вызова команды rsync, и она отлично работала.

SET CWRSYNCHOME=%PROGRAMFILES%\CWRSYNC
c:
cd %CWRSYNCHOME%

Теперь мои права доступа к файлам по умолчанию соответствуют разрешениям родительской папки без проблем.

Я просто хотел пометить это в этой ветке на случай, если кто-нибудь в будущем столкнется с той же проблемой, что и я.

2 голосов
/ 28 января 2010

Я понял, что проблема была не в 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, так как он больше не используется.

1 голос
/ 15 февраля 2015

У меня была такая же проблема, но ни одно из решений не работало для меня, пока я не понял, что моя папка назначения находится вне папки 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.

...