Mann, es dauert so lange, jeden Tag 5.000.000 Inodes zu scannen, um Dateien zu finden, die sich geändert haben!
Was wäre, wenn nur die Änderungen seit der letzten Sicherung gesichert werden könnten?
Nun, Sie können… mit Schnappschüssen !
Die größte Hürde für Momentaufnahmen ist der Wechsel zu einem Dateisystem, das sie unterstützt.
Unter Linux sind zwei bekannte Snapshot-Dateisysteme:
Beide sind Copy-on-Write-Dateisysteme . Das bedeutet für Sie praktisch, dass sie die Änderungen seit dem letzten Snapshot nachverfolgen. Wenn Sie den letzten Snapshot an den Sicherungsserver senden, werden nur die Änderungen gesendet, Sie haben jedoch immer noch eine vollständige Kopie aller von Ihnen gewählten täglichen Sicherungen behalten.
Dies bedeutet, dass Sie als Bonus mehr als einen Tag Backups für nicht viel zusätzlichen Speicherplatz haben können (nur den Speicherplatz, der täglich von den Änderungen verwendet wird), und Sie können die Backups flexibel löschen, wöchentlich, monatlich, oder jährliche Backups nach Ihren Wünschen.
Inkrementelle Btrfs-Sicherungen
Dies ist ein Beispiel für Befehle, die Sie ausführen können, um inkrementelle Sicherungen zu erstellen und 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"
Hinweis: Ausschließen -p /backup/app-data-LAST_BACKUP_TIMESTAMP
von dem letzten Befehl, 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 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"
Hinweis: Ausschließen -i app-pool/data@LAST_BACKUP_TIMESTAMP
von dem letzten Befehl, wenn dies die erste Sicherung ist.