【问题标题】:cwRsync ignores "nontsec" on Windows 7cwRsync 在 Windows 7 上忽略“nontsec”
【发布时间】:2010-01-23 18:23:14
【问题描述】:

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

【问题讨论】:

    标签: windows-7 permissions cwrsync


    【解决方案1】:

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

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

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

    【讨论】:

    • 您的答案也可能是正确的。我对 fstab 选项也不是很熟悉,所以我只是放下了对我有用的东西。我认为使用的重要选项是noacl。其余的可能会根据您的具体选择而有所不同。
    【解决方案2】:

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

    解决方案涉及使用noacl 选项创建fstab 文件:

    # 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 环境变量,因为它不再使用。

    【讨论】:

      【解决方案3】:

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

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

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

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

      我只是想把它标记到这个帖子上,以防将来其他人遇到我遇到的同样问题。

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

        • 我希望这能修复它,但这对我没有帮助。也许我的 fstab 不在正确的位置之类的。
        【解决方案5】:

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

        这对我有用:

        1. 在 cwRsync 文件夹(即 rsync.exe 所在的位置)内创建一个子目录 etc

        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 很重要,它将在那里创建一个带有 known_hosts 文件的 .ssh 子文件夹。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-10-11
          • 1970-01-01
          • 1970-01-01
          • 2012-02-26
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多