双机同步任务操作步骤

注:红色为注释说明的内容,绿色为示例内容,请以项目实际情况修改操作

 

rsync有六种不同的工作模式:

  1. 拷贝本地文件;当SRC和DES路径信息都不包含有单个冒号":"分隔符时就启动这种工作模式。
  2.使用一个远程shell程序(如rsh、ssh)来实现将本地机器的内容拷贝到远程机器。当DST路径地址包含单个冒号":"分隔符时启动该模式。
  3.使用一个远程shell程序(如rsh、ssh)来实现将远程机器的内容拷贝到本地机器。当SRC地址路径包含单个冒号":"分隔符时启动该模式。
  4. 从远程rsync服务器中拷贝文件到本地机。当SRC路径信息包含"::"分隔符时启动该模式。
  5. 从本地机器拷贝文件到远程rsync服务器中。当DST路径信息包含"::"分隔符时启动该模式。
  6. 列远程机的文件列表。这类似于rsync传输,不过只要在命令中省略掉本地机信息即可。
  

    -a 以archive模式操作、复制目录、符号连接 相当于-rlptgoD

    rsync中的参数

        -r 是递归 

        -l 是链接文件,意思是拷贝链接文件;

        -p 表示保持文件原有权限;

        -t 保持文件原有时间;

        -g 保持文件原有用户组;

        -o 保持文件原有属主;

        -D 相当于块设备文件;

    -z 传输时压缩;

    -P 传输进度;

    -v 传输时的进度等信息,和-P有点关系,自己试试。可以看文档;

    -e ssh的参数建立起加密的连接。

    -u只进行更新,防止本地新文件被重写,注意两者机器的时钟的同时

    --progress是指显示出详细的进度情况

    --delete是指如果服务器端删除了这一文件,那么客户端也相应把文件删除,保持真正的一致

    --password-file=/password/path/file来指定密码文件,这样就可以在脚本中使用而无需交互式地输入验证密码了,这里需要注意的是这份密码文件权限属性要设得只有属主可读。

 

  1. 安装或更新相关软件包

#yum install rsync xinetd –y

 

  1. 配置rsync服务端(提供文件同步的服务器),制定提供同步的应用条目信息

 

  1. 配置文件实例如下

#cat /etc/rsyncd.conf

uid = root

gid = root

use chroot = no

max connections = 100

timeout = 600

pid file = /var/run/rsyncd.pid

lock file = /var/run/rsyncd.lock

log file = /var/log/rsyncd.log

##以上为全局配置,下面为一个条目,可根据需求添加多个条目

[tomcat_project]

path = /opt/appl/ project/

##应用用户组id,和用户id

uid = 1501

gid = 1500

read only = yes

list = yes

##允许使用该条目进行同步的主机地址,加入备机和预生产主机地址

hosts allow = 172.16.0.101,172.26.0.100  

auth users = rsync

secrets file = /etc/rsyncd.pwd

 

  1. 增加Rsync同步认证文件

#cat /etc/rsyncd.pwd

rsync:123456

 

  1. 配置服务启动管理项

##cat /etc/xinetd.d/rsync

service rsync

{

##把这里的yes 改为 no

disable = no

flags           = IPv6

socket_type     = stream

wait            = no

user            = root

server          = /usr/bin/rsync

server_args     = --daemon

log_on_failure  += USERID

}

                  

##启动rsync服务

#service xinetd start

##验证是否启动成功

#netstat –anptl | grep 873

 

  1. 防火墙放行rsync服务端口

-A INPUT -p tcp -m state --state NEW -m tcp --dport 873 -j ACCEPT 

##/etc/sysconfig/iptables加入以上行

#service iptables restart

           

  1. 系统执行过setup脚本,默认是限制远程访问,这里需要开放客户端(同步端)的地址

#cat >> /etc/hosts.allow <<EOF

##这里的地址是同步端的

rsync:172.16.0.101:allow

EOF

 

  1. 客户端(同步端)配置
  2. 创建同步脚本放置目录

#mkdir -p /opt/appl/assist/rsync

  1. 创建脚本生成日志文件的放置目录

#mkdir –p /var/log/rsync

  1. 在脚本放置目录下创建如下脚本

#cat rsync-172.16.0.100_project.sh

#!/bin/sh

LOG_FILE=/var/log/rsync/rsync_172.16.0.100_project_$(date +%Y-%m-%d)

loginfo()

{

echo "$(date "+%Y-%m-%d_%H:%M") [ANIHC SAYS] $1" >>$LOG_FILE

}

##For project

loginfo "==========Synchronizing=========="

loginfo "Source directory project..."

loginfo "Destination directory is /opt/appl/project"

/usr/bin/rsync -arP --delete --exclude-from=/opt/appl/assist/rsync/exclude_list_project  --password-file=/etc/rsyncd.pwd_project rsync@172.16.0.100::tomcat_project /opt/appl/project >>$LOG_FILE

loginfo "==========Synchronization done.=========="

  1. 创建rsync用户认证文件

#cat /etc/rsyncd.pwd_project

##这里的密码和服务端的/etc/rsyncd.pwd中的密码一样

123456

 

  1. 创建同步排除文件

##cat /opt/appl/assist/rsync/exclude_list_project

*.gz

*.tgz

*.zip

*.log

*.out

*.bak

*.tmp

log/*

logs/*

tmp/*

temp/*

##以上均为常规性同步排除,可以添加指定行排除文件

 

  1. 测试脚本是否可以成功同步

#cd /opt/appl/assist/rsync

##后台执行脚本,并重定向输出到nohup.out文件

#nohup ./ rsync-172.16.0.100_project.sh &

##执行后检查/opt/appl 目录下是否已经有project同步过来,如果没有查看nohup.out定位错误

 

  1. 如果脚本执行成功,添加定时任务

#crontab –l

00 01 * * * /opt/appl/assist/rsync/rsync-172.16.0.100_project.sh > /dev/null 2>&1