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

通常の「backuplocation」の代わりにbackup $(date)を追加するようにスクリプトを変更できます(最初にbackuplocationという名前のフォルダを1回だけ作成します)。

tar -czf backuplocation/backup-$(date).tar.gz backup$(date)
mv backup-$(date).tar.gz backuplocation/
rm -rf backup$(date)

関連情報