1、rsync不仅可以远程同步数据,类似于scp,而且可以在本地同步数据,类似于cp,但是不同于scp和cp的是,rsync不会覆盖以前的数据,而是判断已经存在的数据和新数据的差异,只有数据不同时,才会把不相同的部分覆盖。
2、使用的工作场景
1)把所有客户数据数据同步到备份服务器(可以配合定时任务,实现每天定时备份)
2)实时同步(解决存储服务器的单点故障问题),rsync结合inotify的功能做实时数据同步。
3)用rsync清空/root/data文件,使用一个空文件取替换 #rsync --delete-before -d --progess --stats /root/empty /root/data
3、安装rsync #yum -y install rsync 常用的参数: -a归档模式 -r递归模式处理子目录 -v打印一些信息 -L对待常规文件一样处理软链接文件 --delete删除DST中SRC没有的文件,时刻保证源文件最新 --exclude 排除不需要传输的文件
4、rsync守护进程模式,包含服务器以及客户机,服务器上启动rsync的守护进程,客户机配置对应的用户名和密码,实现客户机到服务器的备份功能。 1)rsync 分为服务器端、客户端,服务器端搭建比客户端辛苦一些(也是很简单)。
2)rsync 服务器是指以 deamon 方式运行 rsync 服务的服务器,需要打开 rsync deamon 和启动 xinetd 服务。默认端口873。
3)rsync 客户端是发起 rsync 连接的服务器,安装rsync即可。
4)rsync 客户端发起连接后,rsync 服务器会检查 rsync 客户端提交 rsync 服务器内建的户名和密码是否正确,如果通过认证检测,则开始文件传输,传输的过程是按要求先比对文件的大小、属性、权限、MD5值等信息,如果两端文件信息不一致,则按要求同步文件的区别块。
5)rsync传输过程中经常会有报错,可以百度检查
服务器:
a、先在/etc下新建一个目录,并且新建几个必要的文件
mkdir /etc/rsyncd touch /etc/rsyncd/rsyncd.conf touch /etc/rsyncd/rsyncd.passwd #户名称与密码以冒号分隔,多个用户名和密码可以多行 chmod 600 /etc/rsyncd/rsyncd.passwd
b、编辑配置文件
#vim /etc/rsyncd/rsync.conf
port=873 log file=/var/log/rsync.log pid file=/var/run/rsync.pid address=192.168.7.131 #服务器监听的ip地址
[test] path=/root/rsync #客户端他不过来的文件保存地址 use chroot=true #如果传输文件中含有软连接文件,true改为false max connections=4 #最大连接数 read only=no #如果未true,则不会上传到该模块指定的路径下 list=true #当查看服务器上提供了哪些目录时是否列出来,no比较安全 uid=root gid=root auth users=test #指定传输时要使用的用户名 secrets file=/etc/rsyncd/rsync.passwd #指定密码文件,确定该文件的权限一定为600 host allow=192.168.7.129 #可以是多台主机,用空格空开即可
c、启动服务 # rsync --daemon --config=/etc/rsyncd/rsyncd.conf # cat /var/log/rsync.log #通过日志文件查看rsync服务是否启动
客户端
a、创建密码文件,/etc/rsyncd/rsyncd.pass,并修改为 600 权限
# touch /etc/rsyncd/rsyncd.pass #这里只需要输入密码即可 # chmod 600/etc/rsyncd/rsyncd.pass /etc/rsyncd/rsyncd.pass 其内密码需要和服务端内/etc/rsyncd/rsyncd.pass指定用户的密码保持一致
b、客户端向服务端传输文件,如果是 873 端口,可以把 --port 去掉
rsync -avL --delete --progress /var/log/access.log test@192.168.1.100::test --password-file=/etc/rsyncd/rsyncd.pass --port=873

c、从服务端拉取文件
#拉取整个目录
rsync -avL --delete --progress --password-file=/etc/rsyncd/rsyncd.pass --port=873 test@192.168.7.131::test /var/log
#拉取单个文件
rsync -avL --delete --progress --password-file=/etc/rsyncd/rsyncd.pass --port=873 test@192.168.7.131::logs/a.test /var/log
网友评论