Автоматическое резервное копирование в Linux

Статус
В этой теме нельзя размещать новые ответы.

ajtj

Пассажир
Сообщения
19
Реакции
14
Приветствую.
Решил быстренько закатать еще один мануал :)
Кстати, помните, что каждый автор пишет маны со своей системы, поэтому тупо копировать код и ставить в указанные файлы - плохая идея (например, пути к директориям могут быть разные или просто неподходящие для Вас).
И еще - все, что я тут пишу, вы делаете на свой страх и риск. Особенно, если мозгов у вас не хватает или вы просто "не хотите заморачиваться".

Let's start!
Если вы как и я любите экспериментировать, то вам не избежать периодических смертей системы.
Чтобы минимизировать риски можно настроить автоматическое резервное копирование всей системы или определенных папок без танцев с бубнами.
Резервное копирование будет работать по такой простой схеме:
1. Каждый день ночью создаем резервную копию нужных нам каталогов в одной и той же папке;
2. Каждую среду создаем архив с последним бэкапом
3. Каждую среду ищем архивы, возрастом более 30 дней и удаляем их.​
Так это работает у меня и это удобно для меня. Можете конфигурить как вам удобно.

Итак, приступим:

1. Запомните этот шаг навсегда и выполняйте его всегда - обновляем списки пакетов:
Код:
apt-get update
apt-get - стандартный менеджер пакетов в Debian. Данная команда получает последние версии имеющихся в дистрибутивах пакетов. Не выполните - поставите на следующем шаге старый пакет.

2. Ставим rsync и tar, если вы еще этого не сделали:
Код:
apt-get install rsync tar

3. Запускаем crontab от имени root:
Код:
sudo crontab -e
Почему от рута, если кронтаб можно запустить от имени любого пользователя? Да все просто: простым смертным не-root'ам недоступны некоторые каталоги системы и в итоге мы поймаем "баг" - резервное копирование споткнется на половине пути.

4. Создаем в crontab задания по расписанию. Всего 3 строки, как я и писал выше (я разделю их абзацами, чтобы было понятнее):
Код:
0 2 * * * rsync -r -t -v -z -a  --progress  --delete --exclude /var/cache/ --exclude /proc/ --exclude /sys/ --exclude /mnt/ --exclude /dev/ --exclude /boot/grub/grub.conf --exclude /media/ / /media/data/etc/backup-files/fullbackup-daily

0 4 * * 3 tar -zcvpf /media/data/etc/backup-files/fullbackup-weekly-arch/fullbackup-weekly-$(date +'\%d-\%b-\%Y').tar.gz /media/data/etc/backup-files/fullbackup-daily/*

0 6 * * 3 find /media/data/etc/backup-files/fullbackup-weekly-arch/ -type f -mtime +30 -exec rm -rf {} \;

Что же у нас тут творится?
Строка 1. rsync каждый день в 2 часа ночи начинает бэкапить всю файловую систему в папку fullbackup-daily, за исключением /var/cache/, /proc/ и так далее (все, что указано с аргументом --exclude), так как это говно нам не нужно!
У меня это строка выглядит слегка иначе, например, я не бэкапю некоторые системные папки медиа-сервера с автоматически-созданными эскизами картинок, так как это не самая важная информация (они пересоздадутся за 5 минут), а места занимает она очень много и не жмется архиватором нихера!
Обратите внимание, что мы не бэкапим смонтированные диски, саму же папку с бэкапами и т.п. Причины объяснять, думаю, не нужно (хотя любитель арифметических прогрессий может поэкспериментировать)
Кстати, некоторые спросят, почему rsync, ведь интереснее же задрочиться с cp :) Просто rsync - не тупая копировалка, она смотрит, изменился ли файл или директория и только если файл менялся копирует его, т.е. не делает лишней работы. О других плюсах этой утилиты читайте в интернетах.

Строка 2. tar каждую среду в 4 часа ночи делает полный архив нашего ежедневного бэкапа с именем вида "fullbackup-weekly-15-Jul-2015.tar" и кладет его в папку fullbackup-weekly-arch. По сути просто жмем файлы и все, так как незаархивированная система весит неслабо и жмется в 2-5 раз смело.

Лирическое, но полезное отступление:
Внимательный читатель заметит одну особенность команды и сделает для себя выводы. Это я говорю про фрагмент строки "(date +'\%d-\%b-\%Y').tar.gz". Если всю данную строку выполнить не из крона, а просто из терминала, то она отработает через жопу и создаст файл с кривым именем, так как в терминале данный участок строки должен выглядеть как "(date +'%d-%b-%Y').tar.gz" (т.е. без бэк-слэшей "\").
"Что за говно?!" спросишь ты, внимательный читатель. Ответ как всегда прост: cron хреново работает с процентиками и прочей мишурой :) Поэтому мы и даем ему понять, что тут переменная, а не х*й собачий.

Строка 3. А эта строка у меня под вопросом :) По-моему мне так и не удалось ее заставить работать.
Она должна каждую среду в 6 утра удалять файлы (архивы с бэкапами) возрастом более 30 дней.
Придумал! Будем считать это домашним заданием! Итак, пытливый ум, заставь же работать третью строку!

На этом все.

Немножко статистических данных, ведь, может быть, вся эта хрень весит безбожно.
Если вы обычный юзер, у вас не поднято веб-окружение с прочими серверами, то вся система у вас будет весить максимум 5 гигов, а каждый архив примерно 1 гиг. При этом весь процесс резервного копирования займет максимум час, а в кроне я специально выполняю команды через 2 часа - контрацепция!
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.

Похожие темы

Парень два года не трогал свою боевую виртуалку. Прошлой неделей решил обновиться через apt. Получил битый signing key, отвалившийся репозиторий, сломанный Metasploit и грязное удаление половины тулов которыми он пользовался. Чтобы починить — пришлось скачивать ISO заново. Это типичная история...
Ответы
0
Просмотры
339
Привет, коллеги. CyberSec RuTOR на связи. В прошлой статье я подробно разобрал, как настроить базовую защиту на Ubuntu + Nginx и какие сервисы подключить. Но время идёт, и DDoS-атаки эволюционируют. Сегодня я расскажу о новых трендах, с которыми столкнулся лично, и о неочевидных фишках защиты...
Ответы
0
Просмотры
328
Системное администрирование Linux (2024) [Специалист] [Павел Монахов] Курс предоставляет слушателям необходимые знания и практические навыки для работы системным администратором Linux. В курсе охвачены вопросы администрирования, настройки и обновления Linux систем наиболее популярных...
Ответы
2
Просмотры
934
В темных уголках даркнета, где анонимность и безопасность — это всё, каждый инструмент может быть либо вашим щитом, либо слабым звеном. Firejail — это мощный инструмент песочницы для Linux, который действует как укрепленный бункер для ваших приложений. Он изолирует программы, ограничивает их...
Ответы
6
Просмотры
Linux. Уровень 1. Основы администрирования (2024) [Специалист] [Сергей Русанов] Данный курс позволит Вам получить базовые знания по операционной системе Linux. Вы освоите особенности установки, настройки и администрирования данной ОС. Для вас прояснится отличие Linux от коммерческих операционных...
Ответы
1
Просмотры
846
Назад
Сверху Снизу