Rsnapshot – резервное копирование

Введение

Rsnapshot – полезная утилита для резервного копирования, написанная на Perl, которая использует Rsync. Rsnapshot позволяет пользователям создавать свои решения для резервного копирования.

Описание

Резервное копирование необходимо для возможности быстрого восстановления данных (документов, фотографий, баз данных, программ, настроек и т.д.). Всегда есть риск потерять данные. Сломался винчестер, случайно удалили нужные вам файлы или поработал вирус. Лучше всегда иметь резервную копию всех своих важных данных.
Как организовать резервное копирование?
Можно самому копировать все нужные файлы на другой диск или внешний накопитель,  на сетевое устройство. Можно воспользоваться облачными сервисами. Но часто мы забываем это делать регулярно и наступает момент, когда нужный нам файл испорчен или удален, а копии у нас нет, или копия слишком стара и в ней нет тех данных, что вы наработали. И тогда приходит четкое осознание того, что лучше этот процесс автоматизировать и пусть архивные копии делаются сами, в автоматическом режиме. И тут возникает вопрос, а как делать копии, ведь если просто копировать каждый день, или по несколько раз в день все данные, то это потребует много места, допустим ваш архив с документами и фотографиями занимает 100Гбт, то каждая последующая копия прибавить +100Гбт. Придется запастись емкими накопителями. Да и копирование таких объемов не за секунды происходит, что совсем не удобно. Поэтому лучше воспользоваться инкрементными копиями “снапшотами”. Инкрементное резервное копирование состоит из одной полной резервной копии, а затем создание дополнительных копий. Эти дополнительные резервные копии только изменившихся файлов, которые изменились с момента последнего резервного копирования.  Это гораздо более эффективный процесс. Одним из таких инструментов в  * NIX системах является rsnapshot.

Подготовка

Для начала вы должны определиться, с какой периодичностью делать резервные копии. Несколько раз в день, или раз в сутки, неделю, месяц? Что для вас предпочтительней, на сколько вам важны данные и как часто они меняются.
Так же следует подготовить место, куда будут производиться копирование резервных копий.

mkdir /mnt/backup – содаем директорию, в которую будут записываться “снапшоты”.

Установка

Установка rsnapshot довольно проста, просто выполните следующую команду от root пользователя:

  • В Debian,Ubuntu:
# apt-get install rsnapshot
  • На Fedora,CentOS:
# yum install rsnapshot

Настройка

По умолчанию создается файл /etc/rsnapshot.conf.default. Его необходимо скопировать в /etc/rsnapshot.conf. Чтобы иметь возможность вернуться к настройкам по умолчанию.
Открываем для редактирования rsnapshot.conf, я обычно пользуюсь редактором nano.

# nano /etc/rsnapshot.conf

Файл конфигурации очень хорошо прокомментирован, что облегчает настройку.

Важное примечание, нельзя использовать “пробелы” только “табуляция”  иначе будет ошибка.

## Все копии будут храниться в этом корневом каталоге (которую мы создали ранее)
snapshot_root   /mnt/backups/

Rsnapshot – позволяет делать несколько уровней резервных копий. Следует обратить внимание, что самый свежий бэкап в списке будет под нулевым номером, остальные бэкапы смещаются вниз на единицу и так по циклу.

##Интервалы создания резервных копий
## Не нужные интервалы можно за комментировать “#”
retain    hourly      6
retain    daily     7
retain    weekly     4
retain    monthly     12

Когда запуститься rsnapshot hourly, будет создана резервная копия в файловой системе, которая будет сохранена в <snapshot_root> /hourly.0/. Первая нулевая копия, самая тяжелая и продолжительная по времени.
Предыдущий hourly.0/ переименуется в hourly.1/. При следующем выполнении hourly.1/ переименуется в hourly.2/ и т.д. по циклу. Так в конце концов то, что было <snapshot_root> /hourly.0, станет <snapshot_root> /hourly.23/ и при следующем запуске /hourly.23/ будет удален. Когда запуститься rsnapshot daily, создастся директория <snapshot_root> /daily.0/ в которую перенесутся резервные данные от <snapshot_root> /hourly.23/, если они существует.
Точно так же, когда запуститься rsnapshot weekly, это создаст <snapshot_root> /weekly.0/ от <snapshot_root> /daily.6/ из резервной копии, если она существует.
Точно так же это правило действует и на следующие уровни, которые описаны в файле конфигурации (monthly и т.д.)

Используя такую конфигурацию мы получим 12 ежемесячных резервных копий, 4 еженедельных, 7 ежедневных и 6 ежечасные и при этом занимаемое место под бэкапы будет минимальным. Т.к. не происходит копирование всех данных, а создаются символьные ссылки.
Если вам не требуется использовать ежечасные копии, следует просто закомментировать в конфигурационном файле retain  hourly и запустить этот же конфиг.

Примечание: Если какие-то интервалы не определены в cron, для избежания ошибок при работе Rsnapshot нужно удалить из него соответствующие строки.

В этом разделе мы задаем rsnapshot пути к данным, с которых нам надо делать резервные копии и куда мы будем их складывать.
Задаем параметр backup, а затем указываем полный путь к данным на локальном ресурсе, так же возможно указать и сетевой ресурс к удаленной машине.
Третий столбец это относительный путь, если вы хотите делать резервные копии, в корне snapshot_root.

###############################
### BACKUP POINTS / SCRIPTS ###
###############################
backup      /home/                              localhost/
backup      /etc/                                   localhost/
backup      /usr/local/                        localhost/
#backup    /var/log/rsnapshot        localhost/
#backup    /etc/passwd                     localhost/

Первый столбец backup определяет точку резервного копирования.
Второй столбец /home/ – путь к данным, которые нам надо сохранять. Обязательно должен заканчиваться /
Третий столбец localhost/ –  относительный путь, куда будет производиться копирование в нашем случае это в директории /mnt/backups/.

В этом примере, /home/ это полный путь к каталогу, с которого мы хотим делать резервные копии, и localhost/ это каталог внутри snapshot_root, куда мы собираемся сохранять их.
Использование localhost в качестве каталога назначения является всего лишь условностью. Вы также можете выбрать, использование полного доменного имени сервера, а не локального хоста.
Если вы принимаете резервные копии из нескольких сетевых машин на одном выделенном сервере резервного копирования, для этого лучше использовать различные имена хостов, как каталоги, чтобы отслеживать, какие файлы с какого-сервера.

Чтобы использовать возможности удаленного резервного копирования rsnapshot надо просто указать удаленный компьютер в качестве источника резервного копирования.
/etc/rsnapshot.conf

###############################
### BACKUP POINTS / SCRIPTS ###
###############################
backup      root@salf-net.ru:/etc/     salf-net.ru/

Это в принципе тоже самое, что и пример выше, но вы должны помнить о некоторых дополнительных параметрах:
SSH-демон должен быть запущен на удаленном хосте salf-net.ru.
Вы должны иметь доступ к учетной записи, заданной на удаленной машины, в этом случае root пользователь на salf-net.ru.
У вас должна быть включена авторизация по ключу для пользователя root на salf-net.ru, без пароля. Если вы хотите выполнять резервное копирование от имени другого пользователя, вы можете указать другого пользователя вместо root для источника (т.е. user@domain.com).
Примечание: Обратите внимание, что разрешение на вход в систему на удаленном хосте без пароля, это очень не безопасно.

Дополнительные скрипты

Существует дополнительные backup_script параметр. С помощью этого параметра во втором столбце указывается полный путь к исполняемому скрипту резервного копирования, а третий столбец -это локальный путь, куда будет производиться копирование.

/etc/rsnapshot.conf

backup_script      /usr/local/bin/backup_mysql.sh       localhost/mysql/

В этом примере rsnapshot будет выполняться скрипт /usr/local/bin/backup_mysql.sh в каталог Temp, затем синхронизирует результаты в localhost/MySQL в/ директорию под snapshot_root.
Сценарий резервного копирования должен выгружать содержимое базы, в текущий рабочий каталог. В скрипте не должна быть задана определенная директория выгрузки . Причина этого заключается в том, что rsnapshot создает Temp директорию, делает в нее выгрузки , запускает скрипт резервного копирования, а затем синхронизирует содержимое каталога Temp в относительный путь, указанный в третьей колонке.
Типовой скрипт резервного копирования будет один, который архивирует содержимое базы данных. Он может выглядеть следующим образом:

backup_mysql.sh

#!/bin/sh
/usr/bin/mysqldump -uroot mydatabase > mydatabase.sql
/bin/chmod 644 mydatabase.sql

Примечание: убедитесь, что бы путь назначения был задан уникальным. Backup script будет полностью перезаписать все файлы в пути назначения, так что если вы указали один и тот же путь назначения дважды, у вас останется только последняя копия сделанной скриптом. К счастью rsnapshot выдаст ошибку, при проверке конфигурационного файла.

Примечание: пожалуйста, помните, что эти скрипты резервного копирования будет выполняться от имени пользователя, запустившего rsnapshot. В нашем Этом примере это root пользователь.
Убедитесь, что ваш backup script принадлежат пользователю root и не доступен другим пользователям. Т.к. любой пользователь, у которого есть права на запись в backup script может дописать в них команды, которые будут выполняться от имени пользователя root. Что может привести, к очень плачевной ситуации.

Так же следует заметить, что можно добавить маску включений/исключений, чтобы не копировать не нужный мусор.

## Список включения/исключений по маске.
exclude *.tmp
exclude ~*
exclude /home/*/.cache
include *.jpg
##Список включений/исключений.
include_file /path/to/include/file #исключено
exclude_file /path/to/exclude/file  #включено

Тестирование конфигурации

Когда вы внесли ваши изменения, вы должны убедиться в правильности параметров и сделать тестирование конфигурации. Для этого запустите rsnapshot с аргументом: configtest

# rsnapshot configtest

Если нет ошибок, выдаст сообщение Syntax ОК. Если обнаружиться проблема, будет указана ошибка. Проверьте, что в конфигурационном файле вы использовали табуляцию, а не пробелы и т. д.

Последний шаг, чтобы проверить свои настройки, запустите rsnapshot в тестовом режиме. Это выведет подробный список действий, которые он будет делать, на самом деле не выполняя их.
Чтобы сделать пробный пуск, выполните эту команду:

# rsnapshot -t hourly

Произойдет имитация резервного копирования hourly.

Первый запуск

# rsnapshot hourly

Будет произведено первое резервное копирование.

Автоматизация с Cron

Если в ручном режиме все прошло нормально, надо добавить задание, для выполнения резервного копирования, в автоматическом режиме.
Для этого отредактируем /etc/cron.d/rsnapshot

# This is a sample cron file for rsnapshot.
# The values used correspond to the examples in /etc/rsnapshot.conf.
# There you can also set the backup points and many other things.
#
# To activate this cron file you have to uncomment the lines below.
# Feel free to adapt it to your needs.00 1 ***        root    /usr/bin/rsnapshot hourly #Кадлый час начиная с 01ч00м
00 3 ***        root    /usr/bin/rsnapshot daily # ежедневная копия начиная с 03ч00м
00 5 **7        root    /usr/bin/rsnapshot weekly #Еженедельная начиная с 05ч00м в Воскресенье
00 12 1**    root    /usr/bin/rsnapshot monthly #Ежемесячно в 12ч.00м 1 числа

Рекомендуется запланировать время выполнения резервного копирование от больших до мелких резервных копий, чтобы предотвратить конфликты между выполнением бэкапов.

Дополнительные команды rsnapshot

rsnapshot du – просмотреть занимаемое место резервными копиями
rsnapshot diff – daily.0 daily.1 – сравнение изменения между резервными копиями

Views: 230

Поездка в метро

Понадобилось мне как-то вечером после работы съездить на метро по делам до «Щелковской». Час-пик, людей немерено, все ноги отдавили. Обычно я позже еду, когда людей меньше.

В японском в метро есть специально обученные люди, которые на остановках трамбуют людей в вагоны, чтобы их больше за раз уехало и не было столпотворения на платформе. В нашем метро такие люди не нужны, поскольку всегда найдется этакий сука-«трамбовщик» у каждой двери вагона. Что ведь характерно, заталкивает подобная гнида людей в вагон, а сам при этом делает лицо умственно отсталого олигофрена и еще мерзко улыбается – типа «это не я, это меня сзади толкают». Вот прям бесят такие.

Думаю, раз до конечной еду, влезу потихоньку в середину вагона. Пролез, правой рукой держусь за поручень, в левой руке телефон, на нем книгу электронную читаю. Под мышкой у меня разместился интеллигентного вида дедуля маленького роста, в очках, с бородкой. В общем, с комфортом едем.

Осталась последняя станция с большим пассажиропотоком – «Курская», а дальше на станциях люди в основном выходят. Зашли пассажиры на «Курской», чую – потянуло шавермным духом. Точно, купил какой-то говнюк шаверму на вокзале и решил в метро сожрать. Горите вы в аду, жруны, воняющие едой в метро. Дух вокзальной шавермы ни с чем не перепутать, поскольку в нее кладут куриц-гриль, потерявших товарный вид, которые к тому же, делаются из порченных куриц, вымоченных в воде с хлоркой. «Хуже быть не может» – подумал я.

«Еще как может» – решил какой-то пакостник, после чего подло и сугубо-удушливо набздел. Может это был сам счастливый обладатель шавермы, привыкший лакомиться ей в такой непринужденной «атмосфере».

На наших школьных уроках по НВП, подполковник запаса Репин использовал аббревиатуру СДЯВ (Сильно Действующие Ядовитые Вещества). После чего в околошкольных кругах стало модным перед дегазацией организма подавать окружающим команду «СДЯВ!!!». Приветствовалось так же назвать тип применяемого вещества из перечисленных в школьном учебнике («Зарин, «Зоман», «Табун», «Иприт», «Люизит»). Один раз Андрюха Рыжий честно предупредил окружающих «СДЯВ!!!», назвал тип применяемого вещества: «Иприт!», остановился и напрягся. Дальше пошло что-то не так – организм Андрюхи не успел переработать вещество в газ, поэтому «Иприт» в первоначальном (жидком) агрегатном состоянии натурально побежал у него по ляжкам в сандалии. Андрюха носился домой мыться и переодеваться, а поскольку комплект школьной формы был один, как у всех, то на переменах он прятался от завучей, чтобы не увидели его «гражданские» коричневые брюки.

Применивший без предупреждения СДЯВ в вагоне метро, оказался уникальным, блядь, человеком (если его так можно назвать). Этот ходячий биореактор смог произвести и применить, в нарушение «Конвенции ООН о запрещении химического оружия», газы сразу с несколькими поражающими факторами – кожно-нарывного (резь в глазах) и удушающего (реально стало нечем дышать) действия. «Да что такое то!» – послышался возмущенный женский вопль из эпицентра событий. Люди начали судорожно хватать ручки закрытых на зиму форточек. Некоторые форточки открылись, потянуло сквозняком, дышать стало немного легче. «Надо вылезти, мало ли этот засранец решит повторить» – решил я и вспомнил, что «Бауманская» (на тот момент) закрыта на реконструкцию и мы едем без остановок до «Электрозаводской». Уткнулся носом в рукав куртки и решил крепиться.

«Рано расслабились» – решил неизвестный говнюк и применил боевые отравляющие вещества во второй раз.

Во время службы в голодные 90-е годы, нас иногда кормили замечательным бигусом из гнилой капусты с мороженной картошкой, к которому в придачу давали пару вареных куриных яиц. Выделяемый при смешении данных продуктов в организме «бздо», имел такие характерные одорологические признаки, что в казарме круглый год не закрывали на ночь окна, чтобы никто не задохнуться во сне.

Но даже тот «бздо» был пуком младенца по сравнению с тем, что исторг из себя вагонный мерзавец во второй раз. Любой, кто бы смог записать формулу данного химического соединения, легко, не имея конкурентов, мог получить Нобелевскую премию по химии, причем сразу лет на 5 вперед. Вонь была мерзкой, обволакивающе-липкой, а благодаря открытым форточкам, быстро распространилось по салону. У меня вдруг потемнело в глазах и ноги стали ватные. Я убрал телефон в карман, взялся за поручень двумя руками и начал читать рекламу на стенах вагона, чтобы не потерять сознание. «Ну вот как так можно, блядь» – сказал едущий у меня под мышкой дедушка, очевидно рассчитывая услышать от меня в ответ нечто подобное. Но я не мог ему ответить, сил не было.

Редкие пассажиры «Электрозаводской» наверняка были удивлены, когда из одного вагона подошедшего состава, начали щемиться люди с перекошенными лицами, словно спасаясь от зомби-апокалипсиса. Не помню, как оказался на платформе, жадно хватая ртом воздух. Вышел я на улицу и двинул пешком до «Семеновской», поскольку все вокруг казалось пропитанным той вонью.

Спустился на «Семеновской» по новой в метро и понял, что не смогу влезть в переполненные вагоны. Каждый раз при прибытии состава, впереди нагло оказывались целюлитные тетки, которые растолкав всех, первыми лезли в вагон. Переступив порог вагона, с тетками случалась метаморфоза – их активность терялась, проходить дальше от дверей им было в падлу, и хер ними – с теми, кто остался сзади.

Я уже почти опаздывал, когда в голову пришла одна мысль. После открытия дверей вновь прибывшего поезда, я сделал насколько мог дебильное лицо, улыбнулся от уха до уха (хотел еще нитку слюны изо рта пустить, но в последний момент передумал) и тремя крепкими толчками вогнал вставших в дверях бабищ внутрь вагона. Оказавшись внутри, я на всякий случай принюхался (не меняя выражения лица), расслабился, позволил дверям закрыться за моей спиной и поехал до «Щелковской».

С просторов интернета, автора не знаю.

Views: 2