首页 Linux基础正文

rsync的配置小结

Jean Linux基础 2017-09-14 661 0 rsynclinux
NAME
       rsync — a fast, versatile, remote (and local) file-copying tool

SYNOPSIS
       Local:  rsync [OPTION...] SRC... [DEST]

       Access via remote shell:
         Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
         Push: rsync [OPTION...] SRC... [USER@]HOST:DEST

       Access via rsync daemon:
         Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
               rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
         Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
               rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST
               
一.Local方式例子:
    rsync /etc/hosts /tmp  相当于cp
    rsync -avz /etc/hosts /tmp   保持属性拷贝
    rsync -r --delete /null/ /data/  需要创建一个null目录

二.Access via remot shell:例子:
    Push:rsync -avz -e ‘ssh -p 22’ /etc/hosts 192.168.1.103:~
    Pull:rsync -avz -e ‘ssh -p 22’ 192.168.1.103:~/hosts /tmp

三.Access via rsync daemon方式例子:
说明:通过rsync工具对103、104两台服务器上面的数据进行同步
要求:3台服务器,1台ip为192.168.1.101的server,2台ip为1.103和1.104的client
具体实施方法:
1.在三台服务器上同时安装rsync,安装完毕之后查看一下
yum install rsync -y
[root@shnne ~]# rpm -qa rsync
rsync-3.0.6-12.el6.x86_64

2.在服务端配置rsyncd.conf
vim /etc/rsyncd.conf
编辑
    #created by shnne 12:54 2017-9-14
    ##rsyncd.conf start##
    uid = rsync
    gid = rsync
    use chroot = no
    max connections = 200
    timeout = 600
    pid file = /var/run/rsyncd.pid
    lock file = /var/run/rsync.lock
    log file = /var/log/rsyncd.log
    ignore errors
    read only = false
    list = false
    hosts allow = 192.168.1.0/24
    hosts deny = 0.0.0.0/32
    auth users = rsync_backup
    secrets file = /etc/rsync.password
    #####################################
    [shnne]
    comment = back server by shnne 12:54 2017-9-14
    path = /shnne

3.添加rsync虚拟用户,并授权shnne目录
mkdir -p /shnne
useradd -s /sbin/nologin -M rsync
chown -R rsync.rsync /shnne

4.创建rsync虚拟用户的账号密码重定向到/etc/rsync.password文件,并修改权限
echo "rsync_backup:shnne" >/etc/rsync.password
cat /etc/rsync.password
chmod 600 /etc/rsync.password
ll /etc/rsync.password

5.启动rsync服务
rsync --daemon
echo "/usr/bin/rsync --daemon" >> /etc/rc.local

6.在103、104客户端创建文件和密码
echo "shnne">> /etc/rsync.password
chmod 600 /etc/rsync.password
ls -l  /etc/rsync.password

7.将数据从服务器端拉到两台客户端服务器
rsync -avz rsync_backup@192.168.1.101::shnne /data --password-file=/etc/rsync.password 
rsync -avz rsync://rsync_backup@192.168.1.101/shnne /data/ --password-file=/etc/rsync.password

将本地文件推送到服务器
rsync -avz /data/ rsync_backup@192.168.1.101::shnne --password-file=/etc/rsync.password
rsync -avz /data/ rsync://rsync_backup@192.168.1.101/shnne --password-file=/etc/rsync.password

8.客户端排除文件
    1.排除单个文件
        rsync -avz --exclude=file /data/ rsync_bakcup@192.168.1.101::shnne --password-file=/etc/rsync.password
    2.排除多个个文件
        rsync -avz --exclude={file1,file5} /data/ rsync_bakcup@192.168.1.101::shnne --password-file=/etc/rsync.password
        rsync -avz --exclude=file1 --exclude=file2 /data/ rsync_bakcup@192.168.1.101::shnne --password-file=/etc/rsync.password
        rsync -avz --exclude={a..z} /data/ rsync_bakcup@192.168.1.101::shnne --password-file=/etc/rsync.password
        
        seq 10 > paichu.log
        rsync -avz --exclude-from=paichu.log /data/ rsync_bakcup@192.168.1.101::shnne --password-file=/etc/rsync.password

9.服务端的排除
    只需要在/etc/rsyncd.conf添加如下内容
    exclude=file1 file2 shnne/paichu.log
    
10.无差异备份
    就是客户端和服务端数据都一样
    --delete 参数 
    从远端拉取数据:远端有什么客户端就有什么,远端没有本地有也会删除,造成的结果是客户端数据丢失
    rsync -avz --delete  rsync_backup@192.168.1.101::shnne /data/ --password-file=/etc/rsync.password
    从远端推送数据:客户端有什么远端就有什么,本地没有远端有也要删除,会造成服务器端数据丢失
    rsync -avz --delete  /data/  rsync_backup@192.168.1.101::shnne --password-file=/etc/rsync.password
    
11.rsync结合定时任务crond实时同步
mkdir /server/scripts -p
cd /server/scripts/ 
vim backup.sh      #编辑一下内容
    #!/bin/sh
    path=/shnne
    dir="`ifconfig eth0|awk -F '[ :]+' 'NR==2 {print $4}'`_$(date +%F)"
    mkdir $path/$dir -p &&\
    /bin/cp /var/spool/cron/root $path/$dir/cron_root_$(date +%F) &&\
    /bin/cp /etc/rc.local $path/$dir/rc.local_$(date +%F) &&\
    rsync -az $path/  rsync_backup@192.168.1.101::shnne --password-file=/etc/rsync.password
    
然后:crontab -e    #创建定时任务
    #backup shnne everyday at 01:00
    00 01 * * * /bin/sh /server/scripts/backup.sh >/dev/null 2>&1


评论