【发布时间】:2013-09-01 03:27:19
【问题描述】:
我正在尝试在 bash 中创建一个备份脚本,以 tar 文件夹的内容并将生成的文件移动到某处,但我真的不知道该怎么做。
#!/bin/bash
name="$date +"%y-%m-%d""
tar -zcvf $name code
但结果是文件只是命名为+%y-%m-%d。如何更改脚本以按预期的日期命名文件?
预期输出:2013-08-29.tar
【问题讨论】:
标签: bash
我正在尝试在 bash 中创建一个备份脚本,以 tar 文件夹的内容并将生成的文件移动到某处,但我真的不知道该怎么做。
#!/bin/bash
name="$date +"%y-%m-%d""
tar -zcvf $name code
但结果是文件只是命名为+%y-%m-%d。如何更改脚本以按预期的日期命名文件?
预期输出:2013-08-29.tar
【问题讨论】:
标签: bash
[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:~]#
【讨论】:
像这样:
name=$(date '+%Y-%m-%d')
tar -zcvf "$name.tar.gz" code
甚至在一行中:
tar -zcvf "$(date '+%Y-%m-%d').tar.gz" code
如果你想要 .tar 而不是 .tar.gz,请删除 -z 标志。
如果您只需要一年的 2 位数字,请使用 %y 而不是 %Y(17 而不是 2017)。
$() 用于command substitution。
【讨论】:
tar -zcf "yourzipname_$(date '+%Y-%m-%d_%H-%M-%S%z(%Z)').tar.gz" your_source_folder 将创建包含 24 小时格式的 zip,例如 yourzipname_2021-01-25_21-29-14+0000(UTC).tar.gz
在 BSD 系统上,您可能需要像这样使用它:
/usr/bin/tar -czvf /home/user/backup-`(date +%y-%m-%d)`.tar.gz /some/file.txt
【讨论】:
tar -zcvf "$(date '+%F').tar.gz" code-path
将产生完整的日期;与%Y-%m-%d 相同。 (见man date,后跟/)搜索和%F。
例如会生成:
2015-07-21.tar.gz
如果code-path 是一个目录,它将压缩并归档其中的所有文件。
【讨论】: