如何创建一个cronjob,每6pm创建一次/ etc/passwd的备份。Shell脚本每隔6pm备份/ etc/passwd
这应该是输出:
passwd_<date>.tar.gz
我在Shell脚本是新的,试图弄明白。我读了关于cron和crontab,但是,我不知道如何使用shell脚本创建备份..有人可以帮助我..例子非常感谢。提前致谢。
如何创建一个cronjob,每6pm创建一次/ etc/passwd的备份。Shell脚本每隔6pm备份/ etc/passwd
这应该是输出:
passwd_<date>.tar.gz
我在Shell脚本是新的,试图弄明白。我读了关于cron和crontab,但是,我不知道如何使用shell脚本创建备份..有人可以帮助我..例子非常感谢。提前致谢。
使用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
它可能是作为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)
至少在GNU系统上,考虑使用'date -I'来获得更多的标准输出%) – GreyCat
编辑的crontab用crontab -e命令 加入这一行: 0 5 * * * CP /等/ passwd文件/ etc/passwd文件_ $(日期+%A_%D_%Y-%H:%M:%S)
要使用特定的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。
您可能还需要备份'shadow'用'passwd'一起,可能还有相应的'db'文件(如果您有配置在'nsswitch.conf' )。 – lcd047