Rsync - 写入权限被拒绝

Rsync - 写入权限被拒绝

rsync在 Windows (Cygwin) 上使用,将文件从共享文件夹(从另一个 Windows 实例)移动到 NFS 存储。我已将共享文件夹映射到一个驱动器,并将 NFS 文件夹安装到另一个驱动器。

rsync这样开始命令:

C:\cygwin64\bin\rsync.exe -vrH --perms --partial --delete --stats --log-file=/home/Administrator/rsynclogs/backup.log /cygdrive/z/ /cygdrive/w/

运行 30 分钟后,如果因错误而失败,则传输约 17,000 个文件:

rsync: write failed on "/cygdrive/w/domainName/Uploads/index_635244981053162421.html": Permission denied (13)

我看不出权限被拒绝错误的任何原因。例如,如果我手动复制文件,它会成功复制。

我知道这是该rsync协议的一个缺点。协议rsync无法事先确定它是否具有目标的写入权限。相反,它只是发送并随后检查成功或失败。

我无权ssh访问 NFS 服务器 - 它是一个存储实例。源 Windows 客户端具有 Cygwin,但无权访问 NFS 存储。

我们正在从 2008 年的旧服务器迁移到新服务器。其中一项更改是将所有存储移动到共享 nfs 存储。我知道这个配置并不完美,但它是暂时的。我需要它正常工作一个月左右。不幸的是,NFS 服务无法安装在 2008 服务器上,否则就不需要 rsync。

即使出现错误,如何使我的副本继续运行?

我想使用这些选项:

 --partial-dir=DIR
 --delay-updates
 --inplace
 --ignore-errors

但看起来它并不能真正解决我的问题。有什么建议么?

答案1

我建议您修改命令rsync以维护文件时间,以便它可以识别文件是否需要重新复制。为此,请使用--times标志 ( )。-t

您已经说过您的权限错误是暂时的,所以我建议您将进程放入循环中。将其放入文件中并运行它bash

#!/bin/bash
while :
do
    rsync -rptv --partial --delete --stats --log-file=/home/Administrator/rsynclogs/backup.log /cygdrive/z/ /cygdrive/w/ && break
    sleep 30
done

-rpt作为可能的改进,您可能需要考虑用-a( )替换标志--archive,这也可以维护文件所有权。

相关内容