项目中需要将生产环境的数据推送到中心服务器,定时5分钟将数据推送到指定服务
项目具体实例:
生产环境数据 ---- 推送 ---- 数据中心服务器
linux shell脚本实现获取路径: $(dirname $(readlink -f $0))
查看crontab的执行情况: tail -f /var/log/cron
查看crontab的执行log:vim /var/spool/mail/root
/var/spool/mail
1.vi /etc/rsyncd.scrt 默认没有 直接vi即可创建,此文件存放密码
2.同步文件 -- 将指定目录的文件或文件夹下的文件备份到中心数据服务器
--remove-source-files 文件同步成功则删除
--password-file 密码文件
soucre_file_path 文件/目录 地址
域名/IP::目录 chaorenlanqiu 中心文件目录
rsync -avzuP --remove-source-files --password-file=/etc/rsyncd.scrt soucre_file_path xxxx.xxxx.xxxx.xxx::chaorenlanqiu
3.定时5分钟自动推送文件
打开crontab配置文件
vi /etc/crontab
打开默认内容:如图1
增加我们需要的定时脚本,涂鸦部分表示执行脚本路径,当前执行的为rsync_func.sh脚本,如图2
图22 将执行的结果写入test_rsync.txt 文本
>>/text_rsync.txt 命令>> 文件将命令执行的结果附加到指定的文件中。
>/text_rsync.txt 命令> 文件将命令的执行结果送至指定的文件中。
命令>! 文件将命令的执行结果送至指定的文件中,若文件已经存在,则覆盖。
命令>& 文件将命令执行时屏幕上所产生的任何信息写入指定的文件中。
命令>>& 文件将命令执行时屏幕上所产生的任何信息附加到指定的文件中。
Linux下还有一个特殊的文件/dev/null,它就像一个无底洞,所有重定向到它的信息都会消失得无影无踪。这一点非常有用,当我们不需要回显程序的所有信息时,就可以将输出重定向到/dev/null。
命令如: >/dev/null 2>&1
4.启动cron任务,执行结果如图3
sudo /etc/init.d/cron start 启动任务
sudo /etc/init.d/cron stop 停止任务
sudo /etc/init.d/cron restart 重启任务
5.查看cron任务状态,service cron status,如图4
6.如何编写rsync_func.sh 定时脚本
创建rsync_func.sh 脚本, vi rsync_func.sh 即可创建
# /bin/bash
rsync -avzuP --remove-source-files --password-file=/etc/rsyncd.scrt soucre_file_path xxxx.xxxx.xxxx.xxx::chaorenlanqiu
7.为了保证备份数据的时候,有文件在操作,所以cron任务定时执行 我们约定同步前5分钟数据
同步数据格式为,如图5
常见问题:
此问题网友表示是网络波动,求大神帮忙解释一下?