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

HooLIGUN

MatchMaking CS:S / RGMIX.ru
Сообщения
1,069
Реакции
269
Здравствуйте.
Имеется скрипт резервного копирования папок сервера 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" -o -name "*.1*" \) -exec rm '{}' \;
find $BACKUP -mtime +$OLD -exec rm '{}' \;
Но при запуске,он выдает ошибку:
C-подобный:
root@vds:~# /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
 

TolikCorp

Участник
Сообщения
874
Реакции
334
Попробуй строку 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 минуты
Кстати, лучше удалять старые файлы ДО резервирования. Иногда место рассчитано "впритык", и новые файлы не будут писаться, если не будет достаточно места на диске.
 
Последнее редактирование:

HooLIGUN

MatchMaking CS:S / RGMIX.ru
Сообщения
1,069
Реакции
269
Попробуй строку 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 минуты
Кстати, лучше удалять старые файлы ДО резервирования. Иногда место рассчитано "впритык", и новые файлы не будут писаться, если не будет достаточно места на диске.
Тоже самое..
 

TolikCorp

Участник
Сообщения
874
Реакции
334
попробуй это выполнить в терминале: 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 ...
 

HooLIGUN

MatchMaking CS:S / RGMIX.ru
Сообщения
1,069
Реакции
269
TolikCorp,
PHP:
root@vds:~# /b.sh
: No such file or directorysh
/b.sh: line 9: information_schema: command 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.sh: line 13: `    for i in ${bases};
root@vds:~#

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