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 ...
随机推荐
- 全文搜索引擎 ElasticSearch 还是 Solr?
最近项目组安排了一个任务,项目中用到了全文搜索,基于全文搜索 Solr,但是该 Solr 搜索云项目不稳定,经常查询不出来数据,需要手动全量同步,而且是其他团队在维护,依赖性太强,导致 Solr 服务 ...
- 3 数据分析之Numpy模块(2)
数组函数 通用元素级数组函数通用函数(即ufunc)是一种对ndarray中的数据执行元素级的运算.我们可以将其看做是简单的函数(接收一个或多个参数,返回一个或者多个返回值). 常用一元ufunc: ...
- Powershell 函数中的CmdletBinding()是怎么回事?
参考文章: Don Jones https://technet.microsoft.com/en-us/library/ff677563.aspx powershell 帮助文档: help abou ...
- Spring boot 的自动配置
Xml 配置文件 日志 Spring Boot对各种日志框架都做了支持,我们可以通过配置来修改默认的日志的配置: #设置日志级别 logging.level.org.springframework=D ...
- 一些char和byte对应的字符
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 2 ...
- Python——Socket编程
一.TCP 1.客户端 import socket sk = socket.socket() # 买个手机 sk.connect(('127.0.0.1',8080)) # 拨号 ret = sk.r ...
- 使用jenkins进行前端项目自动部署
前面的话 后端的nodeJS项目可以使用pm2进行自动部署,由于前端项目打包后是静态资源,不需要进程守护.一般地,前端项目使用jenkins来进行自动部署,包括打包.测试等一系列流程.本文将详细介绍j ...
- neutron-删除负载均衡器
neutron-删除负载均衡器 在清除垃圾数据的时候,删除负载均衡器,总是有很多依赖.写了一个脚本,连同依赖资源一起删除 #!/bin/bash delete(){ local id id=$1 lo ...
- jdk8在windows及linux环境下安装
jdk下载 下载地址:https://www.oracle.com/technetwork/java/javase/downloads/index.html 目前大部分公司内部使用的还是jdk8,大部 ...
- css实现弹出框
弹出框也是前端里面经常使用的一个应用场景了,最开始想到的是用js实现这个效果,看到codepen上面有用css实现的.其实就是用到了css里面的一个:target选择器+visibility属性. U ...