Основной файл конфигурации cron, /etc/crontab, содержит следующие строки:

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly

Первые четыре строки — это переменные, настраивающие среду окружения, в котором будут работать задачи cron. Значение переменной SHELL сообщает системе о том, какую оболочку использовать (в этом примере будет использована оболочка bash), а переменная PATH определяет пути, используемые для выполнения команд. Результат выполнения задач cron будет выслан по электронной почте пользователю, определённому в переменной MAILTO. Если в качестве значения переменной MAILTO задана пустая строка (MAILTO=""), электронные письма отправляться не будут. Переменная HOME задаёт домашний каталог, используемый при выполнения команд или сценариев.

Каждая строка в файле /etc/crontab имеет следующий формат:

minute   hour   day   month   dayofweek   command
  • minute — любое целое число от 0 до 59
  • hour — любое целое от 0 до 23
  • day — любое целое от 1 до 31 (день должен быть корректным, если указан месяц)
  • month — любое целое от 1 до 12 (или короткое название месяца, например: jan, feb и так далее)
  • dayofweek — любое целое от 0 до 7, где 0 или 7 означает Воскресенье (или короткое название дня недели, например: sun, mon и так далее)
  • command — команда, которая должны быть выполнена. Командой может быть как простая команда, например, ls /proc >> /tmp/proc, или команда запуска написанного вами специального сценария.

Для любых указанных выше параметров можно использовать звездочку (*), что означает все допустимые значения. Например, если поставить звёздочку в значении месяца, команда будет выполняться каждый месяц во время, указанное другими параметрами.

Дефис (-) между целыми числами обозначает диапазон чисел. Например, 1-4 означает целые числа 1, 2, 3 и 4.

Список значений, разделенных запятыми (,), обозначает перечень. Например, перечисление 3, 4, 6, 8 означает четыре указанных целых числа.

Косая черта (/) используется для определения шага значений. Целочисленное значение может быть пропущено в диапазоне, если после диапазона указать /<целое>. Например, значение минут 0-59/2, определяет, что будет пропущена каждая вторая минута. В качестве шага значений также может быть указана звёздочка. Например, значение месяца */3 определяет, что будет пропущен каждый третий месяц.

Любые строки, начинающиеся с символа решетки (#), являются комментариями, и не обрабатываются.

ПРИМЕРЫ

*/5 * * * * — запускать команду каждые пять минут
0 */3 * * * — запускать каждые три часа
0 12,13,14 * * * — запускать команду каждый час с 12 до 14

*/1 * * * * /usr/bin/php ~/site.ru/public_html/test.php   -   запуск каждую минуту php-скрипта test.php
0 */1 * * * /usr/bin/perl ~/site.ru/public_html/test.pl     -   запуск каждый час perl-скрипта test.pl

КОМАНДА

Необходимо задать путь до скрипта от домашнего каталога
Например: public_html/cgi-bin/script.pl
Cистема сама подставит символ ~/ (эта комбинация заменяет полный путь)
Получится: ~/public_html/cgi-bin/script.pl
Если в конце пути поставить символ & (амперсанд), то скрипт будет работать в фоновом режиме.
Установка этого символа необязательна.

1

Для отправки уведомлений, у нас будет использоваться

почтовый ящик alarm@adminunix.ru,

сервер исходящей почтыadminunix.ru

паролем: super_password

email администратора у нас будет it@adminunix.ru
В вашем случае, данные для подключения к почтовому серверу и адрес получателя, необходимо указать свои.

Настройка отправки почты с сервера:
Для начала установим пакет ssmtp:

sudo apt-get install ssmtp

Настраиваем ssmtp

Отредактируем конфигурационный файл:

sudo mcedit /etc/ssmtp/ssmtp.conf

Приведя его в к виду указанному ниже:

 # Config file for sSMTP sendmail
 #
 # The person who gets all mail for userids < 1000
 # Make this empty to disable rewriting.
 root=postmaster
#Указываем логин пользователя, для подключения к почтовому серверу
 authuser=alarm
 #Указываем пароль для подключения
 authpass=super_password
 AuthMethod=LOGIN
 # The place where the mail goes. The actual machine name is required no
 # MX records are consulted. Commonly mailhosts are named mail.domain.com
 #Адрес сервера исходящей почты
 mailhub=adminunix.ru
 rewriteDomain=adminunix.ru #принудительное указание домена в поле From
 # Where will the mail seem to come from?
 #rewriteDomain=
 # The full hostname Очень желательно, чтобы hostname совпадал с PTR записью IP адреса, с которого будем устанавливать соединение, но не обязательно. hostname=ts174-23.adminunix.ru
 # Are users allowed to set their own From: address?
 # YES - Allow the user to specify their own From: address
 # NO - Use the system generated From: address
 FromLineOverride=NO #Запрещает скриптам «решать» с какого ящика отправлять письмо.

теперь отредактируем алиасы для отправки почты:

mcedit /etc/ssmtp/revaliases

Добавим в него следующее:

root:alarm@adminunix.ru:adminunix.ru
 postmaster:alarm@adminunix.ru:adminunix.ru
#for yandex
 root:alarm@yandex.ru:smtp.yandex.ru:465
 ubuntu:alarm@yandex.ru:smtp.yandex.ru:465
 postmaster:alarm@yandex.ru:smtp.yandex.ru:465
#for gmail
 root:alarm@gmail.com:smtp.gmail.com:587
 ubuntu:alarm@gmail.com:smtp.gmail.com:587
 postmaster:alarm@gmail.com:smtp.gmail.com:587

Если необходимо отправлять почту через smtp.yandex.ru

mailhub=smtp.yandex.ru:465 #адрес и порт smtp сервера яндекса
 UseTLS=YES #Использование шифрования SSL/TLS

Если необходимо отправлять почту через smtp.gmail.com

 mailhub=smtp.gmail.com:587
 UseSTARTTLS=YES

для FreeBSD изменим почтового клиента используемого по умолчанию:

mcedit /etc/mail/mailer.conf

приведем его к следующему виду:

#sendmail/usr/libexec/sendmail/sendmail
 #send-mail/usr/libexec/sendmail/sendmail
 #mailq<>/usr/libexec/sendmail/sendmail
 #newaliases/usr/libexec/sendmail/sendmail
 #hoststat/usr/libexec/sendmail/sendmail
 #purgestat/usr/libexec/sendmail/sendmail
 sendmail/usr/local/sbin/ssmtp
 send-mail/usr/local/sbin/ssmtp
 mailq/usr/local/sbin/ssmtp
 newaliases/usr/local/sbin/ssmtp
 hoststat/usr/bin/true
 purgestat/usr/bin/true

Для проверки работы SSMTP

echo test | mail -v -s "testing ssmtp setup" it@adminunix.ru

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

#for apache
 sudo nano /etc/php5/apache2/php.ini
 #for nginx and php-fpm
 sudo nano /etc/php5/fpm/php.ini[/bash]

Найдите строку sendmail_path (она задокументирована с помощью 😉 и ниже неё вставьте:

sendmail_path = ssmtp -t

Отправка писем из скриптов bash/shell

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

#!/bin/bash
 du -sh | mail -s "disk usage report" it@adminunix.ru

Откройте новый файл, вставьте в него приведенные выше строки, сохраните и запустите. Вы получите письмо, содержащее вывод команды «du -sh».
И последняя хитрость в письмах из командной сроки — добавление вложений к письмам, отправляемым из скриптов. Предположим, вам необходимо сделать резервную копию директории с конфигурационными файлами, заархивировать ее и отправить в качестве вложения с помощью mutt:

#!/bin/bash
 tar -zcf /home/user/backup.tar.gz /home/user/files_to_backup
 echo "Archived configuration files" | mutt -a /home/user/backup.tar.gz -s "backup data" it@adminunix.ru

Команда echo в начале третьей строки добавляет текст «Archived configuration files» в тело письма.

#!/bin/bash
 df -h > /tmp/mail_report.log
 free -m >> /tmp/mail_report.log
 mail -s “disk and RAM report” it@adminunix.ru < /tmp/mail_report.log

настройка Mdadm

Отредактируем настройки mdadm

sudo nano /etc/mdadm/mdadm.conf

Находим строку MAILADDR и вписываем туда адрес получателя уведомлений:

MAILADDR it@adminunix.ru

перезапускаем Mdadm

sudo /etc/init.d/mdadm restart

Теперь нам необходимо протестировать отправку уведомлений от Mdadm, в командной строке пишем:

mdadm --monitor --scan -1 --mail=it@adminunix.ru --test

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

This is an automatically generated mail message from mdadm
running on Server_name.tld

A TestMessage event had been detected on md device /dev/md/0.

Faithfully yours, etc.

P.S. The /proc/mdstat file currently contains the following:

Personalities: [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
 md0: active raid1 sdb1[2] sda1[0]
 19529656 blocks super 1.2 [2/2] [UU]

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

This is an automatically generated mail message from mdadm
running on Server_name.tld

A FailSpare event had been detected on md device /dev/md/0.

It could be related to component device /dev/sdb1.

Faithfully yours, etc.

P.S. The /proc/mdstat file currently contains the following:

Personalities: [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
 md0: active raid1 sdb1[2](F) sda1[0]
 19529656 blocks super 1.2 [2/1] [U_]

Значит все отлично, система работает, уведомления отправляются и в случае чего, вы будете готовы все поднимать, а в нашей индустрии, быстро поднятое не считается упавшим…

Вводим следующую команду

# fdisk -l /dev/sdd

Поолучаем такой ответ:

Disk /dev/sdb: 3000.6 GB, 3000592982016 bytes
255 heads, 63 sectors/track, 364801 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Disk /dev/sdd doesn't contain a valid partition table

Следующая проблема — MBR не поддерживает диски более 2.2TB. Решение — использовать GPT (GUID Partition Table). Для этого в debian мне потребовался parted вместо привычного fdisk. Устанавливаю его и разбиваю.

sudo apt-get install parted

Запускаем parted для работы с диском /sdd:

# parted /dev/sdd

получаем:

GNU Parted 2.3
Using /dev/sdd
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted)

Записываем новую метку диска GPT:

(parted) mklabel gpt

Получаем предупреждение об изменении разметки диска и уничтожении всех данных.

Warning: The existing disk label on /dev/sdd will be destroyed and all data on this disk will be lost. Do you want to continue?
Yes/No? yes
(parted)

Далее устанавливаем размеркость в TB, и нажимает enter:

(parted) unit TB

Создаем партицию 3TB , нажимаем  enter:

(parted) mkpart primary 0 0

или

(parted) mkpart primary 0.00TB 3.00TB

или

(parted) mkpart primary 0% 100%

Посмотрим полученные партиции:

(parted) print
Model: ATA WDC WD30EFRX-68A (scsi)
Disk /dev/sdd: 3001GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Number  Start   End     Size    File system  Name     Flags
 1      1049kB  3001GB  3001GB               primary  lvm
Присваиваем разделу флаг LVM
(parted) set 1 lvm on
Для создания RAID массива необходимо присвоить метку RAID
(parted) set 1 raid on

Убедимся что раздел выровнен

 (parted) align-check
alignment type(min/opt)  [optimal]/minimal? optimal
Partition number? 1
1 aligned
Подготовис физический том для использования в LVM
pvcreate /dev/sdd1

Создадим новую группу nfs

vgcreate nfs /dev/sdd1

Создадим новый логический том nfs-121 заняв все свододное место (-l 100%FREE)

lvcreate -l 100%FREE -n nfs-121 nfs

Далее форматируем логический том в ext4

mkfs.ext4  -L nfs-121 /dev/nfs/nfs-121

 

 И уменьшаем количество зарезервированных блоков с 5% до 1% (-m 1)

tune2fs -m 1 /dev/sdd1 

После чего можем монтировать наш раздел в систему через /etc/fstab

можем добавить привычную строчку типа /dev/sdb1   /data   ext4   defaults   0 0 и все будет работать

но GPT использует UUID что позволяет жестко привязывать разделы в независимости отключены они или переименованы между собой

для определения UUID нового созданного раздела вводим команду

# blkid

или если не видите всего списка(некоторые диски могут не отображаться)

# ls -l /dev/disk/by-uuid/

находим нужный для своего /dev/sdb1

UUID=730aacc4-68de-4781-87ec-03549a5560c6       /data   ext4    defaults        0 0

и добавляем его в /etc/fstab

На самом деле задача тривиальная, займет не более 5-10 минут. Принцип настройки одинаков для всех дистрибутивов. Разница скорее всего будет только в установке NFS. Следующим постом опишу процедуру настройки Apple TimeMachine для резервного копирования в нашу новую NFS-шару.

Итак...

1. Устанавливаем NFS server

# sudo apt-get install nfs-kernel-server nfs-common portmap

устанавливаем NFS client

# sudo apt-get install nfs-common portmap

Для того, чтобы убедится что у вас все установилось и запустилось выполните:

# rpcinfo -p

В выводе должен присутствовать nfs и mountd.

2. Настраиваем NFS

Для начала необходимо определится с расположением шар на диске. У меня это внешний ЖД с точкой монтирования /var/nfs.

mkdir /var/nfs
chown nobody:nogroup /var/nfs

Необходимо отредактировать /etc/exports (свой привожу ниже, там у меня всего одна строчка, для моего макбука):

/var/nfs          macfrac (rw,no_root_squash,sync,no_subtree_check,insecure)

Разберем эту строку:

/var/nfs — путь до шары

macfrac — имя хоста, который будет иметь доступ к шаре. Если на шаге 3 будут проблемы с определением адреса хоста, то добавьте необходимую запись в /etc/hosts. Правила для этого хоста:

(rw,no_root_squash,sync,no_subtree_check,insecure)

Тут я думаю все понятно из названия опций (кстати, будет не лишним также почитать документацию и man для более точной настройки под себя)... Остановлюсь только на insecure — в моем случае не получилось сразу примонтировать шару на удаленном компе. mount сообщал «Operation not permited». Одна из причин данного сообщения — попытка подключения с неизвестного порта. Как результат — ничего не монтируется.  После указания данной опции все заработало.

3. Добавляем шару в список доступных для NFS

# sudo exportfs -a

Для проверки експорта смотрим список доступных в данный момент ФС)

# showmount -e

В принципе, шару можно считать настроенной. Как подключить шару с хоста macfrac?! Вот рабочий (у меня) пример команды mount:

# sudo mount -t nfs <IP-адрес сервера NFS>:/var/nfs /media/nfs

Performance Tuning

NFS does not need a fast processor or a lot of memory. I/O is the bottleneck, so fast disks and a fast network help. If you use IDE disks, use hdparam to tune them for optimal transfer rates. If you support multiple, simultaneous users, consider paying for SCSI disks; SCSI can schedule multiple, interleaved requests much more intelligently than IDE can.

On the software side, by far the most effective step you can take is to optimize the NFS block size. NFS transfers data in chunks. If the chunks are too small, your computers spend more time processing chunk headers than moving bits. If the chunks are too large, your computers move more bits than they need to for a given set of data. To optimize the NFS block size, measure the transfer time for various block size values. Here is a measurement of the transfer time for a 256 MB file full of zeros.

# mount files.first.com:/home /mnt -o rw,wsize=1024
# time dd if=/dev/zero of=/mnt/test bs=16k count=16k
16384+0 records in
16384+0 records out

real 0m32.207s
user 0m0.000s
sys 0m0.990s

# umount /mnt

This corresponds to a throughput of 63 Mb/s.
Try writing with block sizes of 1024, 2048, 4096, and 8192 bytes (if you use NFS v3, you can try 16384 and 32768, too) and measuring the time required for each. In order to get an idea of the uncertainly in your measurements, repeat each measurement several times. In order to defeat caching, be sure to unmount and remount between measurements.

# mount files.first.com:/home /mnt -o ro,rsize=1024
# time dd if=/mnt/test of=/dev/null bs=16k
16384+0 records in
16384+0 records out

real 0m26.772s
user 0m0.010s
sys 0m0.530s

# umount /mnt

Your optimal block sizes for both reading and writing will almost certainly exceed 1024 bytes. It may occur that, like mine, your data do not indicate a clear optimum, but instead seem to approach an asymptote as block size is increased. In this case, you should pick the lowest block size which gets you close to the asymptote, rather than the highest available block size; anecdotal evidence indicates that too large block sizes can cause problems.

Футуристические фильмы, говорящие дома... А почему бы не сделать шаг в будущее и не научить Linux разговаривать? Имея Debian Squeeze в качестве домашнего сервера, научим его проверять почту на gmail и сообщать число непрочитанных сообщений с помощью голоса на русском языке.

В этом нелегком деле нам помогут пакеты festival, speech-tools и festvox-ru:

root@localhost:~$ apt-get install festival speech-tools festival-voice festvox-ru

Проверим как оно звучит:

root@localhost:~$ echo "Привет мир" | festival --language russian --tts

Если вместо того, чтобы услышать голос, вы увидели сообщение об ошибке: «ESD: error writing — Bad file descriptor», у вас не стоит PulseAudio, который festival пытается использовать по-умолчанию. Для того, чтобы переключить его на использование alsa и избавится от этой ошибки нужно создать файл ~/.festivalrc с таким содержанием:

(Parameter.set 'Audio_Command "aplay -q -c 1 -t raw -f s16 -r $SR $FILE")
(Parameter.set 'Audio_Method 'Audio_Command)

Теперь перейдем к части с почтой. Gmail представляет удобную atom-ленту для непрочитанных сообщений, используя ее можно написать небольшой скрипт который получает число сообщений аккаунта gmail и информирует об этом с помощью голоса. У меня получился вот такой:

~/bin/check_mail.sh

#!/bin/bash
 
USER="yourname@gmail.com"
PASS="secret"
 
plural () {
    if (( $1 > 10 ))
    then
        N=$(($1 % 10))
    else
        N=$1
    fi
 
    if (( $N > 10 && $N < 20 ))
    then
        FORM="сообщений"
    else if (( $N > 1 && $N < 5 ))
    then
        FORM="сообщения"
    else if (( $N == 1 ))
    then
        FORM="сообщение"
    else
        FORM="сообщений"
    fi
    fi
    fi
 
    echo $FORM
}
 
NEW=`/usr/bin/curl -u ${USER}:${PASS} --silent "https://mail.google.com/mail/feed/atom" |
grep -c "<entry>"`
 
if (( $NEW > 0 ))
then
    if (( $NEW == 1 ))
    then
           echo "У вас одно непрочитанное сообщение электронной почты." | /usr/bin/festival
--language russian --tts
    else
           echo "У вас $NEW непрочитанных `plural $NEW` электронной почты." | /usr/bin/festival
--language russian --tts
    fi
fi
 
exit 0

Этот скрипт можно добавить в крон, он нем как рыба если непрочитанных сообщений нет, когда же они появятся, он сообщит вам об этом.

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

Рассмотрим настройку автоматического бекапа веб-сервера с помощью архиватора 7z и сервиса Dropbox в Debian/Ubuntu Linux.

Создадим непривилегированного пользователя из-под которого будет запущен клиент Dropbox.

root@localhost:~$ useradd backupus

Далее в соответсвии с официальной вики устанавливаем консольного клиента, для созданного ранее пользователя

backupus@localhost:~$ cd ~/
backupus@localhost:~$ wget -O dropbox.tar.gz http://www.dropbox.com/download/?plat=lnx.x86
backupus@localhost:~$ tar -zxof dropbox.tar.gz

Запускаем клиента

backupus@localhost:~$ ~/.dropbox-dist/dropboxd

Через несколько секунд в консоле появится ссылка для привязки данного компьютера к вашему аккаунту.

Изменяем каталог за которым следит демон Dropbox на «/backup»:

backupus@localhost:~$ cp ~/.dropbox/dropbox.db dropbox.db.backup
backupus@localhost:~$ wget http://dl.dropbox.com/u/119154/permalink/dropboxdir.py
backupus@localhost:~$ chmod +x dropboxdir.py
backupus@localhost:~$ mv ~/Dropbox /backup
backupus@localhost:~$ ./dropboxdir.py --setfolder=/backup

Добавим скрипт автозапуска /etc/init.d/dropbox

# dropbox service
DROPBOX_USERS="backupus"
 
DAEMON=.dropbox-dist/dropbox
 
start() {
    echo "Starting dropbox..."
    for dbuser in $DROPBOX_USERS; do
        HOMEDIR=`getent passwd $dbuser | cut -d: -f6`
        if [ -x $HOMEDIR/$DAEMON ]; then
            HOME="$HOMEDIR" start-stop-daemon -b -o -c $dbuser -S -u $dbuser -x $HOMEDIR/$DAEMON
        fi
    done
}
 
stop() {
    echo "Stopping dropbox..."
    for dbuser in $DROPBOX_USERS; do
        HOMEDIR=`getent passwd $dbuser | cut -d: -f6`
        if [ -x $HOMEDIR/$DAEMON ]; then
            start-stop-daemon -o -c $dbuser -K -u $dbuser -x $HOMEDIR/$DAEMON
        fi
    done
}
 
status() {
    for dbuser in $DROPBOX_USERS; do
        dbpid=`pgrep -u $dbuser dropbox`
        if [ -z $dbpid ] ; then
            echo "dropboxd for USER $dbuser: not running."
        else
            echo "dropboxd for USER $dbuser: running (pid $dbpid)"
        fi
    done
}
 
 
case "$1" in
  start)
    start
    ;;
 
  stop)
    stop
    ;;
 
  restart|reload|force-reload)
    stop
    start
    ;;
 
  status)
    status
    ;;
 
  *)
    echo "Usage: /etc/init.d/dropbox {start|stop|reload|force-reload|restart|status}"
    exit 1
 
esac
 
exit 0

Делаем исполняемым, разрешаем запуск при загрузке и запускаем:

root@localhost:~$ chmod +x /etc/init.d/dropbox
root@localhost:~$ update-rc.d dropbox defaults
root@localhost:~$ /etc/init.d/dropbox start

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

#!/bin/sh
 
DATE=`/bin/date +%Y%m%d`
BACKUP_DIR="/backup/${DATE}"
 
SZ_CMD="/usr/bin/7za"
SZ_PSW="secret"
SZ_OPT="a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=on -p${SZ_PSW}"
 
SITES="example.org site.com blog.me"
 
MYSQL_USR="backup"
MYSQL_PSW="secret"
MYSQL_DBS="mysql example_org site_com blog_me"
 
# Create Dirs
/bin/mkdir ${BACKUP_DIR}
/bin/mkdir ${BACKUP_DIR}/db
/bin/mkdir ${BACKUP_DIR}/www
 
# Installed packages
/usr/bin/dpkg --list | $SZ_CMD $SZ_OPT -si ${BACKUP_DIR}/dpkg.list.7z
 
# Configs
$SZ_CMD $SZ_OPT ${BACKUP_DIR}/etc.7z /etc/
 
# Crontabs
$SZ_CMD $SZ_OPT ${BACKUP_DIR}/crontabs.7z /var/spool/cron/crontabs/
 
# Sites
for SITE in $SITES; do
    $SZ_CMD $SZ_OPT ${BACKUP_DIR}/www/${SITE}.7z /srv/www/${SITE}/
done
 
# MySQL
for DB in $MYSQL_DBS; do
    /usr/bin/mysqldump --opt -u $MYSQL_USR -p${MYSQL_PSW} $DB | $SZ_CMD
    $SZ_OPT -si ${BACKUP_DIR}/db/${DB}.sql.7z
done

Итак, что делает это скрипт:

  • Слепок установленных пакетов
  • Резервную копию конфигов и кронтабов
  • Резервную копию сайтов example.org, site.com и blog.me
  • Резервную копию mysql баз mysql, example_org, site_com и blog_me

Архивы в данном скрипте шифруются с помощью пароля $SZ_PSW, так как доверять никому не стоит