有时,如何优雅地处理 rsync 失败以正确读取目录?

有时,如何优雅地处理 rsync 失败以正确读取目录?

在远程网络服务器上运行完全更新的 Ubuntu 16.04 LTS 在远程网络服务器上运行 rsync 3.1.1

我有一个相当简单的设置,允许一些用户管理一组可公开访问的文件。

我没有让他们访问远程 Web 服务器,而是在本地办公网络 ( \localshare\) 上设置了一个共享,他们可以将文件复制到其中,并根据需要创建、删除和排列文件和文件夹。

每天一次,我有一个 rsync,它从远程 Web 服务器运行,并将公共 www 文件夹 ( \publicwww) 与\localshare\.

大多数时候这都可以完美地工作。然而,时不时地看来 rsync 没有正确读取文件夹和文件的完整列表,这导致它删除(几乎)公共 www 文件夹上的所有内容,并使所有内容都无法访问\publicwww\(因为它全部消失了),直到下一次同步(这通常会纠正问题)。

我最好的猜测是,由于 Web 服务器不在现场,偶尔会出现连接困难,rsync 只是“超时”,无法读取目录中文件夹和文件的完整列表,然后简单地放弃,假设错误,目录中不再有文件夹或文件。

例如,假设我有以下子文件夹\localshare\

\localshare\folderA
\localshare\folderB
\localshare\folderC

通常这会很好地同步,我最终会得到:

\publicwww\folderA
\publicwww\folderB
\publicwww\folderC

但有时我只会发现:

\publicwww\folderA

我怎样才能更优雅地处理这种情况?

我尝试检查 rsync 日志,但没有看到读取完整目录失败的迹象。

只是...

2019/08/19 09:15:01 [18996] building file list
2019/08/19 09:15:04 [18996] *deleting   folderB/

....然后删除所有其他文件夹。

\localshare\所以问题可能出在我从 Ubuntu 服务器连接的方式上。我使用 autofs 作为 Ubuntu 服务器上的本地目录安装\localshare\,然后 rsync 将远程目录与服务器上的\localshare\本地目录同步。\publicwww\也许由于这一层抽象,rsync无法区分已完全读取的文件夹和已超时的挂载?

  1. 我怎样才能更明确地解决这个问题,以确定我的理论(这只是连接超时)是正确的?
  2. 有什么方法可以使用 rsync 优雅地缓解这种情况吗?
  3. 还有其他方法可以解决这个问题吗?我想到首先\localshare\与远程服务器上的中间文件夹(例如 )同步\publicwwwtemp\,然后仅\publicwwwtemp\\publicwww\日志文件显示第一次同步没有问题时才进行同步。但 rsync 日志文件似乎没有显示 rsync 甚至意识到它无法获取完整的目录列表。

这是我的 rsync 命令:

rsync -rtvu --perms --chmod=D750,F640 --owner --group --chown=root:www-data --delete-delay --progress --exclude="Info.txt" --exclude="Sync-Logs" --exclude="lost+found" --log-file=/var/log/rsync.publicwww.files.$(date +%Y%m%d).log /Fileserver.mount/localshare/ /publicwww/

相关内容