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)