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.