rsyncing 到 NFS-Share 时路径中有不需要的名称

Posted

技术标签:

【中文标题】rsyncing 到 NFS-Share 时路径中有不需要的名称【英文标题】:Unwanted names in path while rsyncing to NFS-Share 【发布时间】:2016-01-14 18:05:27 【问题描述】:

我正在使用 NAS 来备份我的文件服务器。 NAS 通过 NFS 导出/share/Backup,它作为/mount/qnap 挂载在文件服务器上。我想跟踪哪些文件是 rsynced,但不包括包含许多小文件的 Backup-Dir。因此,我正在运行 rsync 的两个实例,一个带有 -v,另一个没有。以下命令正常运行,执行后 /mount/qnap 上的目录结构与 /mount/btrfs-raid 相同。

rsync --delete -av --exclude Backup /mnt/btrfs-raid/ /mnt/qnap/

使用命令同步备份文件夹

rsync --delete -av /mnt/btrfs-raid/Backup /mnt/qnap/Backup

在 NAS 上生成以下目录结构:

/mnt/qnap/Backup/Backup/..Subdirectories

要获得我想要的结果,我必须从目标目录路径中删除最后一个“备份”:

rsync --delete -av /mnt/btrfs-raid/Backup /mnt/qnap/

为什么第二个例子不像第一个例子那样工作? 谢谢 斯蒂芬

【问题讨论】:

【参考方案1】:

路径中的尾部斜杠对于rsync 很重要。见the documentation。

rsync -avz foo:src/bar /data/tmp

这将递归地将所有文件从机器 foo 上的目录 src/bar 传输到本地机器上的 /data/tmp/bar 目录。文件以“归档”模式传输,确保符号链接、设备、属性、权限、所有权等在传输过程中得到保留。此外,压缩将用于减少传输的数据部分的大小。

rsync -avz foo:src/bar/ /data/tmp

源上的尾部斜杠会更改此行为,以避免在目标上创建额外的目录级别。您可以将源上的尾随 / 视为“复制此目录的内容”而不是“按名称复制目录”,但在这两种情况下,包含目录的属性都会转移到目标上的包含目录.换句话说,以下每个命令都以相同的方式复制文件,包括它们对 /dest/foo 属性的设置:

【讨论】:

以上是关于rsyncing 到 NFS-Share 时路径中有不需要的名称的主要内容,如果未能解决你的问题,请参考以下文章

rsync推送和拉取

如何设置rsync参数提高效率

Linux rsync数据同步命令解析

通过 rsync 发送文件时 inotify 识别的文件名错误

Java Rsync转义空间

rsync