Bash备份脚本
问题描述:
我想做一个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 {} \;
答
我认为你只是缺少使用gzip线-c,尝试:
$MYSQLDUMP -u $MYSQLUSER -p$MYSQLPASS --all-databases | $GZIP -c9 > $BACKUP_DIR/$NAME.sql.gz
+0
欢迎@gbp。我同意你的分析。祝你好运。 – shellter
答
你确定你有访问权SERVER_DIR权限=“/无功/网络/虚拟主机/网站.org“,当你运行你的脚本。
答
您正在创建/backups
,但从/backup
删除旧备份。这对最终结果并不重要,但几个月后你将会用光盘。
我不确定在目录名和文件名中都有这个日期是有用的,但这显然取决于您。
SQL文件名应该有一个.gz
后缀?
使用which
将MYSQLDUMP和GZIP放入变量中几乎没有用;如果可以在PATH上找到它们,外壳也会找到它们;或者说,如果shell找不到东西,那么which
也不能。
tar是否提供任何输出? –
您是否尝试输出您定义的变量,看看他们是否正常?并使用它们的值手动运行备份命令(由值替换)? – AbiusX
,你能回应$ BACKUP_DIR/$ NAME来确定它实际上是你想要的吗? –