11

我使用 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似乎没有任何效果。

4

5 回答 5

7

对于您的解决方案,我必须进行调整才能看到它对我有用 - 我使用了您引用的论坛主题中的以下内容,而不是您的 etc/fstab 内容:

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

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

于 2010-02-01T14:57:43.533 回答
2

从基于 Solaris 的网络主机复制到本地 PC 时,我遇到了同样的问题。当文件被复制下来时,PC 权限被破坏了。我设置了 fstab 文件,但不行。

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

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

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

我只是想将此标记到此线程上,以防将来其他人遇到与我相同的问题。

于 2010-07-10T17:49:36.913 回答
2

我发现不是 Windows 7 导致了这个问题。相反,忽略nontsec环境变量的是新版本的 cwrsync。对于高于 1.7的 cwRsync 版本,您需要使用该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=nontsecenv var,因为它不再使用。

于 2010-01-28T19:13:36.837 回答
2

这现在也在 cwrsync 常见问题解答中得到解决: http ://www.itefix.no/i2/node/11324

我也可以在常见问题解答(和 Raise 的回答)中报告对我有用的修复程序。

于 2011-05-27T20:49:54.660 回答
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>
    

SET HOME部分对 SSH 很重要,它将在.ssh那里创建一个带有known_hosts文件的子文件夹。

于 2015-02-15T13:45:18.740 回答