我该如何使用mysqldump
来导出以相同前缀开头的表?
嘿嘿,这有点像是一个技巧,但它有效(使用bash):
mysqldump -u USER -p DATABASE $(mysql -u USER -p -D DATABASE -Bse "show tables like 'PREFIX%'") > /tmp/DATABASE.out
根据需要更改大写字母单词。
您可以创建backup.sh脚本:
BACKUP_DIR="/path/to/backups"
DB_HOST="domain.com"
DB_USER="user"
DB_PASS="pass"
PREFIX="phpbb"
TMP_LIST = mysql --host=$DB_HOST --user=$DB_USER --password=$DB_PASS -e "show databases;" | grep $PREFIX
# just get to database name column (may be $1, don't remember)
TMP_LIST = cat $TMP_LIST | awk '{print $2}'
# Getting dbs
mkdir $BACKUP_DIR/tmp
for db in $TMP_LIST ; do
mysqldump --host=$DB_HOST --user=$DB_USER --password=$DB_PASS --opt $db > $BACKUP_DIR/tmp/$db.sql
zip -mj $BACKUP_DIR/tmp/$db.sql.zip $BACKUP_DIR/tmp/$db.sql 2>&1
done
希望它有所帮助。
$(...)
来在子进程中运行一个子命令。你收到的错误信息看起来像是mysqldump
接收到了所有参数,甚至包括-D
,这可能是因为$(...)
没有被识别为指示一个子命令。也许你没有使用bash
?如果是这样的话,你需要将$(...)
转换成适合你的shell的正确语法。例如,你可能需要用反引号替换$(...)
。 - unutbu