我正在尝试在bash中创建一个备份脚本,以tar文件夹的内容并将生成的文件移动到某处,但我真的不知道该怎么做。
#!/bin/bash
name="$date +"%y-%m-%d""
tar -zcvf $name code
但结果是该文件名为+%y-%m-%d
。如何更改脚本以按预期的日期命名文件?
预期输出:2013-08-29.tar
答案 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:~]#