Shell程序实现每天将主目录下的所有目录和文件归档 并压缩为文件mybackup.tar.gz然后让脚本开机自动运行?

发布网友

我来回答

2个回答

热心网友

首先确定几个问题:
1、主目录路径,备份文件存放路径,要么给脚本自己加上去也行
2、备份完数据后,主目录下的文件删不删,不删的话相当于每天备份全量,删除的话每天备份增量
3、备份规则是当天备份前一天的还是当天备份当天的,如果实时有数据,建议备份前一天,如果固定时间有数据,那么备份当天的即可。
#!/bin/bash
sdir=
ddir=
logfile=./backup-$(date -d "yesterday" +%Y-%m-%d).log
tar -zcvf $ddir/mybackup-$(date -d "yesterday" +%Y-%m-%d) $sdir/* --remove-files &> $logfile
脚本如上,对应三个问题的解释
1、sdir指定要备份的目录,ddir指定备份文件存放的目录
2、脚本中归档压缩命令那一行--remove-files是压缩后删除源文件的意思,对应删除主目录下的文件,如果不需要删除,去掉这个参数就行了
3、最后在需要执行的用户下执行crontab -e(里面的编辑方式和vim一样)
0 0 * * * /bin/sh /#这里是脚本所在的目录/#脚本名称
:wq保存退出,执行crontab -l能看到这个任务即可,时间的话按自己的需要根据实际情况定义,这里定义每天的0点执行。

热心网友

您好,你的问题,我之前好像也遇到过,以下是我原来的解决思路和方法,希望能帮助到你,若有错误,还望见谅!这个需求分为两个部分实现:

编写归档脚本,比如你要归档/opt 目录,那么脚本里面最核心的语句就是

tar -czvf /tmp/opt.tar.gz /opt/*

或者其它类似语句,当然你可能会涉及到其他的异常判断,比如不能再写数据的同时同步归档等等,这得根据你的实际情况来定,ok,脚本先写好

2.设置定期处理就是crontab机制啦,很简单,用命令:

crontab -e

然后在任务计划文件里面按照格式编辑一条你的脚本执行计划

* * * * * yourscript (分 小时 日 月 星期 执行命令)

0 23 * * * sh /tmp/archive.sh 2>/dev/null>&2

这一句就表示每天的晚上23点执行/tmp/archive.sh这个脚本非常感谢您的耐心观看,如有帮助请采纳,祝生活愉快!谢谢!

追问有没有完整的编码呀

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com