对于运维人员来说,数据备份是最重要的工作之一,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安装:
##编译安装 [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
示例: 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
本文为崔凯原创文章,转载无需和我联系,但请注明来自冷暖自知一抹茶ckhttp://www.cksite.cn