我想在bash中创建一个备份脚本,以tar文件夹的内容并将结果文件移动到某处,但我不知道该怎么做。按当前日期创建tar文件和命名
#!/bin/bash
name="$date +"%y-%m-%d""
tar -zcvf $name code
但结果是该文件被命名为+%y-%m-%d
。我如何更改脚本以按照预期的日期命名文件?
预期输出:2013-08-29.tar
我想在bash中创建一个备份脚本,以tar文件夹的内容并将结果文件移动到某处,但我不知道该怎么做。按当前日期创建tar文件和命名
#!/bin/bash
name="$date +"%y-%m-%d""
tar -zcvf $name code
但结果是该文件被命名为+%y-%m-%d
。我如何更改脚本以按照预期的日期命名文件?
预期输出:2013-08-29.tar
像这样:
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。
tar -zcvf "$(date '+%F').tar.gz" code-path
将产生完整日期;与%Y-%m-%d
相同。 (见man date
后跟/
)搜索和%F
。
例如,它会产生:
2015-07-21.tar.gz
如果code-path
是一个目录,将压缩和它归档的所有文件。
在BSD系统,您可能需要使用这样的:
/usr/bin/tar -czvf /home/user/backup-`(date +%y-%m-%d)`.tar.gz /some/file.txt
为什么不能是.tar.gz输出文件? – SMTF