Чувак, так долго каждый день нужно сканировать 5 000 000 инодов, чтобы найти файлы, которые изменились!
Что, если был способ создать резервную копию только тех изменений, которые произошли с момента последнего резервного копирования?
Ну, вы можете ... со снимками !
Самым большим препятствием для создания снимков является переключение на файловую систему, которая их поддерживает.
В Linux две хорошо известные файловые системы моментальных снимков:
Оба являются файловыми системами копирования при записи . Для вас это практически означает, что они отслеживают изменения с момента последнего снимка, поэтому при отправке последнего снимка на сервер резервного копирования отправляются только изменения, но у вас остается полная копия всех ежедневных резервных копий, которые вы решите. хранить.
Это означает, что в качестве бонуса у вас есть возможность хранить резервные копии более чем на один день, не занимая много дополнительного места (только дисковое пространство, используемое для изменений каждый день), и вы можете гибко удалять резервные копии, сохраняя их еженедельно, ежемесячно, или ежегодные резервные копии, как вы хотите.
Btrfs инкрементные резервные копии
Это пример команд, которые вы можете запускать для создания инкрементных резервных копий и отправки их на сервер резервного копирования:
# 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"
Примечание. Исключить -p /backup/app-data-LAST_BACKUP_TIMESTAMP
из последней команды, если это первая резервная копия.
Инкрементные резервные копии ZFS
Это пример команд, которые вы можете запускать для создания инкрементных резервных копий и отправки их на сервер резервного копирования:
# 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"
Примечание. Исключить -i app-pool/data@LAST_BACKUP_TIMESTAMP
из последней команды, если это первая резервная копия.