Rsync了解

Rsync:

Rsync:实现全量及增量的本地或远程数据镜像同步备份的优秀工具。

https://www.samba.org/ftp/rsync/rsync.html

传统的cp,scp 工具拷贝每次均为完整的拷贝,而rsync除了可以完整拷贝外,还具备增量拷贝的功能,因此,从同步数据的性能及效率上,Rsync工具更胜一筹。

Rsync的特性如下: .

一般来说,Rsync大致使用三种主要的传输数据的方式。分别为:

主机本地间的数据传输(此时类似于p命令的功能)。
借助rcp,ssh 等通道来传输数据(此时类似于scp命令的功能)。
以守护进程的方式传输数据(这个是rsync的重要的功能)。

rsync == cp

[root@backup ~]# rsync  /etc/hosts /tmp/    #文件
[root@backup ~]# ls /tmp/hosts
/tmp/hosts
[root@backup ~]# rsync -avz /etc/hosts /tmp/   #目录

rsync == scp

rsync -avz -e 'ssh -p 22’ root@10.0.0.141:/opt /tmp
特别提示:请注意以下两命令的差别:
1)rsync -avz /opt// tmp/ 	#仅把/opt/目录里面的内容同步过来,opt目录本身并不同步
2)rsync -avz 4pt /tmp		#示把opt本身及其内部内容全都同步到/tmp下

rsync == rm

[root@backup ~]# rsync  -a  --delete  /null/ /znix/
[root@backup ~]# ll /znix/
total 0

Rsync的企业工作场景说明

两台服务器之间数据同步(定时任务cron+rsync)
同步网站内部人员数据信息(定时任务最小周期为1分钟)

两台服务器之间数据同步(实时任务inotify/sersync/lrsyncd+rsync)
同步网站用户人员数据信息

守护进程方式同步数据

配置rsync服务端(将服务端配置到 backup 服务器上)

进行软件服务配置

[root@backup ~]# rpm -qa |grep rsync
rsync-3.0.6-12.el6.x86_64
[root@backup ~]# vim /etc/rsyncd.conf
uid = rsync
gid = rsync
use chroot = no
max connections = 200
timeout = 300
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 = 172.16.1.0/24
hosts deny = 0.0.0.0/32
auth users = rsync_backup
secrets file = /etc/rsync.password
[backup]
comment = "backup dir by oldboy"
path = /backup

创建rsync用户

[root@backup ~]# useradd -s /sbin/nologin -M rsync

创建数据备份储存目录,目录修改属主

[root@backup ~]# mkdir /backup/
[root@backup ~]# chown -R rsync.rsync /backup/

创建认证用户密码文件,启动

[root@backup ~]# echo "rsync_backup:oldboy123" >>/etc/rsync.password
[root@backup ~]# chmod 600 /etc/rsync.password
[root@backup ~]# rsync --daemon
[root@backup ~]# ps -ef |grep rsync
root       2076      1  0 17:05 ?        00:00:00 rsync --daemon
root       2163   1817  0 17:38 pts/1    00:00:00 grep --color=auto rsync
[root@backup ~]# netstat -lntup |grep rsync
tcp        0      0 0.0.0.0:873   0.0.0.0:*    LISTEN      2076/rsync         

配置rsync客户端(其他服务器为客户端)

[root@nfs01 ~]# echo "oldboy123" >>/etc/rsync.password
[root@nfs01 ~]# chmod 600 /etc/rsync.password

实现数据传输

[root@nfs01 ~]# rsync -avzP --delete /etc/hosts rsync_backup@172.16.1.41::backup
[root@nfs01 ~]# rsync -avzP /etc/hosts rsync_backup@172.16.1.41::backup  \
     --password-file=/etc/rsync.password

主要参数

--exclude-from=file	排除文件名相对路径下的目录文件,即可以实现自定义排除多个文件
--exclude=a.txt    排除某个文件 
--bwlimit=RATE	   限速功能
--delete	让目标目录SRC和源目录数据DST一致,即无差异数据同步
[root@nfs01 data]# vim /tmp/paichu.txt
a/3.txt
b
c
[root@nfs01 data]# rsync -avz /data/ --exclude-from=/tmp/paichu.txt 
排除文件中,需要利用相对路径指定排除信息(不能利用绝对路径)

在配置文件中修改要排除的文件

vim /etc/rsyncd.conf
[nfsdata]
comment = "nfsdata dir by oldboy"
path = /backup/nfsdata
exclude=a/3.txt b c
[root@nfs01 data]# rsync -avz /data/  rsync_backup@172.16.1.41::nfsdata

rsync与inotify数据同步

[root@svr7 ~]# ssh-keygen         #一路回车
]# ssh-copy-id     root@192.168.4.207
]# rsync  -av  --delete   /mydir/    root@192.168.4.207:/opt
源码编译安装步骤:
]# yum   -y   install   make  gcc
]# tar  -xf  /root/tools.tar.gz  -C   /usr/local/
]# tar -xf   /usr/local/tools/inotify-tools-3.13.tar.gz   -C /usr/local/
]# cd    /usr/local/inotify-tools-3.13/
]# ./configure     --prefix=/opt/myrpm       #指定安装位置
]# make
]# make    install
]# ls  /opt/myrpm/bin/  
]#  /opt/myrpm/bin/ inotifywait    -rq   /mnt   #监控/mnt目录 
•基本用法
inotifywait  [选项]  目标文件夹
•常用命令选项
-m,持续监控(捕获一个事件后不退出)
-r,递归监控、包括子目录及文件
-q,减少屏幕输出信息
-e,指定监视的 modify、move、create、delete、attrib 等事件类别     
]# vim   /etc/rsync.sh
while   /opt/myrpm/bin/inotifywait    -rqq    /mydir/
do
rsync -a  --delete   /mydir/    root@192.168.4.2:/opt
done
[root@svr7 /]# chmod   a+x    /etc/rsync.sh    
[root@svr7 /]# /etc/rsync.sh   &     

ntpdate同步时间

1、查看当前服务器时间
# date -R
Mon, 27 Apr 2021 10:42:51 +0800
2、安装ntpdate服务
# yum install ntpdate
3、同步中国上海时间
#timedatectl set-timezone Asia/Shanghai 
#ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
# ntpdate ntp1.aliyun.com
19 Feb 11:36:56 ntpdate[2310]: adjust time server 120.25.115.20 offset 0.001033 sec
4、查看新时间是否已同步
# date -R
Sat, 19 Feb 2022 11:38:26 +0800
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Python可以使用pyrsync模块来实现rsync功能。pyrsync是一个纯Python编写的模块,它实现了rsync算法,并提供了一函数来完整地应用rsync功能,而不是作为rsync的包装器。该模块的开发人员认为rsync的初始规范要求使用MD5哈希,因此他们使用Python的hashlib模块来计算文件的哈希值。通过pyrsync,你可以像使用rsync命令一样在Python中完成文件或目录的同步操作。 使用Python实现rsync的主要目的是为了方便多个项目之间文件/目录的同步。由于有多个项目和主机,直接使用rsync命令拷贝不太方便且效率较低,而使用Python来封装rsync可以更灵活地处理多个项目的同步需求。通过在Python代码中调用pyrsync模块提供的函数,你可以方便地遍历多个项目并进行文件或目录的同步操作。 要使用pyrsync实现rsync功能,可以按照以下思路进行操作: 1. 理解rsync算法。请自行了解rsync算法的原理和机制。 2. 对于本地拷贝,可以使用pyrsync提供的函数,例如使用rsync_delta函数来计算源目录/文件与目标目录/文件之间的差异,并使用rsync_patch函数将差异应用到目标目录/文件上。 3. 对于远程拷贝,可以使用rsync命令的远程拷贝功能,通过调用subprocess模块来在Python中执行rsync命令。例如,可以使用subprocess模块的run函数来执行类似于"rsync -av 源目录/文件 用户@主机:/目录"的命令。 通过以上思路和pyrsync模块的函数,你可以使用Python实现rsync功能,以满足多个项目之间文件/目录的同步需求。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [实现 rsync算法 的纯Python模块_python_代码_下载](https://download.csdn.net/download/qq_38334677/85581462)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Python封装rsync命令。实现批量(多进程)同步目录/文件](https://blog.csdn.net/weixin_40618452/article/details/107901525)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值