设置:

设置:

我正在尝试配置 rsnapshot(使用 rsync)来备份 Windows 服务器,但是我遇到了 rsync 无法跟踪要备份的服务器上的符号链接的问题。

设置:

  • 安装了 Cygwin 的 Windows Server 2008 R2,其中包含要备份的文件
  • 同一网络上的 ArchLinux 服务器应从 Windows 服务器备份文件
  • Windows 服务器已安装 sshd 并正常运行
  • Windows 服务器没有正在运行的 rsync 守护程序(据我所知),但我可以使用 ssh 上的 rsync 从 Linux 服务器连接到 Windows 服务器并复制文件。
  • 由于应用程序使某些需要备份的文件始终处于打开状态,因此 Windows 服务器配置为创建包含需要备份数据的驱动器的卷影副本
  • 我使用以下脚本创建到最新卷影副本卷的链接,以便可以通过 rsync 访问它:

    #!/bin/sh
    # Mount the latest shadow copy for the specified volume
    
    VOLUME="D:"
    LINK_NAME="E:\\latest-data-shadow-copy"
    
    
    SHADOW_VOLUME=`vssadmin list shadows /for=$VOLUME | grep "Shadow Copy Volume:" | tail -1 | tr -s ' ' | cut -d ' ' -f5`
    SHADOW_VOLUME+="\\"
    
    rm $LINK_NAME
    cmd.exe /c mklink /d "$LINK_NAME" "$SHADOW_VOLUME"
    

问题

当我尝试运行 rsnapshot 来备份符号链接卷影副本卷上的数据时,它返回以下错误:

    symlink has no referent: "/cygdrive/e/latest-data-shadow-copy"

这是 rsnapshot 调用的 rsync 命令:

    /usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded --chmod=Du=rwx,Dgo=rx,Fu=rw,Fgo=r --rsh=/usr/bin/ssh 'user@windowsip:/cygdrive/e/latest-data-shadow-copy/data-folder/' /media/backup-drive-1/.sync/

但是,如果我尝试使用scp从符号链接的卷影复制卷复制文件,它可以正常工作:

    scp user@windowsip:/cygdrive/e/latest-data-shadow-copy/data-folder/test-file.txt test-file.txt

据我所知,这似乎表明 rsync 错误的原因是它在 Windows 服务器上的 chroot 中运行,从而阻止它访问符号链接的卷影副本卷。

我尝试创建/etc/rsync.conf并添加以下内容:

    use chroot = no

但它对错误没有影响。我认为这是因为这是一个我没有运行的 rsync 守护进程的配置文件。

问题

  • 什么原因导致无法rsync访问符号链接的卷影副本但scp可以无问题地访问文件?
  • 如果问题出在use chrootrsync 设置上,如果我没有运行 rsync 守护进程,我该如何更改它?

提前感谢您的回复!

答案1

我遇到了类似的问题symlink has no referent:

根本原因是:链接指向了不存在的地方。只是组织中的某个人在创建链接后更改了文件系统结构,但没有更新链接。

解决方案如下:

  1. 修复指向现有位置的链接。
  2. 删除不必要的链接(除了 rsync 之外没有人使用它们)。
  3. 使用选项 排除 rsync 访问您的链接的尝试--exclude '/cygdrive/e/latest-data-shadow-copy'。这是要求的“预防”方法,但可能不是最好的方法,因此建议使用最后一个选项。

相关内容