Мне приходится вручную создавать множество резервных копий БД mysqldump
, например, вот так:
mysqldump -uroot -proot my-db > my-db.sql
Мне интересно, есть ли простой способ включить текущую дату или временную метку в имя файла, чтобы файл выглядел так: my-db-20150917.sql
(или другой формат тоже подойдет, даже временная метка).
решение1
Как мне поставить отметку даты на именах файлов?
Чтобы включить текущее время/дату в имя файла, используйте комбинацию date
и подстановку команд:
mysqldump -uroot -proot my-db > my-db-`date +%Y%m%d`.sql
Theman
страница дляdate
объясняет другие варианты, которые вы можете использовать; но в этом контексте вам также может быть интересно включить время:
mysqldump -uroot -proot my-db > my-db-`date +%Y%m%d-%H%M`.sql
Подождите, что это за «подстановка команды»?
Цитата изbash hackers wiki о замене команд:
Подстановка команд расширяется до вывода команд. Эти команды выполняются в подоболочке, и их
stdout
данные — это то, во что расширяется синтаксис подстановки.
В основном, date -%Y%m%d
выводит 20150917
, и мы используем `
форму подстановки команд с обратными кавычками ( ), чтобы включить этот вывод в команду, которую вы предоставили для резервного копирования вашей базы данных. Мы могли бы также использовать:
mysqldump -uroot -proot my-db > my-db-$(date +%Y%m%d).sql
для достижения того же результата.