【问题标题】:Creating tar file and naming by current date创建 tar 文件并按当前日期命名
【发布时间】: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


【解决方案1】:

[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:~]#

【讨论】:

    【解决方案2】:

    像这样:

    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 而不是 %Y17 而不是 2017)。

    $() 用于command substitution

    【讨论】:

    • 为什么不用 .tar.gz 作为输出文件?
    • 添加日期&时间&时区: 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
    【解决方案3】:

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

    /usr/bin/tar -czvf /home/user/backup-`(date +%y-%m-%d)`.tar.gz /some/file.txt
    

    【讨论】:

      【解决方案4】:
      tar -zcvf "$(date '+%F').tar.gz" code-path
      

      将产生完整的日期;与%Y-%m-%d 相同。 (见man date,后跟/)搜索和%F

      例如会生成:

      2015-07-21.tar.gz
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多