2011-09-02 4 views
0

Я пытаюсь создать скрипт bash для резервного копирования моего sevrer, однако он создает пустой tar-архив и пустые файлы sql, и я не знаю почему. Может ли кто-нибудь увидеть проблемы здесь?Сценарий резервного копирования Bash

#!/bin/bash 
SERVER_DIR="/var/www/vhosts/site.org" 
DATE=$(date +"%d-%m-%Y") 
BACKUP_DIR="/backups/$DATE" 
NAME="full-$DATE" 

MYSQLUSER="admin" 
MYSQLPASS="pass" 
MYSQLDUMP="$(which mysqldump)" 
GZIP="$(which gzip)" 

mkdir -p $BACKUP_DIR 
tar -zcvf $BACKUP_DIR/$NAME.tar.gz $SERVER_DIR 
$MYSQLDUMP -u $MYSQLUSER -p$MYSQLPASS --all-databases | $GZIP -9 > $BACKUP_DIR/$NAME.sql 
find /backup/ -mtime +31 -exec rm -rf {} \; 
+0

есть ли какой-либо выход? –

+0

Вы пытались вывести ваши определенные переменные, чтобы убедиться, что они в порядке? и использовать их значения для запуска команд резервного копирования вручную (заменяется значениями)? – AbiusX

+0

и можете ли вы ответить $ BACKUP_DIR/$ NAME, чтобы убедиться, что это на самом деле то, что вы хотите? –

ответ

2

Я думаю, вы просто отсутствует -c на GZIP линии, попробуйте:

$MYSQLDUMP -u $MYSQLUSER -p$MYSQLPASS --all-databases | $GZIP -c9 > $BACKUP_DIR/$NAME.sql.gz 
+0

Добро пожаловать @gbp. Я согласен с вами в анализе. Удачи. – shellter

0

Вы уверены, что у вас есть правильное разрешение на доступ к server_dir = "/ Var/WWW/виртуальных доменов/сайтов .org ", когда вы запускаете скрипт.

0

Вы создаете в /backups, но удаляли старые резервные копии с /backup. Это вряд ли имеет значение для конечного результата, но через несколько месяцев у вас закончится диск.

Я не уверен, что полезно иметь дату как в имени каталога, так и в именах файлов, но это, очевидно, зависит от вас.

Возможно, имя файла SQL должно иметь суффикс .gz?

Нельзя использовать MYSQLDUMP и GZIP в переменной с использованием which; если их можно найти в PATH, оболочка найдет их также; или, вернее, если оболочка не может найти что-то, то не может which.

Смежные вопросы