Елементарен Bash скрипт за архивиране на данни
Здравейте habralyudi, сега ще ви кажа как можете да автоматизирате малко рутинната работа по подготовката на резервни копия.
В този случай няма да използваме мощни програми или дори цели системи за архивиране на данни, ще се ограничим до най-достъпните, които имаме. А именно – Bash скрипт.
Какво трябва да прави нашият скрипт?
Архивирайте уеб проект, а именно: — Направете резервно копие на базата данни MySQL. —Направете резервно копие на файловете. - Структурирайте го.
И така, ето нашия скрипт:
#!/bin/bash PROJNAME= #Име на проекта CHARSET= #Кодиране на база данни (utf8) DBNAME= #Име на база данни за архивиране DBFILENAME= #Име на дъмп на база данни ARFILENAME= #Име на архив с файлове HOST= #MySQL хост USER= #Потребителско име на база данни PASSWD= #Databas e парола DATADIR= #Път до директорията, където ще се съхраняват архивите SRCFILES= #Път до директорията с файлове за архивиране PREFIX=`date +%F` #Префикс за дата за структуриране на архиви
#start backup echo "[--------------------------------[`date +%F--%H-%M`]--------------------------------]" echo "[----------][`date +%F--%H-%M`] Стартирайте скрипта за архивиране. " mkdir $DATADIR/$PREFIX 2> /dev/null echo "[++--------][`date +%F--%H-%M`] Генериране на резервно копие на база данни. " #MySQL dump mysqldump --user=$USER --host=$HOST --password=$PASSWD --default-character-set=$CHARSET $DBNAME > $DATADIR/$PREFIX/$DBFILENAME-`date +%F--%H-%M`.sql ако [[ $? -gt 0 ]]; след това echo "[++--------][`date +%F--%H-%M`] Прекратено. Генерирането на резервно копие на базата данни е неуспешно." изход 1 fi echo "[++++------][`date +%F--%H-%M`] Архивиране на база данни [$DBNAME] - успешно." echo "[++++++----][`date +%F--%H-%M`] Копирайте проекта с изходния код [$PROJNAME]. " #Src dump tar -czpf $DATADIR/$PREFIX/$ARFILENAME-`date +%F--%H-%M`.tar.gz $SRCFILES 2> /dev/null ако [[ $? -gt 0 ]]; след това echo "[++++++----][`date +%F--%H-%M`] Прекратено. Копирането на изходния код е неуспешно." изход 1 fi echo "[++++++++--][`date +%F--%H-%M`] Копиране на проекта с изходния код [$PROJNAME] успешно." echo "[++++++++++-][`date +%F--%H-%M`] Stat datadir space (USED): `du -h $DATADIR tail -n1`" echo "[++++++++-][`date +%F--%H-%M`] Free HDD space: `df -h /hometail -n1awk ''`" `date +%F--%H-%M`] Всички операции приключиха успешно!" изход 0
Можете да стартирате по няколко начина:
- Лесно стартиране: ./backup.sh - Стартиране + регистриране: ./backup.sh tee backup.log - и можете също да го натиснете в cron: 00 20 * * 7 root sh /home/bond/backup.sh tee /home/bond/backup/backup.log След като скриптът завърши успешно, ще видим следното:
$ sudo sh backup.sh [--------------------------------[2009-02-14--12-28]--------------------------------] [----------][2009-02-14--12-28] Стартирайте скрипта за архивиране. [++--------][2009-02-14--12-28] Генериране на резервно копие на база данни. [++++------][2009-02-14--12-29] Архивиране на база данни [изображения] - успешно. [++++++----][2009-02-14--12-29] Копирайте проекта с изходния код [itmages]. [++++++++--][2009-02-14--12-29] Копирайте проекта с изходния код [itmages] - успешно. [++++++++++-][2009-02-14--12-29] Stat datadir space (USED): 1.3G /home/bond/backup [++++++++-][2009-02-14--12-29] Свободно HDD пространство: 49G [++++++++++][2009-02-14--12-29] Всички операции са завършени успешно! bond@server:
В резултат на това нашите резервни копия се добавят към директорията, която сте посочили, + резервните копия са в директории, именувани по дата.
пс благодаря на opkdx за подсказката при писане.
Hardcore conf в C++. Каним само професионалисти.