Этот сценарий не принимает аргументов, но сообщает, какие журналы были подвергнуты ротации и почему. Кроме того, его следует запускать с привилегиями root.
Результаты
Пользоваться сценарием rotatelogs просто, как демонстрирует листинг 6.14, но имейте в виду, что в зависимости от прав доступа к файлам может потребоваться запускать его с привилегиями root.
Листинг 6.14. Запуск сценария rotatelogs с привилегиями root для ротации журналов в /var/log
$ sudo rotatelogs
ftp.log’s most recent backup is more recent than 30 days: skipping
Rotating log lastlog (using a 14 day schedule)
… lastlog — > lastlog.1
lpr.log’s most recent backup is more recent than 30 days: skipping
Обратите внимание, что в данном примере критериям поиска соответствуют только три файла журналов. Из них только для lastlog не было создано достаточно свежей копии, согласно настройкам периода ротации в конфигурационном файле. Повторный запуск сценария rotatelogs, однако, не дал ничего, как показано в листинге 6.15.
Листинг 6.15. Повторный запуск rotatelogs показал отсутствие журналов, требующих ротации
$ sudo rotatelogs
ftp.log’s most recent backup is more recent than 30 days: skipping
lastlog’s most recent backup is more recent than 14 days: skipping
lpr.log’s most recent backup is more recent than 30 days: skipping
Усовершенствование сценария
Одно из усовершенствований, которое можно добавить в сценарий, чтобы сделать его еще более полезным, — реализовать отправку самого старого архива, файла $back4, по электронной почте или копирование в облачное хранилище перед уничтожением командой mv. Проще всего отправку по электронной почте вставить в сценарий перед командой:
echo"… $back3 — > $back4"; $mv −f "$back3" "$back4"
Другое полезное расширение в rotatelogs — сжатие всех архивированных файлов для экономии дискового пространства; для этого необходимо, чтобы сценарий распознавал и правильно обрабатывал сжатые файлы.
№ 51. Управление резервными копиями
Управление резервным копированием системы — задача, хорошо знакомая всем системным администраторам и очень неблагодарная. Никто никогда не скажет: «Резервное копирование мне здорово помогло — отличная работа!». Некоторые виды резервного копирования жизненно необходимы даже для систем Linux с единственным пользователем. К сожалению, ценность этой операции мы нередко осознаем только после потери данных и файлов. Одна из причин, почему пользователи Linux часто пренебрегают резервным копированием, — неудобство и сложность многих инструментов резервного копирования.
Сценарий командной оболочки может решить эту проблему! Сценарий в листинге 6.16 копирует указанный набор каталогов, инкрементально (то есть отбирая только файлы, изменившиеся после предыдущего резервного копирования) или целиком (копируя все файлы). В процессе производится сжатие, чтобы уменьшить потребление дискового пространства, и вывод сценария можно направить в файл, на ленточный накопитель, на смонтированный удаленный раздел NFS, в облачное хранилище (как будет показано далее в книге) и даже на DVD.
Код
Листинг 6.16. Сценарий backup
#!/bin/bash
# backup — Создает полную или инкрементальную резервную копию набора
#·· каталогов в системе. По умолчанию выходной файл сжимается
#·· и сохраняется в /tmp, в файле с именем, содержащим время создания копии.
#·· При желании можно указать устройство для вывода (другой диск, съемное
#·· устройство хранения или что-то другое по вашему выбору).
compress="bzip2" # Измените, если предпочитаете другую программу сжатия.
inclist="/tmp/backup.inclist.$(date +%d%m%y)"
output="/tmp/backup.$(date +%d%m%y). bz2"
tsfile="$HOME/.backup.timestamp"
btype="incremental" # По умолчанию выполняется инкрементальное копирование.
noinc=0············ # Обновлять файл с отметкой времени.