我使用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
似乎没有任何效果。
答案 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。)
这对我有用:
在cwRsync文件夹(即etc
所在的位置)内创建子目录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
子文件夹。