【问题标题】:Shell Script to backup /etc/passwd every 6pm每下午 6 点备份 /etc/passwd 的 Shell 脚本
【发布时间】:2015-06-04 03:03:08
【问题描述】:

如何创建一个 cronjob 来为 /etc/passwd 每下午 6 点创建一个备份。

这应该是输出:

passwd_<date>.tar.gz

我是Shell Scripting 的新手,想弄清楚。我阅读了有关 cron 和 crontab 的信息,但是,我不知道如何使用 shell 脚本创建备份.. 有人可以帮助我.. 非常感谢示例。提前致谢。

【问题讨论】:

  • 您可能还想备份shadowpasswd,可能还需要备份相应的db 文件(如果您在nsswitch.conf 中配置了这些文件)。

标签: linux bash shell


【解决方案1】:

可以就像crontab 条目一样简单:

0 18 * * * gzip </etc/passwd >/etc/passwd_$(date -I).gz

在可以写信给/etc的人的权限下运行(比如root)。

在每晚 6 点,这会调用 gzip,使用 /etc/passwd 作为输入,并将输出发送到以下格式的文件:

/etc/passwd_YYYY-MM-DD.gz

如果您有一个没有-I ISO 输出标志的date 变体,您可以改用稍微详细一点的date +\%Y-\%m-\%d,记住\% 转义仅在crontab 文件。

没有真正的理由来创建tar.gz 文件,因为您只是将一个文件放入其中。

事实上,老实说,我怀疑压缩它的必要性,因为它不太可能很大。例如,我的密码文件从 2282 字节压缩到 873 字节,但即使是未压缩的大小,我也可以很高兴地满足数万年的备份需求——大约每世纪 83M。

如果您愿意复制该文件,您可以使用类似:

0 18 * * * cp /etc/passwd /etc/passwd_$(date -I)

【讨论】:

  • 至少在 GNU 系统上,考虑使用 date -I 以获得更标准的输出 %)
【解决方案2】:

使用crontab 和选项-e 直接编辑cronjob:

crontab -e

cronjob的规范是:

minute hour day month day-of-week command-line-to-execute

以下将作业设置为每天下午 6:00 运行

0 18 * * * tar -czf passwd_`date | tr ' ' '_' | tr ':' '_'`.tar.gz /etc/passwd

该命令可以是一个脚本,在这种情况下是一个简单的 tar 命令。文件名通过调用date 命令形成,将空格和冒号转换为下划线。这会创建如下文件名:

passwd_Sun_May__3_13_13_00_CDT_2015.tar.gz

【讨论】:

    【解决方案3】:

    使用 crontab -e 编辑 crontab 添加这一行: 0 5 * * * cp /etc/passwd /etc/passwd_$(日期+%a_%d_%Y-%H:%M:%S)

    【讨论】:

      【解决方案4】:

      您要使用的具体 crontab 条目是:

      0 18 * * *  tar -zcf /etc/passwd_`date "+%Y-%m-%d"`.gz  /etc/passwd
      

      这表示每天 18:00(下午 6 点)运行命令以创建包含 /etc/passwd 的压缩 tar 文件 (.tar.gz)。你没有说你想把 tar 文件放在哪里,所以这个例子把它放在 /etc 目录中。您可以简单地将第一个 /etc/ 修改为不同的目录。确保它是完整路径,因为 cron 没有当前目录的任何概念。

      文件名的日期部分由date +%Y-%m-%d 生成,它将以“2015-06-04”的形式生成日期,因此生成的文件名将是 passwd_2015-06-14.tar.gz + 登录date 命令表示根据后面的格式字符输出格式化的日期。您可以使用“man strftime”查看所有可能代码的列表,以便您可以根据自己的喜好生成日期字符串。各种格式都是可能的。例如

      date "+%e%b%Y"
      

      将生成 3Jun2015。确保不要包含空格,因为它们看起来像是 tar 命令的单独参数,而不是文件名的一部分。如果需要,使用 - 或 _ 作为分隔符。您可以通过在命令行中键入此日期命令来生成所需的格式来练习此操作。

      有多种方法可以编辑您的 crontab 文件。最简单的(假设您知道如何使用默认的“vi”编辑器)是输入

       crontab -e
      

      crontab 文件(最初为空白)在编辑器中打开并在您退出编辑器时提交给 cron。

      【讨论】:

        猜你喜欢
        • 2023-04-09
        • 1970-01-01
        • 2015-01-29
        • 2019-05-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-29
        相关资源
        最近更新 更多