按当前日期创建tar文件和命名

时间:2013-08-28 21:17:15

标签: bash

我正在尝试在bash中创建一个备份脚本,以tar文件夹的内容并将生成的文件移动到某处,但我真的不知道该怎么做。

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

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

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

4 个答案:

答案 0 :(得分:71)

像这样:

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而不是%Y),请使用17代替2017

$()用于command substitution

答案 1 :(得分:5)

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

将生成完整日期;与%Y-%m-%d相同。 (请参阅man date后跟/)进行搜索,然后%F

例如,它将生成:

2015-07-21.tar.gz

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

答案 2 :(得分:0)

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

C:\Users\G-PC\Documents\setup.exe [SIZE FOR THIS]
C:\Users\G-PC\Documents\config.ini [SIZE FOR THIS]
C:\Users\G-PC\Documents\image001.jpg [SIZE FOR THIS]
C:\Users\G-PC\Documents\image002.jpg [SIZE FOR THIS]
C:\Users\G-PC\Documents\image003.jpg [SIZE FOR THIS]

答案 3 :(得分:-2)

[root@node2rhel75:~]# tar -jcf /var/log/lvm_etc_backup-(date +%F_%H-%M_%p).tar.bz2 /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:~]#