Бэкап удаленного Linux-сервера

Jul 14, 2020 12:51


В отличие от всяких там форточек, для Linux-а есть целых три инструмента бэкапа: tar, cp и rsync. Всё остальное - обвески над ними. В зависимости от решаемой задачи их можно применять по-разному. Ниже будет один из возможных способов. Вероятно, читатель сочтёт его далеко не оптимальным. Но тут всё зависит от вводных.

Итак, чего хочется.

Есть некая удалённая достаточно нагруженная Linux-виртуалка, причём доступа к гипервизору нет. Хочется снять с неё бэкап, по возможности минимально насилуя "вражескую" дисковую подсистему. И чтобы не напрягать CPU той стороны шифрованием, делать это не через SSH.

Решение.

1. Если бэкап будет делаться через злой и холодный интернет, то поднять какой-нибудь тоннель между узлами. Например, WireGuard. Если по доверенной локальной сети, то сугубо пофиг.
2. Установить "с той стороны" rsync, запустить его в режиме демона, заbindить его к внутреннему тоннельному интерфейсу (не к 0.0.0.0).
3. В файле "rsyncd.conf" прописать что-нибудь того.
log file=/var/log/rsync/rsyncd.log
pid file=/var/run/rsyncd.pid
reverse lookup = no
address = 192.168.22.9

[rootfs]
comment = Root file system for backup
uid=root
gid=root
path = /
read only = yes
exclude=/dev/* /proc/* /sys/* /tmp/* /run/* /mnt/* /media/* swapfile "lost+found" ".cache" /var/www/photos /var/www/distro
dont compress = *
lock file = /var/run/rsync.rootfs.lock
charset = utf-8
auth users = backuper
secrets file = /etc/rsyncd.secrets

4. В "/etc/rsyncd.secrets" добавляем пароль для пользователя "backuper".
5. На клиенте (туда, куда будем бэкапить), создаем папочку, делаем cd туда, запускаем от рута команду
rsync -av --progress --one-file-system backuper@192.168.22.9::rootfs ./
6. Через какое-то время локально будет скачан образ удалённой системы. По желанию его можно заtarить и упаковать в архив.

Разумеется, у данного метода есть куча недостатков.
  • Требуется наличие заранее преднастроенного шифрованного канала.
  • Требуется наличие прав суперпользователя на клиентской машине либо пляски с утилитой fakeroot.
  • Расточительно используется сеть / гоняется слишком много трафика.

Конечно, в ряде случаев намного удобнее сколотить шифрованный архив с бэкапом "там", а потом его просто скачать по scp, https, ftp и тому подобное. Но я как всегда, решаю несколько долбанутую задачу. Поэтому можете не критиковать особенно мою "придумку": я знаю, что для большинства случаев такой способ будет неоптимальным. Это больше демонстрация возможностей rsync-а.

И понятно, что обычно удобнее пользоваться готовыми утилитами, которые работают всё через тот же rsync. Например, "rsnapshot".

администрирование, hints, linux, it

Previous post Next post
Up