作者:逝水无痕-- | 来源:互联网 | 2023-08-22 20:48
要求编写备份服务,每隔2个小时,将 /home/user/local/data 文件夹的数据拷贝到 /home/user/backup 下面,并且将备份时间和文件名称列表写入到 /home/user/list 文件。
以上的‘user’ 就是系统对应的用户名,本文用的是‘levant’
一、创建相对应的文件夹
先 sudo su 一下
在、/local/data 下新建几个文件,比如我建的是这几个
建立backup文件夹用来备份
建立list记录备份时间和文件名称
二、开始写shell脚本
注意:要使用绝对路径
cp -r /home/levant/local/data/* /home/levant/backup
echo `date '+%Y-%m-%d %H:%M:%S'`>>/home/levant/list
function get_dir(){
for ele in `ls $1`
do
file=$1"/"$ele
if [ -d $file ]
then
get_dir $file
else
echo $file>>$output_file
fi
done
}
input_dir="/home/levant/local/data"
output_file="/home/levant/list"
get_dir $input_dir
三、使用crontab进行定时备份操作
1、安装(我用的是ubuntu,centOS的会有不同,请百度)
安装:apt-get install cron
启动:service cron start
重启:service cron restart
停止:service cron stop
检查状态:service cron status
查询cron可用的命令:service cron
检查Cronta工具是否安装:crontab -l
2、启动crontab后开始编写
crontab -e
选择 vim 编译器
* * * * * /home/levant/local/backup.sh >> /home/levant/local/a.log 2>&1 &
前面五个星号是时间的设置,为了方便调试,我这里设置的是每分钟备份一次,其他时间请自己百度一下
注意,一定要使用绝对路径。
另外,>>后边的 /home/levant/local/a.log 是存日志的文件,执行后crontab会自动建立,2>&1 & 是指正确的错误的都打印在日志上。
四、查看结果
你可以使用 service cron restart去重启一下crontab,这样就可以马上运行,不然可能要等两三分钟才能运行。
回到 /levant 目录下,cat 一下list
这里已经显示是每分钟备份一次了
去backup文件夹下看看有没有文件
文件已备份成功
五、总结
问题一般出现在shell脚本的编写和编写crontab的作业上,前者请仔细阅读我在脚本里的注释,最重要的就是涉及目录的要使用绝对路径。