10 янв в 15:35 (OFF) Q2W (B) :

simple-backuper

Решил я выложить в open source свой скрипт для бекапа, а заодно проапгрейдить его.

Бекапер этот начался давно.
Сначала я делал бекапы со своей машины простым `rsync` с опцией `--compare-dest`. Т.е. каждый день я rsync'ал свою домашнюю папку на удалённый сервер в папку с сегодняшней датой и указывал папку с предыдущей датой в этой опции.
Т.о. rsync неизменённые файлы не копировал, а делал hardlink'и.
Так экономится прорва места - очень просто и эффективно.

Но что-то меня в таком способе не устроило, да и фейлы были нередки.

Поэтому я написал свою реализацию того же самого. А ещё соорудил на удалённой машине для бекапов криптоконтейнер, который подключался только на время бекапа.
Этой версией я пропользовался не меньше пары лет.

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

И теперь я хочу, чтобы:
1. Файлы шифровались ещё на моей машине. Тогда можно класть бекапы на любой условно вражеский сервер (например, арендованный).
2. Дедупликация файлов была не только по файлам целиком, но и по их частям, т.к. почти всегда файлы меняются не целиком, а по частям, и хранить копии файлов, отличающихся чуть-чуть - неэффективно.
3. Дедупликация файлов (а точнее уже частей файлов) работала бы не в пределах одного файла, а вообще - по хешсумме в пределах всего бекапа.
4. Вся связь с сервером с бекапами должна быть защищена. Тут просто, юзаю ssh и всего делов.

При этом очень хочется, чтобы бекапер оставался предельно простым. Буквально в сотни строк.

Вот я написал первую рабочую версию.

По ходу пьесы возникла масса нюансов.

1. Сначала я хотел, чтобы копирование файлов на сервер с бекапами не тормозило. Поэтому `scp` и прочие `ssh cat >file` не подходили, т.к. каждый раз коннектились заново, что занимает чуть ли не секунду на каждый файл (а точнее на каждую его часть).

Тогда я написал простейший приёмник файлов, который я запускал на сервере бекапов прям как inline perl скрипт (чтобы не требовать от сервера бекапов наличие моего софта).

Но получилось много строчек, а я борюсь за простоту тут.

Поэтому я вернулся обратно к `ssh cat >file`, но настроил ssh через ControlMaster так, что соединения в большинстве случаев не переустанавливаются.

2. Шифрую я файлы с помощью gpg, но под cygwin он работает отвратительно: все операции, где требуется ввод пароля, просто не работают. А ввод пароля требуется при создании ключа, и при восстановлении из бекапа (ассиметричное шифрование, чтобы даже имея ключ шифрования, но не зная от него пароля, злоумышленник не мог получить мои ценные файлы).
И импорт ключей тоже не работает.

Проблема решилась установкой на винду gpg4win со всеми пирогами (без пирогов (галочки в инсталлере) не работает).

3. И всё равно какие-то глюки всплывают в связке xz | gpg | ssh, когда работа идёт под cygwin.

Так что теперь я планирую перейти от внешних прог xz | gpg | ssh на использование либ Compress::Zstd (для норм. линуксов), Compress::Bzip2 (для cygwin), Crypt::OpenSSL::RSA и отдельного скрипта для быстрого обмена файлами с сервером бекапов.
Канал: Linux
Метки: devel, simple-backuper
52 0 1 0
← Пред. След. →

Комментарии (0)

Показать комментарий
Скрыть комментарий
Для добавления комментариев необходимо авторизоваться
Мир Теней
Народ Тьмы, мастерски владеющий магией или народ...
Версия: Mobile | Lite | Touch | Доступно в Google Play