私は毎日ファイルとデータベースをバックアップするための非常に単純なスクリプトを書いています。これは私のスクリプトです。
mongodump --db DB
name=$( date +%F_%H_%M_%S )
tar zvcf /backup/$name-DB-db.tar.gz dump/
rm -rf dump
name=$( date +%F_%H_%M_%S )
tar zvcf /backup/$name-FILES-files.tar.gz /home/NAME/
tar.gz
毎日2つのファイルを作成し、1週間後に14のtar.gzファイルを作成します。
私が望むのは、次のような出力を想定することですls -lh
。
2021-06-19_16_02_00-FILES-db.tar.gz
2021-06-19_17_02_00-FILES-db.tar.gz
2021-06-19_16_02_00-FILES-files.tar.gz
2021-06-19_17_02_00-FILES-files.tar.gz
2021-06-19_16_02_05-DB-db.tar.gz
2021-06-19_17_02_05-DB-db.tar.gz
2021-06-19_16_02_08-DB-files.tar.gz
2021-06-19_17_02_08-DB-files.tar.gz
私が望むもの:
Check if more than file {*FILES-db.tar.gz} exists, then remove the old ones and keep the last one. Else, skip.
Check if more than file {*DB-db.tar.gz} exists, then remove the old ones and keep the last one. Else, skip.
結果ls -lh
は次のようになります。
2021-06-19_17_02_00-FILES-db.tar.gz
2021-06-19_17_02_00-FILES-files.tar.gz
2021-06-19_17_02_05-DB-db.tar.gz
2021-06-19_17_02_08-DB-files.tar.gz
Bashスクリプトでどの機能やコマンドを使用する必要がありますか?
この機能は、バックアップが完了した後にbashスクリプトの最後に使用するのが最善だと思いますが、より良い方法や解決策がある場合は聞きたいです。
アップデート1
/etc/logrotate.d/NAME-files
:
/backup/*NAME-files.tar.gz {
daily
missingok
rotate 1
notifempty
}