はじめに
mysql の dump 生成時に毎回ファイルの生成日時を手でファイル名に加えていましたが、どうにかならんものかと思って調べてみたらすでに先人からすばらしいヒントが残されておりました。Linux ではバッククオートされた文字列はコマンドとして解釈されるそうです。
参考:
Linuxのシェルやコマンドにおけるバッククォートの使い方 | UX MILK
シングルクォートは囲った中身を文字列として主力するのに対して、バッククォートは囲った中身をコマンドとして実行しその結果を出力します。
つまり
こういうことが可能です。
bash
# ファイル生成
$ touch my_text_`date "+%Y_%m_%d_%H_%M_%S"`.txt
# 確認
$ ls
my_text_2019_07_25_23_04_22.txt
$(...)版(これでもOK)
$ touch my_text_$(date "+%Y_%m_%d_%H_%M_%S").txt
date "+%Y_%m_%d_%H_%M_%S"
で取得した日付時刻の文字列をそのままファイル名に使うことができています。これと同じことを mysql の dump 実行時に出力するファイル名に指定すれば、ファイル名にコマンド実行時の日付時刻を含めることが可能ということです。
使用例(※mysqldumpコマンドの細かいオプションは省略)
mysqldump -uxxxxxx -pxxxxxx --databases some_db_name > /path/to/my_dump_`date "+%Y%m%d_%H%M%S"`.dump
こんなかんじですね。やったぜ!
ちなみに
なお、個人的には $(...)
のほうがバッククオートよりもコマンドを実行している感があってわかりやすいとおもいました。(あくまで個人の感想です)