cwRsync在Windows 7上忽略“nontsec”

时间:2010-01-23 18:23:14

标签: windows-7 permissions cwrsync

我使用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 个答案:

答案 0 :(得分:7)

你的解决方案,我不得不做一个调整,看它对我有用 - 而不是你的etc / fstab内容,我使用你引用的论坛主题中的这些内容:

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

我正在使用cwRsync安装程序4.0.3。我很高兴它对我有用,但我不能提供一个理由,不熟悉fstab语法和选项。希望它能为其他人增加一些有用的东西。

答案 1 :(得分:2)

我发现导致问题的不是Windows 7。相反,cwrsync的新版本忽略了nontsec环境变量。对于cwRsync版本高于1.7 ,您需要使用noacl选项。 (参见论坛主题:No access to subfolders of RSYNC backup folder

解决方案涉及使用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,因为它已不再使用。

答案 2 :(得分:2)

我遇到同样的问题,从基于Solaris的webhost复制到我的本地PC。复制文件时,PC权限被破坏了。我设置了fstab文件,但没有去。

最后我意识到我正在对rsync.exe进行完整路径调用,这意味着我当前的目录没有拿起我刚刚创建的etc文件夹。为了解决这个问题,我在rsync命令的调用之上添加了这些行,它完美地运行了。

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

现在我的文件权限正确默认为父文件夹权限而没有问题。

我只想将此标记在此主题上,以防将来其他任何人遇到同样的问题。

答案 3 :(得分:2)

现在cwrsync FAQ中也解决了这个问题: http://www.itefix.no/i2/node/11324

我也可以报告FAQ(和Raise的答案)中的修复程序也适用于我。

答案 4 :(得分:1)

我遇到了同样的问题,但是没有一个解决方案适用于我,直到我意识到我的目标文件夹在rsync文件夹之外。 (我想将文件从Linux转发到Windows。)

这对我有用:

  1. 在cwRsync文件夹(即etc所在的位置)内创建子目录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>
    
  6. SET HOME部分对于SSH很重要,它会在那里创建一个带有.ssh文件的known_hosts子文件夹。