Создание 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