Rsync Bash-Skript und harte Verknüpfungsdateien
Frage
Ich erstelle einen Bash-Skript zu meinen Backup-Dateien mit rsync.
Backups kommen alle aus einem einzigen Verzeichnis. Ich möchte nur neue oder geänderte Dateien gesichert werden.
Zur Zeit sage ich rsync die dir zu sichern, und die Dateien zu überprüfen, im Vergleich zu der letzten Sicherung.
So wie ich das tue, ist
THE_TIME=`date "+%Y-%m-%dT%H:%M:%S"`
rsync -aP --link-dest=/Backup/Current /usr/home/user/backup /Backup/Backup-$THE_TIME
rm -f /Backup/Current
ln -s /Backup/Backup-$THE_TIME /Backup/Current
Ich bin ziemlich sicher, habe ich die Syntax richtig dafür. Jedes Backup prüft gegen den „Current“ Ordner und laden Sie nur als necesary. Es wird dann die aktuellen Ordner löscht und neu erstellen die Symlink auf die neueste Backup es gerade getan.
Ich erhalte eine Fehlermeldung, wenn ich das Skript ausführen:
rsync: link "/Backup/Backup-2010-08-04-12:21:15/dgs1200series_manual_310.pdf"
=> /Backup/Current/dgs1200series_manual_310.pdf fehlgeschlagen: Der Betrieb wird nicht unterstützt (45)
Das Host-O HFS-Dateisystem ausgeführt wird, die harte Verknüpfung unterstützt. Ich versuche, herauszufinden, ob etwas anderes ist dies nicht unterstützt, oder wenn ich ein Problem in meinem Code habe.
Vielen Dank für jede Hilfe
Edit:
Ich bin in der Lage eine feste Verbindung auf meinem lokalen Rechner zu erstellen. Ich bin auch in der Lage eine feste Verbindung auf dem Remote-Server zu erstellen (wenn lokal angemeldet) Ich bin NICHT in der Lage eine feste Verbindung auf dem Remote-Server zu erstellen, wenn sie über afp montiert. Auch wenn beide Dateien auf dem Server vorhanden ist.
ich dies zu raten ist eine Einschränkung der Nachrichtenagentur AFP.
Lösung
Zwei Dinge aus der Manpage herausstechen und sind wert:
Wenn Datei nicht verknüpfen, überprüfen Sie ihre Attribute. Ebenfalls überprüfen, ob einige Attribute werden immer außerhalb von rsync gezwungen Steuerung, eine solche Option montieren, die Wurzel zu einem einzigen zermatscht Benutzer oder Halterungen ein austauschbares Laufwerk mit generischem Eigentum (z wie OS X „Ignorieren Eigentümer auf diesem Volume“ Option).
und
Beachten Sie, dass rsync-Versionen vor 2.6.1 hatte einen Fehler, konnte richtig für einen Nicht-Super-User Prevent --link-dest von der Arbeit wenn -o angegeben wurde (oder implizierten -a). Sie können Work-around dieser Fehler durch die Option -o zu vermeiden, wenn eine alte rsync zu senden.
Haben Sie die "ignore ownership" Option eingeschaltet? Welche Version von rsync
haben Sie?
Außerdem haben Sie versucht, manuell eine ähnliche Hardlink zu schaffen in der Befehlszeile mit ln
?
Andere Tipps
Für den Fall der Befehlszeile ist nur ein Beispiel: Stellen Sie sicher, immer geben Sie das Link-dest Verzeichnis mit einem absoluten Pfad! Das ist etwas, das
hat mich einige Zeit, um herauszufinden, ...Ich weiß nicht, ob dies das gleiche Problem, aber ich weiß, dass rsync kann nicht synchronisiert eine Datei, wenn das Ziel eine FAT32-Partition und der Dateiname hat einen „:“ (Doppelpunkt) darin. [Die Quelle-Dateisystem ext3, und das Ziel ist FAT32]
Versuchen Sie, den date
Befehl rekonfigurieren, so dass es keinen Doppelpunkt nicht verwendet und sehen, ob das einen Unterschied macht.
z.
THE_TIME=`date "+%Y-%m-%dT%H_%_%S"`