Shell脚本每隔6点备份/ etc / passwd

时间:2015-06-04 03:03:08

标签: linux bash shell

如何创建一个每隔6点为/ etc / passwd创建一个备份的cronjob。

这应该是输出:

passwd_<date>.tar.gz

我是Shell Scripting的新手,试图解决这个问题。我读到了关于cron和crontab,但是,我无法想象如何使用shell脚本创建备份..有人可以帮助我..例子非常感谢。提前谢谢。

4 个答案:

答案 0 :(得分:1)

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

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

在能够写入/etc(如root)的人的特权下运行。

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

/etc/passwd_YYYY-MM-DD.gz

如果您的date变体没有-I ISO输出标记,则可以使用稍微更详细的date +\%Y-\%m-\%d,同时请记住{{1}仅在\%文件中需要转义。

创建crontab文件没有真正的原因,因为您只是在那里放置一个文件。

事实上,说实话,我会质疑是否需要压缩它,因为它不太可能很大。例如,我的密码文件从2282字节压缩到873,但即使是未压缩的大小,我也很乐意满足数万年的备份 - 每个世纪大约83M。

如果您很乐意复制该文件,您可以使用以下内容:

tar.gz

答案 1 :(得分:0)

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

答案 2 :(得分:0)

您要使用的特定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命令的单独参数,而不是文件名的一部分。如果需要,请使用 - 或_作为分隔符。您可以通过在命令行键入此date命令来实现此操作,以生成所需的格式。

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

 crontab -e

crontab文件(首先是空白)在编辑器中打开,并在退出编辑器时提交给cron。

答案 3 :(得分:0)

使用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