Архив с датой в имени файла

Давно искал нечто подобное. Как ни мощна утилита date, но запомнить необходимые ключи для превращения даты в строку вида «2010-11-17» довольно затруднительно. Во-первых, вместо привычного знака ключа в виде минуса нужно помнить, что при форматировании используются знаки "+" и "%". Во-вторых, логику в форматах обнаружить довольно сложно:

$ date +%F
2010-11-17


$ date +%Y-%m-%d
2010-11-17


Т.е. нужно держать в голове, что Y должно быть заглавное, а m — месяцы, а не минуты (минуты — M). А еще месяцы могут обозначаться как %b, %B. К тому же в некоторых языках программирования нумерация месяцев начинается с 0 и это тоже требует некоторых мозговых усилий. Т.е. каждый раз при формировании строки начинаются «пробы и ошибки», заканчивающиеся чтением man'а и тихими матюгами.

Оказывается, всё гораздо проще:

$ date --iso
2010-11-17


ISO — система международных стандартов, в которой, помимо всего прочего, описывается как формировать строку для обозначения даты. Именно такие строки-даты используются, например в SQL. Они правильно сортируются, свободны от проблемы 2000, понятны для восприятия (от большего, т.е. года, к меньшему, т.е. дню месяца).

А создать архив, содержащий в имени файла дату своего создания, можно так:

tar cfz backup-$(date --iso).tar.gz somedirs


или так

tar cfz backup-`date --iso`.tgz somedirs
  • +8
  • 18 ноября 2010, 02:36
  • yababay

Комментарии (1)

RSS свернуть / развернуть
+
0
Знакомая тема. К чести Мелкософта в ВизуалБасике это очень просто.
Я так вел архивы действий операторов системы управления.
avatar

Markony

  • 18 ноября 2010, 17:23

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.