PDA

Показать полную графическую версию : Резервное копирование базы данных


Non-Stop
01-12-2006, 15:20
Задача:
Осуществить автоматическое резервное копирование базы данных

Ситуация:
Создал скрипт

#! /bin/sh

fl='date "+%m-%Y"'
cd /usr/local/
/usr/bin/mysqldump -Q --password=111111 -u bill bill > ${fl}.sql
tar -cfz ${fl}.tar.gz ${fl}.sql
rm -f ${fl}.sql
chmod 400 ${fl}.tar.gz

При запуске скрипта выдаёт ошибки:
tar: date: Cannot stat: No such file or directory
tar: "+%m-%Y".tar.gz: Cannot stat: No such file or directory
tar: date: Cannot stat: No such file or directory
tar: "+%m-%Y".sql: Cannot stat: No such file or directory
tar: Выход, отложенный по результатам предыдущих ошибок
chmod: невозможно получить доступ к `date': No such file or directory
chmod: невозможно получить доступ к `"+%m-%Y".tar.gz': No such file or directory

но бекап всётаки создаёт с именем
/usr/local/date "+%m-Y".sql

Поправьте пожалуйста мой скрипт, где ошибка?

must die
01-12-2006, 15:58
Non-Stop

Попробуй так :)
tar cfz ${fl}.tar.gz ${fl}.sql

Non-Stop
01-12-2006, 16:05
Попробуй так
tar cfz ${fl}.tar.gz ${fl}.sql
так тоже не помогло

помоему дело в дате...
он поидее должен сохранять файл число месяц год .sql
а он сохраняет файл базы date "+%m-Y".sql

must die
01-12-2006, 16:22
Non-Stop

Вот вам пример:


1 #! /bin/sh
2
3 name=`/bin/date "+%m-%Y"`
5 ls -l > ${name}
6 tar cfz ${name}.tar.gz ${name}

Non-Stop
01-12-2006, 16:38
#! /bin/sh

name='/bin/date "+%m-%Y"'
cd /usr/local/nodeny
/usr/bin/mysqldump -Q --password=55555 -u bill bill > ${fl}.sql
ls -l > ${name}
tar -cfz ${name}.tar.gz ${name}


tar: Removing leading `/' from member names
tar: /bin/date: Cannot stat: No such file or directory
tar: "+%m-%Y".tar.gz: Cannot stat: No such file or directory
tar: /bin/date: Cannot stat: No such file or directory
tar: "+%m-%Y".sql: Cannot stat: No such file or directory
tar: Выход, отложенный по результатам предыдущих ошибок

Borodunter
01-12-2006, 16:43
Non-Stop
может ты одинарные кавычки перепутал и написал ' (русская Э) вместо `(русская Ё)?

must die
01-12-2006, 16:49
Borodunter
Не может, а так и есть :)


Non-Stop
Сравни код который ты запостил и мой пример.

Non-Stop
01-12-2006, 18:31
#! /bin/sh

name=`/bin/date "+%m-%Y"`
cd /usr/local/nodeny
/usr/bin/mysqldump -Q --password=55555 -u bill bill > ${fl}.sql
ls -l > ${name}
tar -cfz ${name}.tar.gz ${name}


действительно прерпутал кавычки, но ошибку всёже выдаёт

./base_sql: line 1: date: command not found
./base_sql: line 6: ${name}: ambiguous redirect
tar: .tar.gz: Cannot stat: No such file or directory
tar: Выход, отложенный по результатам предыдущих ошибок

Сron на мыло шлёт
/usr/sbin/logcheck: line 1: date: command not found

ruslandh
02-12-2006, 11:02
Non-Stop
1 Как я понял вы пытаетесь запустить этот скрипт из crontab, но не учитываете, что crontab не имеет окружения ($PATH), так, что надо для всех команд прописывать полный путь. (date поправили, а у tar и ls путь не указан).
2 Прежде, чем использовать скрипт убедитесь все-ли пути прописаны у вас правильно (например date может находится и в /usr/bin/date - откуда я могу знать ваш дистрибутив и как вы его устанавливали ? )
3 Пропишите явно /bin/bash, а то непонятно что вызывает sh.




© OSzone.net 2001-2012