Бэкапы и образы

Файловые бэкапы, образы дисков, сжатие и проверка.

Перед бэкапом

Проверить точку монтирования, свободное место и имя диска. Ошибка в `/dev/sdX` может перезаписать не тот носитель.

lsblk
mount | grep /mnt/nas_backup
df -h /mnt/nas_backup
ls -lh /mnt/nas_backup/backups
blkid

Обычный образ dd

Подходит, когда нужно получить несжатый образ и потом отдельно его проверить или сжать.

dd if=/dev/sdX of=/mnt/nas_backup/image.img bs=64M status=progress
sync
sha256sum /mnt/nas_backup/image.img > /mnt/nas_backup/image.img.sha256
sha256sum -c /mnt/nas_backup/image.img.sha256

dd + xz

xz обычно сильнее сжимает, но работает медленнее. `-T0` использует все доступные потоки.

dd if=/dev/sdX bs=64M status=progress | xz -T0 -9 > image.img.xz
xz -t image.img.xz
xz -dc image.img.xz | dd of=/dev/sdX bs=64M status=progress
sync

dd + zstd

zstd часто удобнее для больших образов: быстрее xz и хорошо подходит для регулярных копий.

dd if=/dev/sdX bs=64M status=progress | zstd -T0 -10 > image.img.zst
zstd -t image.img.zst
zstd -dc image.img.zst | dd of=/dev/sdX bs=64M status=progress
sync

tar и сжатие

Для каталогов удобнее архив, чем образ диска. Исключать кэш и временные файлы явно.

tar -czf backup.tar.gz /opt/project
tar -cJf backup.tar.xz /opt/project
tar -I zstd -cf backup.tar.zst /opt/project
tar -tf backup.tar.gz | head
tar -xzf backup.tar.gz -C /restore/path
gzip -t backup.tar.gz

zip и unzip

Полезно для обмена с Windows, но для Linux-бэкапов чаще удобнее tar.

zip -r backup.zip /opt/project
unzip -l backup.zip
unzip backup.zip -d /restore/path
7z l archive.7z
7z x archive.7z -o/restore/path

rsync

Сначала dry-run, затем реальный запуск. Слеш в конце source/ важен.

rsync -avh --dry-run /opt/project/ /mnt/backup/project/
rsync -avh --delete /opt/project/ /mnt/backup/project/
rsync -avh -e ssh /opt/project/ user@server:/backup/project/
rsync -avh --progress bigfile.img /mnt/backup/
rsync -avh --exclude cache/ /opt/project/ /mnt/backup/project/