rsync3.1.3的编译安装和常用操作
.rsync的编译安装 tar -zxf rsync-3.1..tar.gz
cd rsync-3.1.
./configure --prefix=/usr/local/rsync-3.1. --disable-ipv6 .rsync的配置文件:
[root@web3:~]# more /usr/local/rsync/etc/rsyncd.conf
uid = apache
gid = users
port =
use chroot = no
#hosts allow = 192.168.9.3
#hosts deny = 192.168.10.0/
pid file = /usr/local/rsync/rsyncd.pid
lock file = /usr/local/rsync/rsync.lock
#log file = /usr/local/rsync/logs/rsyncd.log [apache]
comment=all web
path=/
read only=no secrets file=/usr/local/rsync/etc/rsyncd.passwd
auth users=apache 密码文件:
[root@web3:~]# cat /usr/local/rsync/etc/rsyncd.passwd
apache:apachepass .rsync的启动脚本
[root@web3:~]# cat /etc/init.d/rsync
#!/bin/bash #this script for start|stop rsync daemon service
#date:// status1=$(ps -ef | egrep "rsync --daemon.*rsyncd.conf" | grep -v 'grep')
#pidfile="/etc/rsync/rsyncd.pid"
pidfile="/usr/local/rsync/rsyncd.pid"
#start_rsync="rsync --daemon --config=/etc/rsync/rsyncd.conf"
start_rsync="rsync --daemon --config=/usr/local/rsync/etc/rsyncd.conf"
function rsyncstart() { if [ "${status1}X" == "X" ];then rm -f $pidfile ${start_rsync} status2=$(ps -ef | egrep "rsync --daemon.*rsyncd.conf" | grep -v 'grep') if [ "${status2}X" != "X" ];then echo "rsync service start.......OK" fi else echo "rsync service is running !" fi
} function rsyncstop() { if [ "${status1}X" != "X" ];then kill - $(cat $pidfile) status2=$(ps -ef | egrep "rsync --daemon.*rsyncd.conf" | grep -v 'grep') if [ "${statusw2}X" == "X" ];then echo "rsync service stop.......OK"
fi
else echo "rsync service is not running !" fi
} function rsyncstatus() { if [ "${status1}X" != "X" ];then echo "rsync service is running !" else echo "rsync service is not running !" fi } function rsyncrestart() { if [ "${status1}X" == "X" ];then echo "rsync service is not running..." rsyncstart
else rsyncstop rsyncstart fi
} case $ in "start")
rsyncstart
;; "stop")
rsyncstop
;; "status")
rsyncstatus
;; "restart")
rsyncrestart
;; *)
echo
echo "Usage: $0 start|stop|restart|status"
echo
esac # 自动启动rsync服务脚本
[root@web3:~]# cat /usr/local/zabbix_agents_3.2.0/scripts/start_rsy.sh
#!/bin/bash
count_num=`ps -ef|grep 'rsync --daemon'|grep -v grep|wc -l`
echo $count_num
rm -f /usr/local/rsync/rsyncd.pid
if [ $count_num -eq ];then
/etc/init.d/rsync start
fi ###########使用rsync同步脚本的示例 # vim /usr/local/worksh/jenkins_task/rsync_cbs_chinasoft_com.sh #!/bin/bash ##############jenkins拉取git代码同步到web3上,然后触发web3上的该脚本进行 ws/eus/eop 三个机房同步####################
###### rsync cbs.chinasoft.com data ######################################
passwd="/data/www/.rsync/rsyncd.pass" # ws_cbs_ip
ws_cbs_ip_list="192.168.254.1 192.168.254.2" # eus_cbs_ip
eus_cbs_ip_list="1.1.1.1" # eop_cbs_ip
eop_cbs_ip_list="2.2.2.2" ############################################################# # 同步所有机房
function cbs_rsync_all()
{
# rsync ws_cbs
for ws_cbs_ip in $ws_cbs_ip_list
do
echo "####################rsync ws_cbs start################################"
echo $ws_cbs_ip
rsync -zavP --delete --exclude=logs/ --exclude=cache/ --password-file=$passwd /data/cbs.chinasoft.com/ apache@$ws_cbs_ip::apache/data/cbs.chinasoft.com/
# 添加如下对执行结果的判断,如果执行失败就退出程序,这样可以避免当代码要求强一致的时候,有些没有同步到也报success
if [[ $? == 0 || $? == 23 ]];then
rsync_edit=1
else
rsync_edit=0
echo "`date` rsync发布失败! -> editUrls.txt"
exit 1
fi
echo "################### rsync ws_cbs end #######################"
done # rsync eus_cbs
for eus_cbs_ip in $eus_cbs_ip_list
do
echo "####################rsync eus_cbs start################################"
echo $eus_cbs_ip
rsync -zavP --delete --exclude=logs/ --exclude=cache/ --password-file=$passwd /data/cbs.chinasoft.com/ apache@$eus_cbs_ip::apache/data/cbs.chinasoft.com/
echo "################### rsync eus_cbs end #######################"
done # rsync eop_cbs
for eop_cbs_ip in $eop_cbs_ip_list
do
echo "####################rsync eop_cbs start################################"
echo $eop_cbs_ip
rsync -zavP --delete --exclude=logs/ --exclude=cache/ --password-file=$passwd /data/cbs.chinasoft.com/ apache@$eop_cbs_ip::apache/data/cbs.chinasoft.com/
echo "################### rsync eop_cbs end #######################"
done } # 只同步网宿机房
function cbs_rsync_ws()
{
# rsync ws_cbs
for ws_cbs_ip in $ws_cbs_ip_list
do
echo "####################rsync ws_cbs start################################"
echo $ws_cbs_ip
rsync -zavP --delete --exclude=logs/ --exclude=cache/ --password-file=$passwd /data/cbs.chinasoft.com/ apache@$ws_cbs_ip::apache/data/cbs.chinasoft.com/
echo "################### rsync ws_cbs end #######################"
done
} # 只同步美西机房
function cbs_rsync_eus()
{
# rsync eus_cbs
for eus_cbs_ip in $eus_cbs_ip_list
do
echo "####################rsync eus_cbs start################################"
echo $eus_cbs_ip
rsync -zavP --delete --exclude=logs/ --exclude=cache/ --password-file=$passwd /data/cbs.chinasoft.com/ apache@$eus_cbs_ip::apache/data/cbs.chinasoft.com/
echo "################### rsync eus_cbs end #######################"
done
} # 只同步欧洲德国机房
function cbs_rsync_eop()
{
# rsync eop_cbs
for eop_cbs_ip in $eop_cbs_ip_list
do
echo "####################rsync eop_cbs start################################"
echo $eop_cbs_ip
rsync -zavP --delete --exclude=logs/ --exclude=cache/ --password-file=$passwd /data/cbs.chinasoft.com/ apache@$eop_cbs_ip::apache/data/cbs.chinasoft.com/
echo "################### rsync eop_cbs end #######################"
done
} ##################### MAIN ###############################
usage () {
echo ""
echo " Please Input server infomation!"
echo ""
echo " USAGE: `basename $0` [all|cbs_ws|cbs_eus|cbs_eop]"
echo ""
} if [ $# != ]
then
usage >&
exit
fi
OPT=$
case $OPT in
all)
echo "start rsync `basename $0` to all cbs servers"
cbs_rsync_all
;;
cbs_ws)
echo "start rsync `basename $0` to ws_cbs_servers"
cbs_rsync_ws
;;
cbs_eus)
echo "start rsync `basename $0` to eus_cbs_servers"
cbs_rsync_eus
;;
cbs_eop)
echo "start rsync `basename $0` to eop_cbs_servers"
cbs_rsync_eop
;; *)
echo "Usage:`basename $0` [all|cbs_ws|cbs_eus|cbs_eop]"
;;
esac #########脚本使用示例
./rsync_cbs_chinasoft_com.sh all # 同步所有机房
./rsync_cbs_chinasoft_com.sh cbs_eus # 同步美西机房 常用示例:
.推送本地文件目录 /data/cbs.chinasoft.com 到远程服务器的 /data/cbs.chinasoft.com/ 目录: rsync -zavP --delete --exclude=logs/ --exclude=cache/ --password-file=$passwd /data/cbs.chinasoft.com/ apache@192.168.3.10::apache/data/cbs.chinasoft.com/ .主动拉取远程服务器的目录
[root@localhost -]# cat /opt/platform/rsync_datacollection_new_wuchao.sh
#!/bin/bash
SIP="192.168.10.207" ps -ef | grep "${SIP}::apache/opt/platform/downloader/all" | grep -v grep | awk '{print $2}' | xargs kill -
ps -ef | grep "${SIP}::apache/opt/platform/datacollection/all" | grep -v grep | awk '{print $2}' | xargs kill - DATE_1="`date -d '-1 day' +%Y-%m`"
DATE0="`date -d '0 day' +%Y-%m`" for a in `seq - `
do DATE="`date -d "${a} day" +%Y-%m`"
# 拉取远程服务器 192.168.10.207 上 的 /opt_log/platform_logs/datacollection/all/ 目录到本地的 /opt/platform/datacollection/all/ 目录
/usr/bin/rsync -avrp -P --password-file=/etc/rsnyc_for_logs_by_Wanjie.scrt apache@${SIP}::apache/opt_log/platform_logs/datacollection/all/$DATE /opt/platform/datacollection/all/
/usr/bin/rsync -avrp -P --password-file=/etc/rsnyc_for_logs_by_Wanjie.scrt apache@${SIP}::apache/opt_log/platform_logs/downloader/all/$DATE /opt/platform/downloader/all/ ######################### cms_back主动拉取cms远程服务器的db数据进行备份
[root@localhost -]# cat /opt/cms_dbback.sh
#!/bin/bash
SIP="192.168.1.3" ps -ef | grep "${SIP}::apache/data/MySQL_Data_Backup" | grep -v grep | awk '{print $2}' | xargs kill - # 拉取远程服务器cms 192.168.1.3 上 的mysql数据库备份 /data/MySQL_Data_Backup 目录到本地的 /data/cmsdb_back/ 目录
/usr/local/rsync/bin/rsync -avrp -P --password-file=/opt/cmsdbback.pass apache@${SIP}::apache/data/MySQL_Data_Backup /data/cmsdb_back/
问题分析:
同步多次都不能把本地文件和远端文件保持一致
#!/bin/bash
#############################################
# uat和pro获取代码源头都是一个相同目录: /data/www/vhosts/u.chinasoft.com/httpdocs/
# uat只发布一台服务器进行验证,生产环境发布两台
chinasoft_iplist="1.1.1.1 1.1.1.2"
function chinasoft_eus_rsync()
{
for ip in $chinasoft_iplist
do
echo "-- start pub --- 预发布到外网 ${ip} ----------------------------------------"
#/usr/local/bin/rsync -vaRzP --bwlimit=1000 --exclude='.env' --exclude='runtime/' --exclude='config.py' --exclude='docs/' --password-file=/data/www/.rsync/rsyncd.pass /data/www/vhosts/u.chinasoft.com/httpdocs/ apache@$ip::apache/data/www/vhosts/u.chinasoft.com/httpdocs/
/usr/local/bin/rsync -zavP --bwlimit=1000 --exclude='.env' --exclude='runtime/' --exclude='config.py' --exclude='docs/' --password-file=/data/www/.rsync/rsyncd.pass /data/www/vhosts/u.chinasoft.com/httpdocs/ apache@$ip::apache/data/www/vhosts/u.chinasoft.com/httpdocs/
if [[ $? == 0 || $? == 23 ]];then
rsync_edit=1
else
rsync_edit=0
echo "`date` rsync发布失败! -> editUrls.txt"
exit 1
fi
echo -e "-- end pub rsync ${ip} ----------------------------------------------------------\n\n"
done
echo "-- end pub all rsync success----------------------------------------------------------"
exit 0
}
# 执行同步
chinasoft_eus_rsync
# 现象:同步后始终有文件不同,多次同步亦然
# rsync -vaRzP
更换为如下即可
rsync -vazP
限制根目录的配置示例:
[root@sz_publish01:~]# cat /usr/local/rsync/etc/rsyncd.conf
uid = apache
gid = users
port =
use chroot = no
#hosts allow = 192.168.9.3
#hosts deny = 192.168.10.0/
pid file = /usr/local/rsync/rsyncd.pid
lock file = /usr/local/rsync/rsync.lock
#log file = /usr/local/rsync/logs/rsyncd.log
reverse lookup = no [apache_project]
comment=all web
path=/data/www/vhosts/
read only=no
secrets file=/usr/local/rsync/etc/rsyncd.passwd
auth users=apache [apache]
comment=all web
path=/
read only=no
secrets file=/usr/local/rsync/etc/rsyncd.haiwai
auth users=apache # 同步示例
function mms_rsync_all()
{
# rsync huadong
for huadong_ip in $huadong_mms_web_ip_list
do
echo "####################rsync huadong start################################"
echo $huadong_ip
rsync -zavP --delete $exclude_list --password-file=$passwd /data/www/vhosts/mms_task/ apache@${huadong_ip}::apache_project/mms_task/
#调用初始化脚本
run_init_sh ${huadong_ip}
echo "################### rsync huadong end #######################"
done
}
按照模块授权,每个模块一个密码,这样可以避免因误操作删除整个根目录文件
# 新的推送规则
/usr/local/rsync/bin/rsync -zavP --password-file="/data/www/.rsync/rsyncd.szpublish" /data/www/vhosts/apiservice.chinasoft.com/httpdocs/ apache@172.18.54.140::apache_apiservice_chinasoft_com
# 注意密码文件格式
# cat /usr/local/rsync/etc/rsyncd.apiservice.chinasoft.com
apache:pass
# 一定要修改客户端和服务端密码文件权限,否则无法正常同步
# chmod 600 /usr/local/rsync/etc/rsyncd.apiservice.chinasoft.com [root@sz_publish01:/data/www/vhosts/apiservice.chinasoft.com]# more /usr/local/rsync/etc/rsyncd.conf uid = apache
gid = users
port =
use chroot = no
#hosts allow = 192.168.9.3
#hosts deny = 192.168.10.0/
pid file = /usr/local/rsync/rsyncd.pid
lock file = /usr/local/rsync/rsync.lock
log file = /usr/local/rsync/logs/rsyncd.log
reverse lookup = no # 后续拿掉
[apache_project]
comment=all web
path=/data/www/vhosts/
read only=no
secrets file=/usr/local/rsync/etc/rsyncd.passwd
auth users=apache # .购物车中文服务项目
[apache_www-api_chinasoft_com]
comment=www-api.chinasoft.com
path=/data/www/vhosts/www-api.chinasoft.com/httpdocs/
read only=no
#log file = /usr/local/rsync/logs/rsyncd_www-api.chinasoft.com.log
secrets file=/usr/local/rsync/etc/rsyncd.www-api.chinasoft.com
auth users=apache # .购物车中文服务项目
[apache_product-api_chinasoft_com]
comment=www-product-api.chinasoft.com
path=/data/www/vhosts/product-api.chinasoft.com/httpdocs/
read only=no
secrets file=/usr/local/rsync/etc/rsyncd.product-api.chinasoft.com
auth users=apache # .购物车中文服务项目
[apache_apiservice_chinasoft_com]
comment=apiservice.chinasoft.com
path=/data/www/vhosts/apiservice.chinasoft.com/httpdocs/
read only=no
secrets file=/usr/local/rsync/etc/rsyncd.apiservice.chinasoft.com
auth users=apache # .购物车中文服务项目
[apache_product-service_chinasoft_com]
comment=product-service.chinasoft.com
path=/data/www/vhosts/product-service.chinasoft.com/httpdocs/
read only=no
secrets file=/usr/local/rsync/etc/rsyncd.product-service.chinasoft.com
auth users=apache # N.此处为注释
[apache]
comment=all web
path=/
read only=no
secrets file=/usr/local/rsync/etc/rsyncd.haiwai
auth users=apache [apache@sz_publish01:/usr/local/worksh/jenkins_rsync]$ more alisz_rsync_apiservice.chinasoft.com.sh
#!/bin/bash ##############公司jenkins拉取git代码同步到 sz_publish01(1.1.1.1) 上,然后触发 sz_publish01 上的该脚本同步到web服务器####################
#. rsync apiservice.chinasoft.com
#. 初始化脚本 by pengll 2020.04. ## 定义排除的目录,线上一般排除logs文件夹
passwd="/data/www/.rsync/rsyncd.pass.apiservice.chinasoft.com" exclude_list="--exclude=logs/" # 尽量使用IP地址,多个IP用空格隔开
hnsz_ip_list="192.168.1.10 192.168.1.11" # 发布单台机器
hnsz_ip_list_web01="192.168.1.10"
hnsz_ip_list_web02="192.168.1.11" # 代码发布目录,一般为/data/www/vhosts/${project_dir}
project_dir="apiservice.chinasoft.com/httpdocs" # 同步所有机房,目前只有华南深圳一个机房
function rsync_hnsz_all()
{ for ip in ${hnsz_ip_list}
do
echo "#################### Run rsync ${ip} start ################################"
rsync -zavP --delete $exclude_list --password-file=$passwd /data/www/vhosts/${project_dir}/ apache@${ip}::apache/data/www/vhosts/${project_dir}/
echo "################### Run rsync ${ip} end #######################"
done
} # 同步华南深圳机房的第1台web机器
function rsync_hnsz_web1()
{ for ip in ${hnsz_ip_list_web01}
do
echo "#################### Run rsync ${ip} start ################################"
rsync -zavP --delete $exclude_list --password-file=$passwd /data/www/vhosts/${project_dir}/ apache@${ip}::apache/data/www/vhosts/${project_dir}/
echo "################### Run rsync ${ip} end #######################"
done
} # 同步华南深圳机房的第2台web机器
function rsync_hnsz_web2()
{ for ip in ${hnsz_ip_list_web02}
do
echo "#################### Run rsync ${ip} start ################################"
rsync -zavP --delete $exclude_list --password-file=$passwd /data/www/vhosts/${project_dir}/ apache@${ip}::apache/data/www/vhosts/${project_dir}/
echo "################### Run rsync ${ip} end #######################"
done
} ##################### MAIN ###############################
usage () {
echo ""
echo " Please Input server infomation!"
echo ""
echo " USAGE: `basename $0` [all|apiservice_web01|apiservice_web02]"
echo ""
} if [ $# != ]
then
usage >&
exit
fi
OPT=$
case $OPT in
all)
echo "start rsync ${project_dir} to ${hnsz_ip_list} servers"
rsync_hnsz_all
echo "rsync ${project_dir} to ${hnsz_ip_list} Done"
;; apiservice_web01)
echo "start rsync ${project_dir} to ${hnsz_ip_list_web01} servers"
rsync_hnsz_web1
;;
apiservice_web02)
echo "start rsync ${project_dir} to ${hnsz_ip_list_web02} servers"
rsync_hnsz_web2
;; *)
echo "Usage:`basename $0` [all|apiservice_web01|apiservice_web02]"
;;
esac
rsync3.1.3的编译安装和常用操作的更多相关文章
- 20190418 CentOS7实用技能综合:系统安装 + WinScp客户端连接 + 防火墙端口号iptables + Nginx编译安装 + MySQL编译安装 + Redis编译安装 + MongoDB编译安装 + ActiveMQ/RocketMQ/RabbitMQ编译安装 + ...各类常用生产环境软件的编译安装
系统安装 + WinScp客户端连接 + 防火墙端口号iptables + Nginx编译安装 + MySQL编译安装 + Redis编译安装 + MongoDB编译安装 + ActiveMQ/Roc ...
- Elasticsearch本地环境安装和常用操作
本篇文章首发于我的头条号Elasticsearch本地环境安装和常用操作,欢迎关注我的头条号和微信公众号"大数据技术和人工智能"(微信搜索bigdata_ai_tech)获取更多干 ...
- Nginx编译安装及常用命令
一个执着于技术的公众号 前言 前面我们已经了解Nginx基础入门知识,今天就带大家一起学习下Nginx编译安装部署 准备工作 一台linux机器(本次实验以CentOS 7.5为例) 到Nginx官方 ...
- Nginx 最新版源码编译安装 包含常用模块作用及所需依赖
第一部分 Nginx最新版源码编译安装 1. 使用的模块 模块1:http_rewrite_module 基于正则匹配来实现重定向.依赖PCRE库,见依赖1 模块2:http_gzip_module ...
- Docker安装及常用操作
Docker简介: Docker是一个轻量级容器技术,类似于虚拟机技术,但性能远远高于虚拟机,Docker支持将软件编译成一个镜像(image),在这个镜像中做好对软件的各种配置,然后可以运行这个镜像 ...
- Redis可视化工具安装及常用操作操作
可视化操作工具:RedisDesktopManager 下载地址:http://www.pc6.com/mac/486661.html 直接安装(傻瓜式安装,直接下一步就可以了)(有Mac和windo ...
- Centos6.8下编译安装LAMP的操作记录梳理
之前用的最多的web框架是LNMP,偶尔也会用到LAMP.接下来简单说下LAMP环境的部署记录,这里选择源码安装的方式: LAMP相关安装包下载地址:https://pan.baidu.com/s/1 ...
- Git的安装及常用操作
一.Git的安装 1.下载Git,官网地址为:https://git-scm.com/downloads. 2.下载完成之后,双击目录进行安装 3.选择安装目录 4.选择组件,默认即可 5.设 ...
- Git安装与常用操作
Git作为一个版本控制工具,使用前需进行下载安装:可自行到官网下载. 一.安装(windows) 1.双击下载好的文件进行安装,弹窗中点击"next" 2.默认勾选,继续点击&qu ...
随机推荐
- MongoDB小东西
在mongodb中,show users 和db.system.users.find() 都能查看账户的相关信息,但是这两个命令有什么区别么? db.system.users.find() 是查看全局 ...
- (hdu)4858 项目管理 (vector)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4858 Problem Description 我们建造了一个大项目!这个项目有n个节点,用很多边连接起 ...
- 软工+C(10): 团队项目[NABCD] - 对话式编辑
上一篇:助教指南,持续更新... 下一篇:从命令行开始逐步培养编程能力(Java) 动机(Motivation) Eating your own dog food, also called dogfo ...
- Android N和O中使用adb shell dpm set-device-owner 'com.android.cts.verifier/com.android.cts.verifier.managedprovisioning.DeviceAdminTestReceiver' setup Device Owner失败
PC端出现如下log: D:\workspace\AndroidO\CTS\CTS_Verifier>adb shell dpm set-device-owner 'com.android.ct ...
- 一分钟学会JavaMail(假)__手动滑稽
因为公司内部办公系统(OA)需要增加一个发送邮件的功能,所以学习了这个感觉比较冷门的JavaMail 1.先上成功截图 : 2.准备事项:Java Mail虽然是官方写的,但是没有集成到jdk里面 ...
- Kibana登录认证设置
Kibana从5.5开始不提供认证功能,想用官方的认证,X-Pack,收费滴 . 所以就自己动手吧,用nginx的代理功能了. 1.安装Nginx: [root@ELK /]# yum -y inst ...
- bzoj4671: 异或图——斯特林反演
[BZOJ4671]异或图 - xjr01 - 博客园 考虑先算一些限制少的情况 gi表示把n个点的图,划分成i个连通块的方案数 连通块之间不连通很好处理(怎么处理看下边),但是内部必须连通,就很难办 ...
- MYSQL 企业常用架构与调优经验分享
一.选择Percona Server.MariaDB还是MYSQL mysql应用源码:http://www.jinhusns.com/Products/Download/?type=xcj 1.M ...
- consul kv使用介绍
有两种方法与Consul K/V交互的方式 HTTP API Consul KV CLI WEB访问 命令行使用 帮助命令:consul kv --help 列出所有kv:consul kv get ...
- 爬虫解析之css,xpath语法
一.xpath语法 xpath实例文档 <?xml version="1.0" encoding="ISO-8859-1"?> <bookst ...