我正在尝试创建一个脚本来 mysqldumps 所有数据库,为每个数据库创建一个单独的 .sql 文件,并将输出合并到 backup-DATE.tar.gz 中。
我已经能够创建 .sql 备份,但由于我的知识有限,我无法克服的最后一个难题是如何将所有 .sql 文件合并到 backup-DATE.tar.gz 中。
这是我到目前为止所拥有的:
mysql -N -u user -p'password' -e 'show databases' | while read dbname; do mysqldump --add-drop-table -u user -p'password' "$dbname" > /backuplocation/"$dbname".sql; done
这将我的所有数据库单独输出到我的备份位置,即:
/backuplocation/
/db1.sql
/db2.sql
/db3.sql
是否可以使用此策略将此输出合并到 backup-DATE.tar.gz 中?
编辑以更好地解释我的目标:
我的目标是运行这个脚本并得到如下内容:
/backuplocation/
/backup-DATE.tar.gz/
/db1.sql
/db2.sql
/db3.sql
而不是这个:
/backuplocation/
/db1.sql
/db2.sql
/db3.sql
答案1
您可以修改脚本,以便添加 backup$(date) 而不是通用的“backuplocation”(并且首先创建一个名为 backuplocation 的文件夹仅一次),然后:
tar -czf backuplocation/backup-$(date).tar.gz backup$(date)
mv backup-$(date).tar.gz backuplocation/
rm -rf backup$(date)