Bash备份脚本

时间:2011-09-02 00:28:11

标签: bash backup

我正在尝试制作一个bash脚本来备份我的sevrer,但是它创建了空的tar存档和空的sql文件,我不知道为什么。谁能在这里看到问题?

#!/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 {} \;

3 个答案:

答案 0 :(得分:2)

我认为你在gzip线上缺少一个-c,试试:

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

答案 1 :(得分:0)

当您运行脚本时,您确定您有权访问SERVER_DIR =“/ var / www / vhosts / site.org”。

答案 2 :(得分:0)

您正在/backups创建,但从/backup删除旧备份。这对最终结果来说几乎不重要,但几个月后你就会用完磁盘。

我不确定在目录名和文件名中都有日期是有用的,但这显然取决于你。

SQL文件名应该带有.gz后缀?

使用which将MYSQLDUMP和GZIP放入变量中几乎没有用处;如果它们可以在PATH上找到,那么shell也会找到它们;或者更确切地说,如果shell无法找到某些内容,则which也不能。