57

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

4

4 回答 4

108

像这样:

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 位数字(而不是),请使用%y而不是。%Y172017

$()用于命令替换

于 2013-08-28T21:20:15.090 回答
10
tar -zcvf "$(date '+%F').tar.gz" code-path

将产生完整的日期;一样%Y-%m-%d。(参见man date后面的/)来搜索和%F

例如,它将生成:

2015-07-21.tar.gz

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

于 2015-07-21T13:44:36.577 回答
0

在 BSD 系统上,您可能需要像这样使用它:

/usr/bin/tar -czvf /home/user/backup-`(date +%y-%m-%d)`.tar.gz /some/file.txt
于 2018-01-02T04:13:44.207 回答
-2

[root@node2rhel75:~]# tar -jcf /var/log/lvm_etc_backup-.tar.bz2 (date +%F_%H-%M_%p)/etc/lvm/; ls -lh /var/log/

tar:从成员名称中删除前导 `/'

-rw-r--r-- 1 root root 46 Jul 13 02:57 lvm_etc_backup-2021-07-13_02-57_AM.tar.bz2

[root@node2rhel75:~]#

于 2021-07-13T07:04:18.110 回答