Скрипт для бекапа сервера 2

Мар 27

Первая часть была тут .
Усовершенствованный скрипт для бекапа. Добавлено разделение по базам данных.

#!/bin/sh
BACKUPDATE=`date +%Y-%m-%d`;
REMOTESERVER=11.22.33.44
HOSTNAME=`hostname`
BACKUPDIR=/backup/${HOSTNAME}_${BACKUPDATE}

mkdir -p ${BACKUPDIR}
for i in `mysql -u user -ppass -e’show databases;’ | grep -v information_schema | grep -v Database`; do mysqldump –default-character-set=koi8r -u user -ppass $i | gzip -9 > /root/mysql/$i-`date +%Y-%m-%d`.gz.sql;done
tar -czf ${BACKUPDIR}/mysql-`date +%Y-%m-%d`.tar.gz /root/mysql/*
tar -czf ${BACKUPDIR}/home-`date +%Y-%m-%d`.tar.gz /home/*
tar -czf ${BACKUPDIR}/apache-confs-`date +%Y-%m-%d`.tar.gz /etc/httpd/conf/*
tar -czf ${BACKUPDIR}/named-zones-`date +%Y-%m-%d`.tar.gz /var/named/*
tar -czf ${BACKUPDIR}/named-conf-`date +%Y-%m-%d`.tar.gz /etc/named.conf
scp -Cr /backup/${HOSTNAME}_${BACKUPDATE} root@${REMOTESERVER}:/backup/
rm -f /root/mysql/*

Возможно, это будет интересно…

13 Comments

Add your comment

  1. Терехов
    Мар 27 at 22:31

    Саня – маладец. Сила джедая всегда с тобой будет))

  2. Ad1ce
    Апр 29 at 02:40

    Не подскажешь я хочу сделать такую вещь. Бэкап базы данных. Имя бэкапа – текущая дата – время. С этим я разберусь, но хочу сделать еще и скрипт, который восстанавливал бы последний имеющийся бекап. Как в скрипте взять последний созданный файл и передать его имя в переменную?

  3. Alex Volkov
    Апр 29 at 11:24

    По коду щас точно не скажу, алгоритм примерно такой:
    получить список файлов из директории с бекапами в массив $Array
    rsort($Array);
    $Array[0] = последний дамп, который ты сделал.
    exec(«mysqldump -u user -ppass dbname < $Array[0]«);
    Вот как то так.

  4. Alex Volkov
    Апр 29 at 11:25

    это под php, для линуха впринципе не суть важно на чем скрипт, на баше или на пхп

  5. Ad1ce
    Апр 29 at 13:20

    Хотелось бы все таки на баше сделать.
    Для поиска последнего созданного файла использую такую конструкцию.
    #!/bin/sh
    for i in $(ls -rt);do
    done
    echo $i

  6. Ad1ce
    Апр 29 at 13:21

    Кстати, если делать скрипт на пхп, то первая строчка как будет выглядеть? где искать исполняемый файл?

  7. Alex Volkov
    Апр 29 at 13:46

    По поводу баша – пхп из под шелла работает не медленнее.
    Для пхп надо искать где он стоит
    which php
    whereis php
    обычно она такая #!/usr/bin/php
    Прописывать не обязательно, можно запускать командой php ./script.php
    ПыСы
    Твоя конструкция на пхп под шелл
    $last_file = exec(«ls | sort –reverse»);
    Все проще чем я думал

  8. teaseo
    Янв 12 at 19:09

    сварганил свой первый бекап скрипт, который перед заливкой файлов на фтп – кодирует их
     
    сильно не казните … знаю что чуток корявый вышел…..

  9. Alex Volkov
    Янв 12 at 22:27

    teaseo, ну норм, че ))
    С удалением файлов не стал поэму писать в одну строку, через баш сделал ))
    Ну и самое основное – а где бекап то? )) Сейчас там только закодировать гзип и залить на фтп ))

  10. teaseo
    Янв 13 at 10:36

    я использую virtualmin.com , бекы он делает, но кодировать не умеет и вот так я ему помог тоесть твой скрипт можно вмести с эти соединить, кому надо будет,  а вот из минусов то что
    curl -v -T «$myfile».out ftp://login:«FTppassThere»@ftpserveraddres.com/${BACKUPDATE}/»$myfile» -Q «MKD ${BACKUPDATE}»;
    curl -v -T «$myfile».out ftp://login:«FTppassThere»@ftpserveraddres.com/${BACKUPDATE}/»$myfile» ;

    тоесть логика та что
    1)залить в папку, создать её
    2)залить в папку, (не создавать)
    тоесть если это первый раз то папка создаётся и заливается а второй бекап уже при 1 вызовет ошибку так как папка создана,
    а зато успешно будет заливатся 2-й коммандой

  11. Alex Volkov
    Янв 13 at 11:43

    Попробуй через scp сделать, он вроде создает папки при их отсутствии.

  12. teaseo
    Янв 13 at 11:53

    хех scp  не всем дают ..,
    кстатит  как ты добавил к вордпресу .html (в урле)?
     

  13. Alex Volkov
    Янв 13 at 13:05

    хех scp не всем дают

    наверно если шелл есть, то и scp есть

    кстатит как ты добавил к вордпресу .html (в урле)?

    wp-admin/options-permalink.php–>
    Произвольно–>
    /%postname%.html или что душе угодно ставишь

Post a comment