Задача: создать [шифрованный] дедуплицированный бэкап и уметь им управлять.
Решение: использовать Duplicacy.
Скачивание
wget -O /usr/local/bin/duplicacy https://github.com/gilbertchen/duplicacy/releases/download/v3.1.0/duplicacy_linux_x64_3.1.0
chmod +x /usr/local/bin/duplicacy
Инициализация репозитория
duplicacy init [command options] <snapshot id> <storage url>
Я сравниваю это с git:
- storage — git-учётка со своими реквизитами для входа по типу key, password (me@remote)
- repository (snapshot id) — очевидно, репозиторий (linux-laptop)
- storage-name — название ветки репо (default)
Создать бэкап локальной папки /home/ с удалённым размещением по SSH:
duplicacy init \ # инициализировать репозиторий
-e \ # зашифровать бэкапы
-key /home/me/.ssh/id_rsa \ # RSA-ключ для шифрования
-pref-dir /home/me/.duplicacy \ # хранить папку .duplicacy не в репо
-storage-name default \ # ~= название ветки репозитория
-repository /home/ \ # ~= код репозитория
-erasure-coding 5:2 \ # включается, если хранилище может посыпаться
linux-laptop \ # ~= название самого репозитория
sftp://me@remote/backups/home/ # URL-адрес хранилища
Инициализировать репо для просмотра файлов на локальной копии, используя хак (Windows-only):
cd C:\BAKAps\ # здесь расположены бэкапы
md repository # создаём отдельную папку-репо
cd repository
duplicacy init \
-pref-dir ..\.duplicacy \
-e laptop samba://../ # используем хак для относительных путей
Исключения
Указываются в файле .duplicacy/filters
.
Исключения для Linux относительно /:
-swapfile
-boot/
-dev/
-proc/
-run/
-sys/
e:var/spool/.*$
e:.*\.sock$
e:.*/\.cache/.*$
e:.*/cache/.*$
e:.*/\.npm/.*$
e:.*/node_modules/.*$
e:.*/\.opam/.*$
Исключения для Windows относительно корня диска:
hiberfil.sys
pagefile.sys
swapfile.sys
e:.*\.tmp$
e:.*/cache/.*$
e:.*/shader-cache/.*$
e:.*/temp/.*$
e:.*/datareporting/.*$
e:.*/crashes/.*$
e:.*/minidumps/.*$
e:.*/gmp\-[a-z0-9]+/.*$
Реквизиты для доступа
Можно указать SSH-ключ, если не был задан при инициализации:
duplicacy set -key ssh_key_file -value ~/.ssh/id_rsa
Если хранилище зашифровано, можно указать пароль (хранится в открытом виде в папке .duplicacy/preferences
!!1):
duplicacy set -key password -value <password>
Точно уверен, что готов вводить пароль в терминал в открытом виде? А вот китаец готов.
Так что редактируй файл вместо команды выше. А ещё лучше — используй переменные окружения! (подробнее описано у китайца)
Восстановление данных
Восстановить весь бэкап целиком и полностью, удалив файлы не из бэкапа:
duplicacy restore -r <revision number> -overwrite -delete
Просто восстановить отдельные файлы по шаблону:
duplicacy restore -r <revision number> -- "*.sqlite"