Ответы пользователя по тегу PHP
  • Как лучше организовать удаленный бэкап Linux сервера на удаленный FTP?

    @niocncn Автор вопроса
    Хотелось бы, чтобы был некий вэб-интерфейс. В форму вводишь данные, PHP скрипт сохраняет данные нового сервера в какой то фалик что ли... Думаю, добавить скрипт в cron, а в него подставлять данные сервера. Только, как это лучше сделать? Вот нашел скриптик, который почти полностью удовлетворяет моим требованиям.
    #!/bin/sh
    
    # задаем переменную DATE. Она будет содержать текущую дату.
    
    DATE=`date +%Y-%m-%d_%H-%M-%S`
    
    # задаем переменную содержащую путь к каталогу с бэкапами.
    
    DIR=/home/backups/
    
    # переходим в каталог, где должны храниться бэкапы.
    
    cd $DIR 
    
    # создаем дамп всей базы данных MySQL под пользователем root и сжимаем дамп.
    
    mysqldump -uroot -hlocalhost -p'Пароль рута к БД' -A | gzip -c > mysql_all_db_$DATE.gz
    
    # создаем tar сжатый контейнер. Т.е. архивируем каталог www. В каталоге www хранятся все мои сайты.
    
    tar -czf home_$DATE.tar.gz -P /home/www
    
    # дополнительный параметр -P заперщает архиватору отбрасывать корневой '/'.
    
    # Аналогичным образом архивируем конфигурационные файлы системы, необходимые для быстрого развертывания
    # сервера из бэкапа. 
    # каталог httpd, nginx и т.д. Все файлы будут добавлены в архив с сохранением путей.
    
    tar -czf configs_$DATE.tar.gz -P /etc/openvpn /etc/httpd /etc/nginx /etc/my.cnf /etc/php.ini /etc/logrotate.conf /etc/sysconfig/iptables /etc/sysconfig/clock  /var/spool/cron
    
    # Копируем наши файлы архивов на удаленный сервер с применением
    # <a href="/articles/users/generacziya-klyuchej-dlya-besparolnogo-vxoda.html"><strong>авторизации по ключу</strong></a>.
    # Ключ -i говорит программе scp о том, что для идентификации используется файл "for_scp",
    # который я <a href="/articles/users/generacziya-klyuchej-dlya-besparolnogo-vxoda.html">генерировал</a> ранее.
    
    scp -B -i /root/.ssh/for_scp /home/backups/mysql_all_db_$DATE.gz user@server.ru:~/backups_linux26.ru
    scp -B -i /root/.ssh/for_scp /home/backups/configs_$DATE.tar.gz user@server.ru:~/backups_linux26.ru
    scp -B -i /root/.ssh/for_scp /home/backups/home_$DATE.tar.gz user@server.ru:~/backups_linux26.ru
    
    # удаляем 2 дневные копии архивов
    
    find /home/backups/ -name "*.gz" -mtime 2 -exec rm -f {} \;
    
    
    # инициализируем переменную freemaemory, задав ей значение процентного использования жесткого диска
    
    freemaemory="$(df -h | grep "5.7" | awk '{ print $4 }')";
    
    # grep "5.7" - фильтрую вывод по размеру своего жесткого диска.
    # У Вас будет другое значение. Узнать размер жесткого диска можно командой df -h
    
    
    # Ну и для информирования я отправляю сообщение себе на почту письмо с сообщением, о том, что натворил.
    # Ключ -e позволяет echo использовать спец теги, такие как \n (перенос строки) в данном примере.
    
    
    
    echo -e "Создание резервной копии сервера linux26.ru успешно завершено "`date`"\n\nСозданы следующие архивы:\nmysql_all_db_"$DATE".gz - Дамп базы данных\nhome_"$DATE".tar.gz - Архив web директории\nconfigs_"$DATE".tar.gz - Архив основных конфигурационных файлов системы.\n\nАрхивы отправлены на удаленный сервер.\n\n2-дневные архивы удалены.\n\nЗанято "$freemaemory" дискового пространства" | mail -s "Backup on linux26.ru complate" mail@domain.com


    Взято с linux26.ru

    Только здесь для одного сервера, а мне нужно сохранять данные нескольких.
    Ответ написан
    4 комментария