Ich versuche regelmäßig Schnappschüsse eines riesigen Ordners zu machen.
Ich habe hier gelesen: http://www.mikerubel.org/computers/rsync_snapshots/#Incremental
, cp -al
das durch einfaches Kopieren der Hardlinks einen Schnappschuss eines Ordners erstellt.
Das ist alles großartig, aber das Problem ist, dass sich in diesem Snapshot, wenn ich eine Datei ändere, diese in allen Snapshots ändert. Stattdessen möchte ich, dass das System beim Ändern eine neue Datei erstellt und stattdessen darauf verlinkt. Auf diese Weise wird jeder Schnappschuss bei einer Bearbeitung der ersten Datei nicht ungültig.
Wie kann ich das erreichen?
ps Ich habe es versucht rsync -a --delete --link-dest=../backup.1 source_directory/ backup.0/
, aber es hat das gleiche Problem.
rsnapshot
ist gutWas Sie suchen, ist eine Form des Copy-on-Write , bei der mehrere Dateien mit demselben Inhalt denselben Speicherplatz auf der Festplatte belegen, bis eine davon geändert wird. Hardlinks implementieren Copy-on-Write nur, wenn die Anwendung, die das Schreiben ausführt, die Datei löscht und eine neue Datei mit demselben Namen erstellt (normalerweise wird eine neue Datei mit einem anderen Namen erstellt und dann an ihren Platz verschoben). Die Anwendung, die Sie verwenden, tut dies offensichtlich nicht: Sie überschreibt die vorhandene Datei.
Einige Anwendungen können für die Verwendung der Ersetzungsstrategie konfiguriert werden. Einige Anwendungen verwenden standardmäßig die Ersetzungsstrategie, verwenden jedoch die Überschreibstrategie, wenn sie eine Datei mit mehreren Hardlinks sehen, um die Hardlinks nicht zu beschädigen. Ihre aktuelle Snapshot-Technik funktioniert, wenn Sie Ihre Anwendung so konfigurieren können, dass sie ersetzt anstatt überschrieben wird.
Fl-cow ändert Programme so, dass die Ersetzungsstrategie systematisch für Dateien mit mehreren festen Links verwendet wird.
Alternativ können Sie Ihre Dateien in einem Dateisystem speichern, das Copy-on-Write oder Deduplizierung ausführt, oder über eine Snapshot-Funktion verfügen, ohne sich um feste Links kümmern zu müssen: Btrfs oder Zfs . Abhängig von Ihrem Partitionierungsschema kann die Verwendung von LVM-Snapshots eine Option sein.
Meine Empfehlung ist, ein geeignetes Snapshot-Tool zu verwenden. Es ist überraschend schwierig, zuverlässige Backups zu erstellen. Sie möchten wahrscheinlich rsnapshot .
quelle
Das folgende ist ein Ruby-Skript, das ich geschrieben habe und das "cp-al" und rsync in ein nettes Skript einschließt, das manuell oder über cron ausgeführt werden kann. Das Ziel kann lokal oder remote sein (über ssh):
Ghetto Timemachine
Die grundlegende Antwort auf Ihre Frage, wie in einem vorherigen Kommentar erwähnt, muss von den harten Links getrennt werden. Nehmen Sie beispielsweise eine tägliche Sicherung Ihres Home-Verzeichnisses an:
Quelle:
Ziel:
Die Hardlinks werden erstellt, indem "cp -al" für das gestrige Backup ausgeführt wird. Angenommen, es ist Dienstagmorgen, wenn Sie es ausführen:
cd /data/backup/daily
rm -rf tuesday
cp -al monday tuesday
rsync -a --delete /home/flakrat /data/backup/daily/tuesday/
quelle
rdiff-backup scheint zu tun, was Sie wollen, probieren Sie es aus.
Mit rsync müssen Sie zuerst eine vollständige Sicherung ohne feste Links erstellen. Die nächste Sicherung kann auf die vorherige Sicherung verweisen und eine feste Verknüpfung dazu herstellen. Auf diese Weise sind Ihre Backups nicht fest mit Ihren Arbeitsdateien verknüpft (die, die Sie ändern). Beispiel. Wenn meine vorherige Sicherung Ordner-Sicherung.01 wäre, würde mein Sicherungsskript zuerst die Ordner erhöhen, indem es sie um eins umbenennt, sodass Sicherung.01 zu Sicherung.02 wird. Anschließend erstellt das Skript einen neuen leeren Ordner mit dem Namen backup.01. Anschließend wird die neue Sicherung in den neuen Ordner und eine feste Verknüpfung zu backup.02 rscynciert, sodass nur neue Dateien Speicherplatz in der Sicherung belegen. Der Befehl rsync würde ungefähr so aussehen: rsync -rlt Quellpfad backuppath / backup.01 --link-dest = backuppath / backup.02
Sie sehen also, dass alle harten Verknüpfungen auf dem Sicherungspfad stattfinden. Auf diese Weise müssen Sie sich beim Ändern von Dateien in Ihrem Quellpfad keine Gedanken über das Kopieren beim Schreiben machen.
quelle