学习rsync

一、rsync介绍

1.sync同步:刷新文件系统缓存,强制将修改过的数据块写入磁盘,并且更新超级块。
2.async异步:将数据先放到缓冲区,再周期性的去同步到磁盘。
3.rsync远程同步。

二、rsync的特点

1.可以镜像保存整个目录树和文件系统。
2.可以保留原有的权限(permission,mode)、owner、group、时间(修改时间,modify time)、软硬链接、文件acl、文件属性(attributes)信息等。
3.传输效率高,使用同步算法,只比较变化的(增量备份)。
4.支持匿名传输,方便网站镜像;也可以做验证,加强安全。

rsync与scp的区别:支持增量备份;数据同步时保持文件的原有属性。

三、本地文件同步

[root@localhost /]# rsync -av /dir1/ /dir2/   #将目录dir1里面的文件同步到目录dir2
[root@localhost /]# rsync -av /dir1 /dir2     #将目录dir1同步到目录dir2下面
[root@localhost /]# rsync -avR /dir1/ /dir3/  #保留相对路径
[root@localhost /]# rsync -av --delete /dir1/ /dir2   #dir1里面有两个文件file1和file2,dir2里面有三个文件file1、file2和file3,同步以后dir2里面会删除掉file3

四、远程文件同步

[root@localhost ~]# rsync -av linux.txt root@192.168.68.182:/root/  #同步文件linux.txt到远程服务器的root目录下
[root@localhost ~]# rsync -avR test/ root@192.168.68.182:/root   #同步目录test到远程服务器的root下
[root@localhost ~]# rsync -av root@192.168.68.182:/root/linux.txt ./  #拉取远程服务器文件linux.txt到本地当前目录
[root@localhost ~]# rsync -av root@192.168.68.182:/root/test ./  #拉取远程服务器目录test到本地当前目录

五、免密文件同步和更改端口后的文件同步

1.做ssh免密以后rsync同步时就不用输入密码。
2.修改端口后用rsync同步要加-e参数运行shell

[root@localhost ~]# rsync -e "ssh -p 2222" -av rsync.txt root@192.168.68.183:/root

六、rsync作为系统服务

1.CentOS7直接有rsync服务
2.CentOS6需要创建配置文件再启动
如果rsync作为服务单独运行,底层就不需要ssh服务了

[root@localhost ~]# touch /etc/rsyncd.conf
[root@localhost ~]# rsync --daemon

七、应用举例

有代码服务器和备份服务器各一台,实现定时将代码服务器中的代码对备份服务器进行同步。
1.(代码服务器)创建测试用的文件

[root@localhost ~]# mkdir -p /app/java_project
[root@localhost ~]# mkdir /app/java_project/abc{1..3}
[root@localhost ~]# touch /app/java_project/file{1..10}.java

2.(代码服务器)修改配置文件将rsync作为系统服务运行

[root@localhost ~]# vim /etc/rsyncd.conf
#添加文件内容
[app]
path=/app/java_project
log file=/var/log/rsync.log

3.(备份服务器)创建备份目录并测试是否可以连接到rsync服务

[root@localhost ~]# mkdir -p /backup/app1_java
[root@localhost ~]# rsync -a root@192.168.68.182::
app       

4.利用定时任务和脚本文件进行定时同步
编写脚本

[root@localhost ~]# vim /root/rsync_java.sh
#!/bin/bash
rsync -av root@192.168.68.182::app /backup/app1_java &>/dev/null
[root@localhost ~]# chmod +x /root/rsync_java.sh

编写计划任务

[root@localhost ~]# crontab -e
46 4 * * * /root/rsync_java.sh

七、给rsync服务添加密码

1.(代码服务器)修改配置文件

[root@localhost ~]# vim /etc/rsyncd.conf
[app]
path=/app/java_project
log file=/var/log/rsync.log
auth users=user1,user2
secrets file=/etc/rsyncd.secrets

2.(代码服务器)创建密码文件并修改权限

[root@localhost ~]# vim /etc/rsyncd.secrets
user1:123
user2:123
[root@localhost ~]# chmod 600 /etc/rsyncd.secrets

3.(备份服务器)同步
在这里插入图片描述

八、rsync搭配inotify进行实时同步

1.(代码服务器)安装inotify-tools,进入到inotify-tools解压的文件编译安装

[root@localhost inotify-tools-3.13]# ./configure && make && make install

2.(代码服务器)编写脚本来进行同步

[root@localhost java_project]# vim /root/inotify.sh
#!/bin/bash
/usr/local/bin/inotifywait -mrq -e modify,delete,create,attrib,move /app/java_project |while read events
do
      rsync -av --delete /app/java_project root@192.168.68.183:/backup/app1_java
      echo "`date +%F\ %T`出现事件$events" >> /var/log/rsync.log 2>&1
done

3.(代码服务器)添加可执行权限

[root@localhost java_project]# chmod +x /root/inotify.sh

4.(代码服务器)让脚本在后台执行
如果要结束后台运行的进程,先jobs查看,然后kill %编号

[root@localhost java_project]# nohup /root/inotify.sh &

九、xinetd托管rsyncd服务

1.安装xinetd

[root@localhost ~]# yum install -y xinetd
[root@localhost ~]# rpm -ql xinetd	

2.编写xinetd的配置文件
常用参数

only_from 只允许访问
no_access 拒绝访问
access_times 控制访问服务的时间段
log_type 指定日志类型
interface 并发连接数
per_source 每个IP的最大连接数
includedir /etc/xinetd.d 子配置文件

编写子配置文件(新添加的服务一般在子配置文件下面创建相应的文件)

vim /etc/xinetd.d/rsync
service rsync
{
        disable         = no
        flags           = IPv6
        socket_type     = stream
        wait            = no
        user            = root
        server          = /usr/bin/rsync
        server_args     = --daemon
        log_on_failure  += USERID
}

3.重启xinetd服务

[root@localhost ~]# systemctl restart xinetd
[root@localhost ~]# ss -tlunp|grep 873
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值