Резервное копирование linux cron

Резервное копирование linux cron

Иногда системным администраторам, программистам, web-дизайнерам и много кому ещё нужно запускать одни и те же команды или скрипт с некоторой периодичностью. Для таких целей используется специальная утилита Cron, встроенная во все дистрибутивы Unix. Пользоваться Cron’ом необычайно легко. Сейчас расскажу как.

Для начала создадим какой-нибудь простой bash-скрипт, например скрип резервного копирования и архивирования конфигурационных файлов, в моём случае конфигурационных файлов Apache2 и ftp-сервера.

#!/bin/bash mkdir /home/user/bash-scripts/backup cp /etc/apache2/apache2.conf /home/user/bash-scripts/backup/apache2.conf-backup cp /etc/apache2/sites-available/site /home/user/bash-scripts/backup/site-backup cp /etc/proftpd/proftpd.conf /home/user/bash-scripts/backup/proftpd.conf-backup tar cvvzf "/home/user/bash-scripts/backup-`date +%F-%X`.tar.gz" /home/user/bash-scripts/backup/ rm -r /home/user/bash-scripts/backup

Этот скрипт копирует конфигурационные файлы и архивирует их в папку, в названии которой присутствует дата и время сохранения. Назовём его ‘backup-script‘ а лежать он у нас будет в домашнем каталоге (/home/user/). Теперь нам надо чтобы этот скрипт запускался, ну допустим, каждые 10 минут. Для этого введём команду

Этой командой мы открываем для редактирования файл crontab для данного пользователя, в моём случае это user. Если нашему скрипту нужны права супер пользователя, то нужно редактировать crontab суперпользователя. Делается это командой

Ну и если заменить root а логин другого пользователя, мы будем редактировать его crontab.
Сразу напишу, чтобы посмотреть файл crontab введите команду.

Файл crontab имеет следующую структуру:

поле1 поле2 поле3 поле4 поле5 команда

Значения первых пяти полей:
1.минуты— число от 0 до 59
2.часы — число от 0 до 23
3.день месяца — число от 1 до 31
4.номер месяца в году — число от 1 до 12
5.день недели — число от 0 до 7 (0-Вс,1-Пн,2-Вт,3-Ср,4-Чт,5-Пт,6-Сб,7-Вс)

Все поля обязательны для заполнения. Не сложно догадаться что первые 5 отвечают за определения периодичности запуска команды, а последняя собственно команда или полный путь к скрипту. Таким образом, чтобы запустить наш скрипт резервного копирования раз в 10 минут надо вписать следующую строчку.

*/10 * * * * /home/user/backup-script

* — значит все возможные варианты, / служит для определения периодичности выполнения задания. Если нужно будет выполнять скрипт раз в 3 часа впишите в значения часы */3 а в минуты просто *, если раз в сутки — впишите */23, ну почти сутки. Так же в одно поле можно вводить несколько значений через запятую, например если хотите выполнять скрипт 1ого, 5ого, и 25ог числа каждого месяца введите 1,5,25 вместо третей звёздочки. Ещё можно вводить промежуток времени, если ,допустим, в часы ввести 12-17 то скрипт будет выполняться с 12 до 17 включительно раз в час.
Ну вот и всё, в заключение пару примеров:

0 */3 * * 2,5 /home/user/backup-script #Каждые три часа только по вторникам и пятницам
15 */3 * * * /home/user/backup-script #Каждые три часа в 15 минут
45 15 * * 1 /home/user/backup-script #По понедельникам в 15:45
13 13 13 * 5 /home/user/backup-script #в пяnницу 13 числа в 13 часов 13 минут
30 00 * * 0 /home/user/backup-script #Раз в неделя по воскресеньем в 00:30

Похожие посты.

Комментарии:

Здравствуйте!
Настраиваю в Ubuntu cron вроде отредактировал файл, а запустить не получается.
На команду subo /sbin/service crond start выдает command not found
Подскажите, пожалуйста, как запустить.

Читайте также:  Linux command line beginners

Информация ваша очень мне понравилась.
Доступно написано. Пять балов, из пяти.

А разве sudo /etc/init.d/cron stop/start не работает?

Источник

# Создание бэкапа удалённого сервера при помощи Rsync

Эта инструкция — продолжение нашего руководства по установке и настройке Rsync. В этой части мы расскажем, как при помощи Rsync создать бэкап сервера и сохранить его на другой машине и как делать это регулярно — добавим задачу в планировщик задач cron.

Мы будем описывать настройку работы Rsync на сервере с Ubuntu. Для CentOS и Debian процедура настройки будет аналогичной.

# Настройка сервера-клиента

Здесь мы расскажем о том, как настроить сервер, для которого будем создавать бэкап.

Если на машине нет Rsync, тогда установите его. Как это сделать — читайте в нашей инструкции по установке и настройке Rsync.

После установки открываем конфигурационный файл:

При первичной настройке мы только создали файл и оставили его пустым. Сейчас заполним его:

pid file = /var/run/rsyncd.pid log file = /var/log/rsyncd.log transfer logging = true munge symlinks = yes [data] path = /var/log uid = root read only = yes list = yes comment = Data backup Dir auth users = backup secrets file = /etc/rsyncd.scrt 

Здесь мы указываем следующие параметры:

  • pid file — указание пути к файлу, в котором будет сохранён идентификатор процесса;
  • log file — указание пути к файлу с логами работы программы;
  • transfer logging — указание на ведение логов процесса (включает логирование выполнения);
  • munge symlinks — указание на модификацию символьных ссылок, которая сохраняет символьные ссылки, но не позволяет их использовать, пока они находятся в бэкапе (одно из усилений безопасности).

Строка [data] — обозначение начала отдельного блока данных, в котором мы описываем параметры сохраняемых в бэкап данных:

  • path — путь к папке, содержащей нужные данные;
  • uid — пользователь, от имени которого будет производиться резервное копирование;
  • read only — указание прав доступа к копируемым ресурсам (только чтение);
  • list — указание на вывод списка копируемых файлов (доступ пользователей к списку копируемых файлов);
  • comment — комментарий к копируемым данным;
  • auth user — имя пользователя для подключения к этому серверу;
  • secrets file — путь к файлу, в котором хранится имя пользователя и пароль в формате user:password .
Читайте также:  Bcm4360 kali linux driver

После указания всех необходимых данных сохраняем и закрываем конфигурационный файл.

Теперь создаём файл, содержащий в себе учётные данные пользователя, от имени которого будет производиться резервное копирование:

В открывшийся пустой файл добавляем учётные данные нашего пользователя:

Теперь устанавливаем права на доступ к этому файлу только для root-пользователя:

После этого осталось только перезапустить rsync, и он будет полностью готов к работе:

sudo systemctl restart rsync 

Сервер, бэкап которого будем создавать, настроен. Переходим к его настройке.

# Настройка хранилища

Здесь нам нужно написать скрипт, который будет по SSH подключаться к серверу, на котором настроен клиент rsync, и «забирать» определённые данные. Чтобы написать скрипт, воспользуемся любым текстовым редактором:

sudo vim /bin/server_backup.sh 

В открывшееся окно добавим следующую информацию:

 date syst_dir=/backup/ srv_name=server1 srv_ip=10.10.1.55 srv_user=backup srv_dir=data echo "Start backup $" mkdir -p $syst_dir>$srv_name>/increment/ /usr/bin/rsync -avz --progress --delete --password-file=/etc/rsyncd.scrt $srv_user>@$srv_ip>::$srv_dir> $syst_dir>$srv_name>/current/ --backup --backup-dir=$syst_dir>$srv_name>/increment/`date +%Y-%m-%d`/ /usr/bin/find $syst_dir>$srv_name>/increment/ -maxdepth 1 -type d -mtime +30 -exec rm -rf > \; date echo "Finish backup $" 

Здесь мы описали следующие параметры:

  • syst_dir — директория, в которой будем сохранять бэкап (заранее убедитесь, что под неё выделено достаточно дискового пространства);
  • srv_name — имя сервера, бэкап которого будем создавать;
  • srv_ip — адрес сервера, к которому будем подключаться;
  • srv_user — имя пользователя rsync, которое мы указали на предыдущем этапе, создавая конфигурационный файл на сервере-клиенте;
  • srv_dir — данные, которые будем сохранять — в данном случае указываем data, поскольку именно этот блок описан в конфигурационном файле сервера-клиента.

Это основные директивы, определяющие параметры подключения к серверу-клиенту. Далее идёт описание самого процесса создания резервной копии. В качестве дополнительного параметра, позволяющего следить за объёмом занимаемого дискового пространства, мы добавили в скрипт процедуру, удаляющую резервные копии старше 30 дней.

Сохраняем и закрываем наш скрипт. После этого делаем его исполняемым файлом:

sudo chmod 0744 /bin/server_backup.sh 

Теперь нужно создать файл, в котором будет указан пароль для авторизации на сервере-клиенте:

Здесь указываем только пароль для доступа к серверу: password .

После этого передаём права на доступ к этому файлу пользователю root:

sudo chmod 0600 /etc/rsyncd.scrt 

Всё готово. Можно проверять работу нашего скрипта, просто запустив его:

sudo sh /bin/server_backup.sh 

Если все настройки произведены правильно, то в консоли мы увидим сведения о количестве переданных байт, скорость обмена ими, их список и т.д.:

# Output … zabbix/zabbix_server.log 1,252,925 100% 1.75MB/s 0:00:00 (xfr#6, to-chk=0/69) sent 70,661 bytes received 103,374 bytes 116,023.33 bytes/sec total size is 86,776,026 speedup is 498.61 Tue 05 Apr 2022 02:23:26 PM +05 Finish backup server_name 

Скрипт, создающий резервные копии наших данных, готов. Осталось только добавить его к списку задач cron, чтобы резервные копии создавались автоматически.

# Добавление скрипта в Cron

В Linux есть встроенный механизм выполнения заданий по расписанию — планировщик задач Cron. Это универсальный инструмент, позволяющий создавать расписание для выполнения скриптов, что значительно упрощает администрирование и позволяет перевести часть рутинных процессов в фоновый режим.

Перед началом работы с Cron следует ознакомиться с синтаксисом файла, где создаются задачи.

Добавляется задача в одну строку: * * * * * path/to/script . Основные параметры здесь — параметры времени, указанные в строке звёздочками. На месте звёздочек указываются минуты, часы, числа месяца, номер месяца и номер дня недели, в которые нужно запускать данный скрипт.

  • 30 * * * * path/to/script — скрипт запускается каждые 30 минут;
  • 0 12 15 * * path/to/script — задание выполняется каждый месяц, 15 числа, в 12:00;
  • 15 10 * * 2 path/to/script — задание выполняется по вторникам в 10:15.

Теперь добавим наш скрипт в Cron:

Эта команда откроет файл, описывающий синтаксис добавления команд в cron, и сам список выполняемых заданий. Добавляем наш скрипт в этот файл после закомментированных строк:

… # For more information see the manual pages of crontab(5) and cron(8) # # m h dom mon dow command 30 12 * * * /root/bin/backup-server1.sh 

Здесь мы указали следующее задание — выполнять резервное копирование каждый день в 12:30.

© Джино, 2003–2022. «Джино» является зарегистрированным товарным знаком.
Лицензия на телематические услуги связи №150549 от 09.03.2017.

Источник

Оцените статью
Adblock
detector