Создание tar файла и именование по текущей дате

Я пытаюсь создать сценарий резервного копирования в bash, чтобы сохранить содержимое папки и переместить полученный файл где-нибудь, но я действительно не знаю, как это сделать.

#!/bin/bash
name="$date +"%y-%m-%d""
tar -zcvf $name code

Но в результате файл просто называется +%y-%m-%d. Как я могу изменить сценарий, чтобы назвать файл по дате, как предполагалось?

Предполагаемый результат: 2013-08-29.tar

Ответ 1

Как это:

name=$(date '+%Y-%m-%d')
tar -zcvf "$name.tar.gz" code

или даже в одной строке:

tar -zcvf "$(date '+%Y-%m-%d').tar.gz" code

Drop -z флаг, если вы хотите .tar вместо .tar.gz.

Используйте %y вместо %Y если вы хотите всего 2 цифры года (17 вместо 2017).

$() используется для подстановки команд.

Ответ 2

tar -zcvf "$(date '+%F').tar.gz" code-path

будет производить полную дату; так же, как %Y-%m-%d. (см. man date follow by /) для поиска и %F

Например, он будет генерировать:

2015-07-21.tar.gz

Если code-path - это каталог, он будет сжимать и архивировать все файлы в нем.

Ответ 3

В BSD System вам может потребоваться использовать его следующим образом:

/usr/bin/tar -czvf /home/user/backup-'(date +%y-%m-%d)'.tar.gz /some/file.txt