
Wir haben eine Anwendung, die bisher über 540.000 Bilder generiert hat. Die Bilder werden in einer Baumstruktur gespeichert, die bisher 5 Millionen Inodes verwendet.
Wir möchten die Daten täglich auf einem externen Remote-Server sichern. Wir haben überlegt, rsync zu verwenden, sind uns aber nicht sicher, ob das der schnellste Weg ist.
Habt ihr eine Empfehlung für eine effiziente Backup-Strategie?
Antwort1
Mann, es dauert so lange, jeden Tag 5.000.000 Inodes zu scannen, um geänderte Dateien zu finden!
Was wäre, wenn es eine Möglichkeit gäbe, nur die Änderungen seit der letzten Sicherung zu sichern?
Nun, Sie können… mitSchnappschüsse!
Die größte Hürde bei Snapshots ist die Umstellung auf ein Dateisystem, das diese unterstützt.
Unter Linux gibt es zwei bekannte Snapshot-Dateisysteme:
Beide sindCopy-on-Write-Dateisysteme. In der Praxis bedeutet das für Sie, dass die Änderungen seit dem letzten Snapshot protokolliert werden, sodass beim Senden des neuesten Snapshots an den Backup-Server zwar nur die Änderungen gesendet werden, Sie aber dennoch über eine vollständige Kopie aller täglichen Backups verfügen, die Sie behalten möchten.
Das bedeutet, dass Sie als Bonus die Möglichkeit haben, mit geringem zusätzlichen Platzbedarf (nur der täglich durch die Änderungen belegte Speicherplatz) mehr als einen Tag an Backups aufzubewahren. Außerdem können Sie die Backups flexibel löschen und je nach Wunsch wöchentliche, monatliche oder jährliche Backups aufbewahren.
Inkrementelle Btrfs-Backups
Dies ist ein Beispiel für Befehle, die Sie ausführen können, um inkrementelle Sicherungen zu erstellen und diese an Ihren Sicherungsserver zu senden:
# Make a snapshot
btrfs subvolume snapshot -r /app/data /backup/app-data-$(date "+%Y%m%dT%H%M%S%Z")
# Ensure the snapshot is saved
sync
# Find your latest snapshot, referred to as `/backup/app-data-THIS_BACKUP_TIMESTAMP` below
ls -lhtr /backup/
# Send the snapshot since the previous snapshot to the backup server
btrfs send -p /backup/app-data-LAST_BACKUP_TIMESTAMP /backup/app-data-THIS_BACKUP_TIMESTAMP | ssh BACKUP_USER@BACKUP_SERVER "btrfs receive /backup/app-data"
Notiz:-p /backup/app-data-LAST_BACKUP_TIMESTAMP
Vom letzten Befehl ausschließen , wenn dies die erste Sicherung ist.
Inkrementelle ZFS-Sicherungen
Dies ist ein Beispiel für Befehle, die Sie ausführen können, um inkrementelle Sicherungen zu erstellen und diese an Ihren Sicherungsserver zu senden:
# Create a snapshot of the "data" dataset in your "app-pool" zpool
zfs snapshot app-pool/data@$(date "+%Y%m%dT%H%M%S%Z")
# Find your latest snapshot, referred to as `app-pool/data@THIS_BACKUP_TIMESTAMP` below
zfs list -rt snapshot app-pool/data
# Send the snapshot since the previous snapshot to the backup server
zfs send -i app-pool/data@LAST_BACKUP_TIMESTAMP app-pool/data@THIS_BACKUP_TIMESTAMP | ssh BACKUP_USER@BACKUP_SERVER "zfs receive backup-pool/app-data"
Notiz:-i app-pool/data@LAST_BACKUP_TIMESTAMP
Vom letzten Befehl ausschließen , wenn dies die erste Sicherung ist.