У меня есть локальная система FreeNAS и я хочу использовать снимки ZFS для резервного копирования.
FreeNAS имеет встроенные задачи репликации, которые используют
zfs send snapshot_name
отправить снимок в удаленную систему. Но для этого нужна система с ZFS на другом конце.
Я хочу отправить снимок в файл и отправить этот сжатый и зашифрованный файл на удаленную машину.
Это возможно с
zfs send snapshot_name | gzip | openssl enc -aes-256-cbc -a -salt > file.gz.ssl
Каждый день я делаю снимок пула хранения и сохраняю каждый снимок в течение 30 дней.
С каждым сделанным снимком я передам этот снимок в файл.
- в файле snapshot_file 1 есть все файлы (скажем, 2 ГБ);
- в файле snapshot_file 2 есть только изменения в файле snapshot_file 1 (скажем, 5 МБ);
- файл snapshot_file 3 содержит изменения в файле snapshot_file 2; и так далее.
На 31-й день снимок_файла 1 удаляется (потому что я хочу изменения только за последние 30 дней)
Поэтому файл snapshot_file 2 должен содержать каждый файл (2 ГБ файла snapshot_file 1 + 5 МБ изменяется)
Но при таком подходе каждый день (с 31 дня) необходимо создавать новый файл объемом 2 ГБ и отправлять его в удаленную систему. Это слишком много накладных расходов.
Как лучше всего использовать моментальные снимки, переданные в файл в качестве стратегии резервного копирования с историей X дней?
PS: я знаю, что существует множество программ для резервного копирования (например, rdiff-backup), которые я мог бы использовать. Но мне любопытно, как это можно сделать.
zfs recv
на другом конце (например, в пулеzfs set compression=gzip-9
). Хранение файлов моментальных снимков звучит очень неэффективно для меня.