2015-06-04 18 views
1

如何创建一个cronjob,每6pm创建一次/ etc/passwd的备份。Shell脚本每隔6pm备份/ etc/passwd

这应该是输出:

passwd_<date>.tar.gz 

我在Shell脚本是新的,试图弄明白。我读了关于cron和crontab,但是,我不知道如何使用shell脚本创建备份..有人可以帮助我..例子非常感谢。提前致谢。

+0

您可能还需要备份'shadow'用'passwd'一起,可能还有相应的'db'文件(如果您有配置在'nsswitch.conf' )。 – lcd047

回答

0

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

crontab -e 

中的cronjob的规格是:

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

以下组的作业在6:00运行日常PM

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

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

passwd_Sun_May__3_13_13_00_CDT_2015.tar.gz 
1

可能是作为crontab条目简单:

下有人能够写入/etc(如根)的权限运行。

在早上6点,每天晚上,这叫gzip使用/etc/passwd作为输入和输出发送到格式的文件:

/etc/passwd_YYYY-MM-DD.gz 

如果你有date一个变体不具有-I ISO输出标志,则可以使用稍微更详细的date +\%Y-\%m-\%d,但请记住\%转义仅在crontab文件中需要。

There's no real由于您只是将一个文件放在那里,因此需要创建tar.gz文件。其实,老实说,我会质疑是否需要压缩它,因为它不可能很大。例如,我的密码文件从2282字节压缩到873字节,但即使在未压缩的大小下,我也可以很高兴地满足数万年的备份需求 - 每个世纪约为83M。

如果你感到快乐,只是副本文件,你可以使用类似:

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

至少在GNU系统上,考虑使用'date -I'来获得更多的标准输出%) – GreyCat

0

编辑的crontab用crontab -e命令 加入这一行: 0 5 * * * CP /等/ passwd文件/ etc/passwd文件_ $(日期+%A_%D_%Y-%H:%M:%S)

0

要使用特定的crontab条目是:

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

这说每天18:00(6pm)运行命令创建一个包含/ 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文件。最简单的(假设你知道如何使用默认的“六”编辑器)是通过键入

crontab -e 

crontab文件(空白先)在编辑器中打开并提交,当你退出编辑器与cron。