rsync-Fehler: symlink hat keinen referent

3141
Marek

Ich versuche, rsnapshot (das rsync verwendet) für die Sicherung eines Windows-Servers zu konfigurieren, aber ich habe Probleme mit rsync, da es nicht möglich ist, einem symbolischen Link auf dem Server zu folgen, der gesichert werden soll.

Konfiguration:

  • Windows Server 2008 R2 mit Cygwin installiert, das die zu sichernden Dateien enthält
  • ArchLinux-Server im selben Netzwerk, auf dem Dateien vom Windows-Server gesichert werden sollen
  • Auf dem Windows-Server ist sshd installiert und funktioniert
  • Der Windows-Server hat keinen rsync-Daemon (soweit ich das beurteilen kann), aber ich kann rsync über ssh verwenden, um vom Linux-Server aus eine Verbindung zum Windows-Server herzustellen und Dateien zu kopieren.
  • Da eine Anwendung einige der zu sichernden Dateien ständig geöffnet hält, ist der Windows-Server so konfiguriert, dass Volume-Schattenkopien des Laufwerks erstellt werden, das die zu sichernden Daten enthält
  • Ich verwende das folgende Skript, um einen Link zum neuesten Schattenkopiedatenträger zu erstellen, damit er von rsync aufgerufen werden kann:

    #!/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" 

Das Problem

Wenn ich versuche, rsnapshot auszuführen, um die Daten auf dem mit Symlink verknüpften Schattenkopiedatenträger zu sichern, wird der folgende Fehler zurückgegeben:

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

Dies ist der Befehl rsync, den rsnapshot aufruft:

 /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/ 

Wenn ich jedoch versuche, scpDateien aus dem mit Symlink verknüpften Schattenkopiedatenträger zu kopieren, funktioniert das problemlos:

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

Soweit ich herausfinden kann, scheint dies darauf hinzudeuten, dass die Ursache des Rsync-Fehlers darin besteht, dass er in chroot auf dem Windows-Server ausgeführt wird, sodass er nicht auf das mit Symlink verbundene Schattenkopiedatenträger zugreifen kann.

Ich habe versucht, eine zu erstellen /etc/rsync.confund folgendes hinzuzufügen:

 use chroot = no 

Dies hat jedoch keine Auswirkung auf den Fehler. Ich gehe davon aus, dass dies eine Konfigurationsdatei für den rsync-Dämon ist, den ich nicht ausführte.

Fragen

  • Was verhindert den rsyncZugriff auf die symbolkopierte Schattenkopie, während scpauf die Dateien problemlos zugegriffen werden kann?
  • Wenn das Problem die use chrootrsync-Einstellung ist, wie ändere ich es, wenn ich keinen rsync-Dämon betreibe?

Vielen Dank für Ihre Antworten im Voraus!

6
Ist es so, dass scp den Systemaufrufen vertraut, um "/ cygdrive / e / latest-data-shadow-copy" aufzulösen, und rsync versucht, es selbst aufzulösen? Wenn Sie rsync als Ziel für diesen Link angeben, funktioniert das? ShadSterling vor 9 Jahren 0

1 Antwort auf die Frage

0
Ivy Growing

Ich hatte ein ähnliches Problem mit symlink has no referent:

Die Hauptursache war: Der Link zeigte auf einen nicht vorhandenen Ort. Nur jemand in der Organisation hat die Dateisystemstruktur geändert, nachdem Verknüpfungen erstellt wurden, und die Verknüpfungen wurden nicht aktualisiert.

Lösung war eine der folgenden:

  1. Korrigieren Sie die Links, die auf den vorhandenen Speicherort zeigen.
  2. Verknüpfungen entfernen, da dies nicht erforderlich ist (wird sie von rsync nicht verwendet).
  3. Schließen Sie den Versuch von rsync aus, um mit der Option auf Ihren Link zuzugreifen --exclude '/cygdrive/e/latest-data-shadow-copy'. Dies ist eine "Präventions" -Methode, jedoch möglicherweise nicht die beste, also letzte Option.