Creating tar file and naming by current date

I'm trying to create a backup script in bash, to tar the contents of a folder and move the resulting file somewhere, but I don't really know how to do it.

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

But the result is that the file is just named +%y-%m-%d. How can I change the script to name the file by the date as intended?

Intended output: 2013-08-29.tar


Like this:

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

or even in one line:

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

Drop -z flag if you want .tar instead of .tar.gz.

Use %y instead of %Y if you want just 2 digits of a year (17 instead of 2017).

$() is used for command substitution.


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

will produce full date; same as %Y-%m-%d. (see man date follow by /) to search and %F.

For example, it will generate:

2015-07-21.tar.gz

If code-path is a directory it will compress and archive all the files in it.