我使用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
似乎没有任何影响。
你的解决方案,我不得不做一个调整,看它对我有用 - 而不是你的etc / fstab内容,我使用你引用的论坛主题中的这些内容:
none /cygdrive cygdrive binary,posix=0,user,noacl 0 0
我正在使用cwRsync安装程序4.0.3。我很高兴它对我有用,但我不能提供一个理由,不熟悉fstab语法和选项。希望它能为其他人增加一些有用的东西。
你的解决方案,我不得不做一个调整,看它对我有用 - 而不是你的etc / fstab内容,我使用你引用的论坛主题中的这些内容:
none /cygdrive cygdrive binary,posix=0,user,noacl 0 0
我正在使用cwRsync安装程序4.0.3。我很高兴它对我有用,但我不能提供一个理由,不熟悉fstab语法和选项。希望它能为其他人增加一些有用的东西。
我发现导致问题的不是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,因为它已不再使用。
我遇到了同样的问题,从基于Solaris的webhost复制到我的本地PC。复制文件时,PC权限被破坏了。我设置了fstab文件,但没有去。
最后我意识到我正在对rsync.exe进行完整路径调用,这意味着我当前的目录没有拿起我刚刚创建的etc文件夹。为了解决这个问题,我在rsync命令的调用之上添加了这些行,它完美地运行了。
SET CWRSYNCHOME=%PROGRAMFILES%\CWRSYNC
c:
cd %CWRSYNCHOME%
现在我的文件权限正确默认为父文件夹权限没有问题。
我只想将此标记到此主题,以防将来其他人遇到同样的问题。
现在也在cwrsync FAQ中解决了这个问题:
http://www.itefix.no/i2/node/11324
我也可以报告FAQ(和Raise的答案)中的修复程序也适用于我。
我有同样的问题,但没有一个解决方案适合我,直到我意识到我的目标文件夹在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
文件。