我正在尝试制作一个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 {} \;
答案 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
也不能。