Shell程序实现每天将主目录下的所有目录和文件归档 并压缩为文件mybackup.tar.gz然后让脚本开机自动运行?
发布网友
发布时间:2022-04-23 07:04
我来回答
共2个回答
热心网友
时间:2023-10-06 05:41
首先确定几个问题:
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点执行。
热心网友
时间:2023-10-06 05:42
您好,你的问题,我之前好像也遇到过,以下是我原来的解决思路和方法,希望能帮助到你,若有错误,还望见谅!这个需求分为两个部分实现:
编写归档脚本,比如你要归档/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这个脚本非常感谢您的耐心观看,如有帮助请采纳,祝生活愉快!谢谢!
追问有没有完整的编码呀