Здравствуйте. Помогите, пожалуйста, правильно "составить" backup.sh для ежедневного резервного копирования. Нужно выполнять следующие команды: Код: # ищем файлы старше 2 суток и удаляем их find /backup/sql/plitla/ -mtime +2 -print -mindepth 1 -delete >/dev/null 2>&1find /backup/site/plitla/ -mtime +2 -print -mindepth 1 -delete >/dev/null 2>&1 # Создаем бекап sql mysqldump -u ПОЛЬЗОВАТЕЛЬ -pПАРОЛЬ БАЗА > ~/backup/sql/plitla/plitka-`date +%Y-%m-%d`.sql # Создаем бекап файлов tar -cjvf ~/backup/site/plitka/plitka`date +%Y-%m-%d`.tar.bz2 ./htdocs.plitka.ksk.by Спасибо.
так в чём проблема? пихаете это в sh, а потом в crontab. добавляем строку в /etc/crontab: Код: 0 0 * * * root (или пользователь ваш) /bin/sh /путь/к/backup.sh будет выполняться скрипт каждый день в 0 часов 0 минут. разве что, можно еще архивировать БД, чтобы занимало меньше места. вот так: Код: mysqldump -uuser -ppassword bdName | tar -jcvf > /куда_складывать.tar.bz2
Спасибо за ответ. Более полная настройка выглядит вот так: Код: #!/bin/bash #start backup echo "[ `date +%F--%H-%M` ]" #Deleting old copies /usr/bin/find /h/путь/ -mindepth 3 -not -mtime -2 -exec echo {} \; /usr/bin/find /h/путь/ -mindepth 3 -not -mtime -2 -exec rm {} \; echo "[ `date +%F--%H-%M` ] Old copies deleted." #MySQL dump mysqldump --user=пользователь --пароль=пароль база > /h/путь/база-`date +%F`.sql mysqldump --user=пользователь --pпароль=пароль база > /h/путь/база-`date +%F`.sql if [[ $? -gt 0 ]];then echo "[ `date +%F--%H-%M` ] Database backup failed." exit 1 fi echo "[ `date +%F--%H-%M` ] Databases backup successfull." /bin/gzip /h/путь/*.sql /bin/gzip /h/путь/*.sql #File dump tar -czpf /h/путь/имя архива-`date +%F`.tar.gz /h/путь 2> /dev/null tar -czpf /h/путь/имя архива-`date +%F`.tar.gz /h/путь 2> /dev/null if [[ $? -gt 0 ]];then echo "[ `date +%F--%H-%M` ] Copying files failed." exit 1 fi echo "[ `date +%F--%H-%M` ] Coping of files successfull." exit 0