2013-08-28 54 views
27

我想在bash中创建一个备份脚本,以tar文件夹的内容并将结果文件移动到某处,但我不知道该怎么做。按当前日期创建tar文件和命名

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

但结果是该文件被命名为+%y-%m-%d。我如何更改脚本以按照预期的日期命名文件?

预期输出:2013-08-29.tar

回答

56

像这样:

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

,甚至在同一行:

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

-z如果你想.tar而不是.tar.gz标志。

如果您只想要一年的2位数(17而不是2017),请使用%y而不是%Y

$()用于command substitution

+0

为什么不能是.tar.gz输出文件? – SMTF

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

将产生完整日期;与%Y-%m-%d相同。 (见man date后跟/)搜索和%F

例如,它会产生:

2015-07-21.tar.gz 

如果code-path是一个目录,将压缩和它归档的所有文件。

0

在BSD系统,您可能需要使用这样的:

/usr/bin/tar -czvf /home/user/backup-`(date +%y-%m-%d)`.tar.gz /some/file.txt 
相关问题