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

Тема в разделе "Linux", создана пользователем HooLIGUN, 22 фев 2014.

  1. HooLIGUN

    HooLIGUN

    Сообщения:
    748
    Симпатии:
    124
    Здравствуйте.
    Имеется скрипт резервного копирования папок сервера vds
    PHP:
    #!/bin/bash
    USER=root  #юзер базы данных
    PASSWORD=  #пароль
    BACKUP=/vds  #куда сохранять бэкапы
    LOG=/var/log  # директория для чистки старых логов
    OLD=30  # сколько дней хранить бэкапы (более старые будет удаляться)
    PREFIX=work  # если несколько серверов - используйте разные префиксы, чтобы не путаться
    DATE=`date '+%Y-%m-%d'`
    echo 
    "Backup database to $BACKUP"
    mkdir $BACKUP/$DATE.sql
    cd $BACKUP
    /$DATE.sql
        
    for i in `mysql -u $USER -p$PASSWORD -e'show databases;' | grep -v information_schema | grep -v Database`;
            do 
    mysqldump -u $USER -p$PASSWORD $i $DATE-$i.sql;
        
    done

    cd 
    ..
    tar -cjf $BACKUP/$DATE-sql-$PREFIX.tar.bz2 ./$DATE.sql
    rm 
    -rf ./$DATE.sql


    echo "Backup files to $BACKUP"
    tar -cjf $BACKUP/$DATE-files-$PREFIX.tar.bz2  \
        /var/
    www/ \
        /
    etc/ \
        /var/
    log/ \
        /
    root/ \
        --
    exclude=$BACKUP

    echo "Deleting old backups and logs from $BACKUP & $LOG"
    find $LOG -type f \( -name "*.gz" --name "*.1*" \) -exec rm '{}' \;
    find $BACKUP -mtime +$OLD -exec rm '{}' \;
    Но при запуске,он выдает ошибку:
    Код:
    [email protected]:~# /b.sh
    : No such file or directorysh
    Backup database to /vds
    mkdir: cannot create directory `/vds/2014-02-22\r.sql\r': File exists
    /b.sh: line 12: syntax error near unexpected token `$'\r''
    /b.sh: line 12: `    for i in `mysql -u $USER -p$PASSWORD -e'show databases;' | 'rep -v information_schema | grep -v Database`;
    
    Помогите исправить,пожалуйста
    ОС Deb7
     
  2. TolikCorp

    TolikCorp

    Сообщения:
    855
    Симпатии:
    271
    Попробуй строку 12 исправить на
    for i in `mysql -u ${USER} -p${PASSWORD} -Bse 'show databases' | grep -v information_schema | grep -v Database`;

    Добавлено через 59 секунд
    и в 10-й строке
    mkdir -p $BACKUP/$DATE.sql

    Добавлено через 4 минуты
    Кстати, лучше удалять старые файлы ДО резервирования. Иногда место рассчитано "впритык", и новые файлы не будут писаться, если не будет достаточно места на диске.
     
    Последнее редактирование: 22 фев 2014
  3. HooLIGUN

    HooLIGUN

    Сообщения:
    748
    Симпатии:
    124
    Тоже самое..
     
  4. TolikCorp

    TolikCorp

    Сообщения:
    855
    Симпатии:
    271
    попробуй это выполнить в терминале: mysql -u ${USER} -p${PASSWORD} -Bse 'show databases' | grep -v information_schema | grep -v Database
    если ок - вынеси в отдельную переменную bases=$(`mysql -u ${USER} -p${PASSWORD} -Bse 'show databases'` | grep -v information_schema | grep -v Database)
    и потом for i in ${bases}; do ...
     
  5. HooLIGUN

    HooLIGUN

    Сообщения:
    748
    Симпатии:
    124
    TolikCorp,
    PHP:
    root@vds:~# /b.sh
    No such file or directorysh
    /b.shline 9information_schemacommand not found
    Backup database to 
    /vds
    mkdir
    cannot create directory `/vds/2014-02-22\r.sql\r': File exists
    /b.sh: line 13: syntax error near unexpected token 
    `$'\r''
    '
    b.shline 13: `    for i in ${bases};
    [email protected]:~#



    Добавлено через 10 минут
    Проблема решена.
    Была не верная кодировка в Notepad++:glare:
    Установил UNIX
     
    Последнее редактирование: 22 фев 2014