LINUX.ORG.RU

Велосипедный бэкап

 ,


1

2

Хочу сделать велосипедный бэкап.

Первый этап понятен. Составляем файлик вроде /backup в котором вписываем пути, которые надо бэкапить, что-то вроде

/etc/
/home/user/apps/factorio/saves/
/home/user/projects/

так же список паттернов для exclude.

Потом это всё читаем скриптом и формируем что-то вроде tar cf /backups/2021-07-03_23-53-00.tar –exclude ‘*.git’ /etc/ … который делает соответствующий tar.

Но я не могу придумать, как сделать на этом всём инкрементальный бэкап. Т.е. нужно сделать эффективный diff между двумя tar-файлами и сохранить его в третий файл.

Всякие borg-и не предлагать, мне проще самому навелосипедить, чем разбираться в их тысячестраничных мануалах.

Сейчас курю в сторону rsync, вроде краем уха слышал, что он такое умеет…

★★★★★

Последнее исправление: Legioner (всего исправлений: 1)

Всякие borg-и не предлагать, мне проще самому навелосипедить, чем разбираться в их тысячестраничных мануалах.

Ну если проще свой велосипед то вперед, а так https://borgbackup.readthedocs.io/en/stable/quickstart.html

Samamy ★★★
()

Но я не могу придумать, как сделать на этом всём инкрементальный бэкап. Т.е. нужно сделать эффективный diff между двумя tar-файлами и сохранить его в третий файл.

Фильтруй по дате изменения. Всё, где дата изменения больше равно предыдущего бэкапа, кидай в инкрементальный.

Если хочешь по внутренностям файла, то действительно смотреть что-то вроде rsync (но там руками) или запускай https://github.com/jmacd/xdelta/blob/wiki/CommandLineSyntax.md

monk ★★★★★
()
Ответ на: комментарий от monk

Почему руками?

Полистал сейчас ман, я имею в виду что-то вроде

       --write-batch=FILE
              Record a file that can later be applied to another identical destination with --read-batch.  See the "BATCH MODE" section for details, and also the --only-write-batch option.

Правда не уверен, насколько такой метод будет портабельным, в частности для будущих версий. А то весело будет раскапывать лет через 10 древние версии rsync-а, чтобы восстановить старый бэкап. Хотя вроде в мане обещают, что всё нормально будет в эту сторону.

А сами «деревья», видимо, разумно делать через cp --reflink, благо корень у меня на XFS, наверное, даже, будет достаточно быстро и относительно атомарно.

Legioner ★★★★★
() автор топика
Последнее исправление: Legioner (всего исправлений: 3)

Но я не могу придумать, как сделать на этом всём инкрементальный бэкап. Т.е. нужно сделать эффективный diff между двумя tar-файлами и сохранить его в третий файл.
Всякие borg-и не предлагать, мне проще самому навелосипедить, чем разбираться в их тысячестраничных мануалах

SVN. Тебе нужен SVN.

byko3y ★★★★
()

Restic это всё умеет.

rupert ★★★★★
()

Прочитав заголовок, почему-то подумал про кнопку сохранения для велосипедистов выезжающих на типичное российское шоссе с интенсивным движением. :) Начал уже придумывать варианты, но таки прочитал содержимое топика. Ну нельзя же так обламывать!

По скучному и унылому топику - посмотри man tar на предмет –listed-incremental. Может поможет.

Stanson ★★★★★
()
Ответ на: комментарий от Stanson

Плюсадин, тоже шел посмотреть, что за инновации свалились на наши головы, а тут.

Nervous ★★★★★
()

#!/bin/sh

# This script based on work by Michael Jakl (jakl.michael AT gmail DOTCOM) and used 
# with express permission.
HOST=pupkin.com
SOURCE=$HOME/Documents
PATHTOBACKUP=/home/pupkin/backups
REMOTEUSER=pupkin

date=`date "+%Y-%m-%dT%H:%M:%S"`

rsync -az --progress --exclude-from=$HOME/bin/exclude_from_backup.conf --link-dest=$PATHTOBACKUP/current $SOURCE $REMOTEUSER@$HOST:$PATHTOBACKUP/back-$date

ssh $REMOTEUSER@$HOST "rm $PATHTOBACKUP/current && ln -s back-$date $PATHTOBACKUP/current"

я таким пользуюсь

anonymous
()

В TAR уже есть инкрементальный бэкап, в man tar про это есть, я себе сделал скрипты для создания шифрованных, инкрементальных бекапов, фрагмент вызывающий tar:

tar --listed-incremental=$CHANGESET_FILE \
    --no-wildcards-match-slash --exclude-from=$SCRIPT_HOME/exclude \
    -czvf $ARCHIVE_FILE ${INCLUDE[@]}

Создается файл архива и snar файл содержащий мета-информацию о файлах попавших в архив, если файл изменится то он попадет в следующий архив, если не менялся то не попадет.

Aber ★★★★★
()
Ответ на: комментарий от Aber

Да, я в курсе, но мне это не совсем нравится, т.к. файл попадает в бэкап целиком, а не только diff изменений. Хотя с какой-то стороны это может быть и лучше, т.к. проще. Пока не определился. За команду спасибо.

Legioner ★★★★★
() автор топика
Последнее исправление: Legioner (всего исправлений: 1)
Ответ на: комментарий от Legioner

Вы меня извините, но я в духе LORа отвечу.

Использовать git для ~/projects

Сохранять сейвы под новым именем в фактории

Бэкапить всё это боргом/рестиком (написать несколько обёрток на bash) и не изобретать велосипед

Harliff ★★★★★
()
Последнее исправление: Harliff (всего исправлений: 1)
Ответ на: комментарий от ubik
SHADOW=$password openssl enc -aes-256-cbc  -pass env:SHADOW -iter 1000 -in $ARCHIVE_FILE -out $ENCRYPTED_ARCHIVE_FILE

Расшифровка:

openssl enc -d -aes256 -iter 1000 -in aber-desktop-20200906.tgzc -out aber-desktop-20200906.tar.gz
Aber ★★★★★
()
Последнее исправление: Aber (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.