Резервное копирование Linux

Тема в разделе 'Windows', создана пользователем evgen583, 6 дек 2015.

  1. evgen583 Новичок

    Репутация:
    0
    Дано: ОС FreeBSD 6.4. Поднят веб-сервер (Apache) и СУБД (Mysql 5). Рут-права отсутствуют.

    Задача: Организовать ежедневное резервное копирование файлов сайтов и соответствующих им баз данных. Резервные копии помещать в специально созданный каталог. Также необходимо удалять неактуальные (старше 1 недели) резервные копии, в целях экономии места.

    Вопрос: Каким образом лучше это сделать? Понятно, что нужно составить sh-скрипт и скормить его cron'y, но хотелось бы детальнее...
  2. Виолина

    Репутация:
    0
  3. Sputnick Администратор

    Репутация:
    58.920

    Вы же в разделе виндовс.... откуда тут спецы по юниксам?

    Как то так:

    Бэкапить веб проект, а именно:
    — Делать резервную копию базы MySQL.
    — Делать резервную копию файлов.
    — Структурировать это

    Код:
    #!/bin/bash
    PROJNAME= #Имя проекта
    CHARSET= #Кодировка базы данных (utf8)
    DBNAME= #Имя базы данных для резервного копирования
    DBFILENAME= #Имя дампа базы данных
    ARFILENAME= #Имя архива с файлами
    HOST= #Хост MySQL
    USER= #Имя пользователя базы данных
    PASSWD= #Пароль от базы данных
    DATADIR= #Путь к каталогу где будут храниться резервные копии
    SRCFILES= #Путь к каталогу файлов для архивирования
    PREFIX=`date +%F` #Префикс по дате для структурирования резервных копий
     
    #start backup
    echo "[--------------------------------[`date +%F--%H-%M`]--------------------------------]"
    echo "[----------][`date +%F--%H-%M`] Run the backup script..."
    mkdir $DATADIR/$PREFIX 2> /dev/null
    echo "[++--------][`date +%F--%H-%M`] Generate a database backup..."
    #MySQL dump
    mysqldump --user=$USER --host=$HOST --password=$PASSWD --default-character-set=$CHARSET $DBNAME > $DATADIR/$PREFIX/$DBFILENAME-`date +%F--%H-%M`.sql
    if [[ $? -gt 0 ]];then
    echo "[++--------][`date +%F--%H-%M`] Aborted. Generate database backup failed."
    exit 1
    fi
    echo "[++++------][`date +%F--%H-%M`] Backup database [$DBNAME] - successfull."
    echo "[++++++----][`date +%F--%H-%M`] Copy the source code project [$PROJNAME]..."
    #Src dump
    tar -czpf $DATADIR/$PREFIX/$ARFILENAME-`date +%F--%H-%M`.tar.gz $SRCFILES 2> /dev/null
    if [[ $? -gt 0 ]];then
    echo "[++++++----][`date +%F--%H-%M`] Aborted. Copying the source code failed."
    exit 1
    fi
    echo "[++++++++--][`date +%F--%H-%M`] Copy the source code project [$PROJNAME] successfull."
    echo "[+++++++++-][`date +%F--%H-%M`] Stat datadir space (USED): `du -h $DATADIR | tail -n1`"
    echo "[+++++++++-][`date +%F--%H-%M`] Free HDD space: `df -h /home|tail -n1|awk '{print $4}'`"
    echo "[++++++++++][`date +%F--%H-%M`] All operations completed successfully!"
    exit 0
    Запускать можно парой способов:

    — Простой запуск: ./backup.sh
    — Запуск + запись в лог: ./backup.sh | tee backup.log
    — а еще его можно в cron запихать: 00 20 * * 7 root sh /home/bond/backup.sh | tee /home/bond/backup/backup.log
    После успешного завершения скрипта, мы увидим следующее:

    Код:
    bond@serv:~$ sudo sh backup.sh
    [--------------------------------[2009-02-14--12-28]--------------------------------]
    [----------][2009-02-14--12-28] Run the backup script...
    [++--------][2009-02-14--12-28] Generate a database backup...
    [++++------][2009-02-14--12-29] Backup database [images] - successfull.
    [++++++----][2009-02-14--12-29] Copy the source code project [itmages]...
    [++++++++--][2009-02-14--12-29] Copy the source code project [itmages] - successfull.
    [+++++++++-][2009-02-14--12-29] Stat datadir space (USED): 1,3G /home/bond/backup
    [+++++++++-][2009-02-14--12-29] Free HDD space: 49G
    [++++++++++][2009-02-14--12-29] All operations completed successfully!
    bond@serv:~$
    В итоге наши бэкапы складываются в каталог который вы указали, + резервные копии лежат в каталогах именованых по дате.

Поделиться этой страницей