Linux下使用rsync进行数据备份

        对于运维人员来说,数据备份是最重要的工作之一,rsync就是一款通过网络备份重要数据的工具/软件。

        rsync同样是一个在类Unix和Window系统上通过网络在系统间同步文件夹和文件的网络协议,它可以复制或者显示目录并复制文件。rsync默认监听TCP 873端口,通过远程shell如rsh和ssh复制文件。同时要求必须在远程和本地系统上都安装rsync。

        rsync是Linux系统下的文件同步和数据传输工具,它采用“rsync”算法,可以将一个客户机和远程文件服务器之间的文件同步,也可以在本地系统中将数据从一个分区备份到另一个分区上。如果rsync在备份过程中出现了数据传输中断,恢复后可以继续传输不一致的部分。rsync可以执行完整备份或增量备份.


        rsync的主要优点是:

        速度:最初会在本地和远程之间拷贝所有内容。下次,只会传输发生改变的块或者字节。

        安全:传输可以通过ssh协议加密数据。

        低带宽:rsync可以在两端压缩和解压数据块。


        虚拟机Linux环境环境:

        服务器1:192.168.216.161

        服务器2:192.168.216.162


        Linux安装:

        官网:https://rsync.samba.org/ 

##编译安装
[root@191 ~]# wget -O rsync-3.1.3.tar.gz  https://download.samba.org/pub/rsync/src/rsync-3.1.3.tar.gz
[root@191 ~]# mv rsync-3.1.3.tar.gz /usr/local/src/
[root@191 ~]# cd /usr/local/src/
[root@191 src]# tar -zxvf rsync-3.1.3.tar.gz
[root@191 src]# cd rsync-3.1.3/
[root@191 rsync-3.1.3]# ./configure --prefix=/usr/local/rsync
[root@191 rsync-3.1.3]# make && make install
[root@191 rsync-3.1.3]# cd /usr/local/rsync/bin

##查看安装
[root@191 bin]# ./rsync -h
rsync  version 3.1.3  protocol version 31
Copyright (C) 1996-2018 by Andrew Tridgell, Wayne Davison, and others.
Web site:

        配置rsync-server(192.168.216.161)

        1.配置rsyncd.conf

[root@191 bin]# cd /usr/local/rsync
[root@191 rsync]# touch /usr/local/rsync/rsyncd.conf        ##手动创建
[root@191 rsync]# vim /usr/local/rsync/rsyncd.conf
uid = root
gid = root
use chroot = no
max connections = 1024
pid file = /var/run/rsyncd.pid
log file = /var/log/rsyncd.log
hosts allow = 192.168.216.162

[www]
path = /data/www/
comment = test
ignore errors = true
read only = no
list = no
auth users = meng
secrets file = /usr/local/rsync/rsyncd.secrets

        这里的hosts allow 我设置192.168.216.162,也就是我的客户端机器ip,auth users 这里我设置成root(客户端的用户),path 为同步文件存放目录。

        2.配置rsyncd.secrets

[root@191 rsync]# touch /usr/local/rsync/rsyncd.secrets        ##手动创建
[root@191 rsync]# vim /usr/local/rsync/rsyncd.secrets
meng:123456                                                    ##格式为用户:密码
[root@191 rsync]# chmod 600 /usr/local/rsync/rsyncd.secrets    ##注意:此文件权限必须设置:600

        3.配置rsyncd.motd (配置欢迎语文件(可选)

[root@191 rsync]# touch /usr/local/rsync/rsyncd.motd
[root@191 rsync]# vim /usr/local/rsync/rsyncd.motd
welcome use rsync service

        4.启动rsyncd

[root@191 rsync]# /usr/local/rsync/bin/rsync --daemon --config=/usr/local/rsync/rsyncd.conf

        5.查看rsyncd进程,命令如下:

[root@191 rsync]# ps -aux |grep rsyncd
root       7050  0.0  0.0 108444   636 ?        Ss   22:38   0:00 /usr/local/rsync/bin/rsync --daemon --config=/usr/local/rsync/rsyncd.conf
root       7052  0.0  0.1 112728  1000 pts/0    S+   22:38   0:00 grep --color=auto rsyncd

        6.检查是否已经成功启动:

[root@191 rsync]# netstat -lnp|grep 873
tcp        0      0 0.0.0.0:873             0.0.0.0:*               LISTEN      3001/rsync          
tcp6       0      0 :::873                  :::*                    LISTEN      3001/rsync          
[root@191 rsync]#

        7.配置rsync开机启动:

[root@191 rsync]# vim /etc/rc.d/rc.local
/usr/local/rsync/bin/rsync --daemon --config=/usr/local/rsync/rsyncd.conf
[root@191 rsync]# chmod +x /etc/rc.d/rc.local
[root@191 rsync]# ps -aux |grep rsyncd
root       6165  0.0  0.0 108448   636 ?        Ss   20:33   0:00 /usr/local/rsync/bin/rsync --daemon --config=/usr/local/rsync/rsyncd.conf
root       6287  0.0  0.0 112728   972 pts/0    S+   20:38   0:00 grep --color=auto rsyncd
[root@191 rsync]# shutdown -h now
[root@191 ~]# ps -aux |grep rsyncd
root       1154  0.0  0.0 108448   636 ?        Ss   20:38   0:00 /usr/local/rsync/bin/rsync --daemon --config=/usr/local/rsync/rsyncd.conf
root       1958  0.0  0.0 112732   972 pts/0    S+   20:39   0:00 grep --color=auto rsyncd

        

        client端安装配置(192.168.216.162)

        1.安装rsync(yum安装)

[root@192 ~]# yum -y install rsync
[root@192 ~]# systemctl start rsyncd.service       ##启动rsync服务 
[root@192 ~]# systemctl enable rsyncd.service
Created symlink from /etc/systemd/system/multi-user.target.wants/rsyncd.service to /usr/lib/systemd/system/rsyncd.service.
[root@192 ~]# netstat -lnp|grep 873                ##检查是否已经成功启动
tcp        0      0 0.0.0.0:873             0.0.0.0:*               LISTEN      3181/rsync          
tcp6       0      0 :::873                  :::*                    LISTEN      3181/rsync          
[root@192 ~]#

        首先,配置文件在:/etc/rsyncd.conf

[root@192 etc]# vim /etc/rsyncd.conf
        uid = root
        # //设置运行rsync 进程的用户
        gid = root
        use chroot = no
        max connections = 4
        # pid file = /var/run/rsyncd.pid
        #//CentOS7中yum安装不需指定pid file 否则报错
        lock file=/var/run/rsyncd.lock
        log file = /var/log/rsyncd.log
        # //此文件定义完成后系统会自动创建
        exclude = lost+found/
        transfer logging = yes
        timeout = 900
        ignore nonreadable = yes
        # //同步时跳过没有权限的目录
        dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2
        # //传输时不压缩的文件

        客户端建立密码文件

[root@192 etc]# vi /etc/rsyncd.passwd
123456

        注意:

        1、这里的密码,与服务端设置的密码相同,就是通过这个密码连接服务端的

        2、然后切记修改改密码文件的权限(密码文件权限属性要设得只有属主可读)      

[root@192 etc]# chmod 600 /etc/rsyncd.passwd
[root@192 ~]# systemctl restart rsyncd.service
[root@192 ~]# systemctl status rsyncd.service
[root@192 ~]# systemctl stop rsyncd.service
[root@192 ~]# systemctl start rsyncd.service
[root@192 ~]# systemctl  rsyncd.service


        常用命令:

【客户端从服务端远程拉取文件】

##1、客户端从服务器端拉取www模块下的文件到/data/www/
[root@192 ~]# rsync -avz meng@192.168.216.161::www --password-file=/etc/rsyncd.secrets /data/www/
注意:root 是用户  www 是认证模块  --password-file 加载密码文件(和服务器密码相同)
##2、让客户端与服务器保持完全一致, --delete
[root@192 ~]# rsync -avzP --delete  meng@192.168.216.161::www --password-file=/etc/rsyncd.secrets /data/www/
##3、客户端从服务端远程拉取文件并显示进度
[root@192 ~]# rsync -avz --progress  meng@192.168.216.161::www --password-file=/etc/rsyncd.secrets /data/www
[root@192 ~]# rsync -avzP meng@192.168.216.161::www --password-file=/etc/rsyncd.secrets /data/www
-a --参数,相当于-rlptgoD,
-r --是递归
-l --是链接文件,意思是拷贝链接文件
-i --列出 rsync 服务器中的文件
-p --表示保持文件原有权限
-t --保持文件原有时间
-g --保持文件原有用户组
-o --保持文件原有属主
-D --相当于块设备文件
-z --传输时压缩
-P --传输进度
-v --传输时的进度等信息,和-P有点关系


【客户端推送文件到远程服务器】

##1、上传客户端文件至服务端
[root@localhost ~]# rsync -avz /data/www/5.txt  meng@192.168.216.161::www --password-file=/etc/rsyncd.secrets
##2、上传客户端文件至服务端的 george 目录
[root@localhost ~]# rsync -avz /data/www/  meng@192.168.216.161::www/src --password-file=/etc/rsyncd.secrets
##3、递归列出服务端 www 模块的文件
[root@localhost ~]# rsync -ir --delete  meng@192.168.216.161::www --password-file=/etc/rsyncd.secrets
##4、同步除了路径以及文件名中包含 “5” *的所有文件
[root@localhost ~]# rsync -avzP --exclude="*5*"  meng@192.168.216.161::www --password-file=/etc/rsyncd.secrets /data/www
##5、客户端自动同步(每分钟自动同步一次)
[root@localhost ~]# crontab -e
*/1 * * * * rsync -avzP  meng@192.168.216.161::www --password-file=/etc/rsyncd.secrets /data/www
客户端本地同步
##6、将 src 目录里的所有的文件同步至 dest 目录(不包含src本身)
[root@localhost ~]# rsync -avz --progress  /data/www/src/ /data/www/test/
##7、将 src 目录包括自己整个同步至 dest 目录
[root@localhost ~]# rsync -avz --progress  /data/www/src /data/www/test/
##8、即使 src 后面接有 / ,效果同上
[root@localhost www]# rsync -avR src/ test/
局域网间同步(192.168.216.161  192.168.216.162)
##9、远程同步至本地,需输入root密码
[root@localhost www]# rsync -av 192.168.216.161:/data/www/ dest/
##10、本地文件同步至远程
[root@localhost www]# rsync -av test/ 192.168.216.161:/data/www/
##11、整个目录同步过去
[root@localhost www]# rsync -av test 192.168.216.161:/data/www/
##12、从目标目录里面删除无关的文件(从客户端删除服务器192.168.216.161 /data/www/ 目录下的 src目录 )
[root@localhost www]# rsync -av --delete src/ 192.168.216.161:/data/www/ --delete

冷暖自知一抹茶ck

示例: 1 - 启用压缩
[root@localhost /]# rsync -zvr /home/aloft/ /backuphomedir
上面的rsync命令使用了-z来启用压缩,-v是可视化,-r是递归(即对子目录以递归的模式处理)。
上面在本地的/home/aloft/和/backuphomedir之间同步。
示例: 2 - 保留文件和文件夹的属性
[root@localhost /]# rsync -azvr /home/aloft/ /backuphomedir
上面我们使用了-a选项,它保留了所有人和所属组、时间戳、软链接、权限,并以递归模式运行。
示例: 3 - 找出文件间的不同
[root@localhost /]# rsync -avz /home/aloft/ azmath@192.168.1.4:192.168.1.4:/share/rsysnctest/
上面的命令帮助你找出源地址和目标地址之间文件或者目录的不同。


增量备份:

[root@localhost www]# rsync -vzrtopg --progress --delete meng@192.168.216.163::www /data/www/ --password-file=/etc/rsyncd.secrets


相关链接:

        rsync 常见错误与解决方法整理:

            https://www.jb51.net/article/31920.htm 

            https://blog.csdn.net/u011415782/article/details/78727911   



冷暖自知一抹茶ck
请先登录后发表评论
  • 最新评论
  • 总共0条评论