如何创建一个每隔6点为/ etc / passwd创建一个备份的cronjob。
这应该是输出:
passwd_<date>.tar.gz
我是Shell Scripting的新手,试图解决这个问题。我读到了关于cron和crontab,但是,我无法想象如何使用shell脚本创建备份..有人可以帮助我..例子非常感谢。提前谢谢。
答案 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