将 while 循环的输出合并到 tar 中

将 while 循环的输出合并到 tar 中

我正在尝试创建一个脚本来 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)

相关内容