Включить текущую временную метку в имя файла?

Включить текущую временную метку в имя файла?

Мне приходится вручную создавать множество резервных копий БД 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

для достижения того же результата.

Связанный контент