rsync远程同步

文件传输常用软件

文件传输:lrzsz、ftp、samba、cifs、nfs、sftp、WinSCP、rsync、SVN、git

定时同步和实时同步

定时同步:rsync + crontab

实时同步:rsync + inotifywait

关于rsync

一款快速增量备份的工具

远程文件同步,可实现跨主机增量同步文件数据。

rsync的命令格式

下行同步:

rsync [选项] 原始位置(源服务器的地址) 目标位置(本地目录)

上行同步:

rsync [选项] 目标位置(本地目录) 原始位置(源服务器的地址

选项 作用
-a 归档模式,保留文件的权限、属性等信息,等同于组合选项"-rlptgoD"。
--delete 删除目标位置有而原始位置没有的文件.

配置rsync同步源服务器

/etc/resyncd.conf

bash 复制代码
uid = root                      #指定用户
gid = root
use chroot =yes                 #是否做禁锢
pid file = /var/run/rsyncd.pid  #指定pid文件所在目录
log file = /var/log/rsyncd.log  #指定日志文件所在目录
address = 192.168.116.111       #指定本机监听,默认是任意地址
port = 873         # 指定端口
#exxcludde = 排除哪个目录
#transfer logging = yes #传输过程中是否做日志目录
#timeout =900         #超时时间900秒
#ignore nonreadable = yes   #是否忽略不可读
dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2     #哪些文件不做压缩 
hosts allow = 192.168.116.0/24  #指定白名单,允许客户端访问
​
​
自定义共享模块:
[shareky33]
path = /opt/data  # 设置共享目录
comment = this is rsync shared area#做描述
read only = yes   #是否只读
auth users = hyh   #认证用户
secrets file = /opt/rsync_userlist #指定密码文件位置
​
在/opt下
mkdir 一个data文件夹,设置共享目录
创建密码文件
touch rsync_userlist
vim rsync_userlist
hyh:abc123
加权限:chmod 600 rsync_userlist
​
rsync --daemon #开启进程在后台运行
​
netstat -lntup | grep rsync#查看端口
​
cp -a /etc/passwd /etc/shadow /etc/yum.repos.d/ ./
同步源服务器配置完成

配置发起端,进行同步

bash 复制代码
在发起端建立一个共享的目录
mkdir ky33
cd ky33
​
rsync -avz hyh@192.168.116.111::shareky33 ./
password:
复制代码
bash 复制代码
免交互:
在发起端/opt下准备一个密码文件
echo abc123 > ./rsync_passwd
chmod 600 rsync_passwd
到同步端建立三个新文件或目录,不然无法同步新的内容
echo a > a
echo b > b
echo c > c
​
到发送端
rsync -avz --password-file=/opt/rsync_passwd rsync://hyh@192.168.116.111/shareky33 /root/ky33

做任务计划,定时同步:

目标位置和原始位置内容同步,并多余的内容删除

bash 复制代码
rsync -avz --password-file=/opt/rsync_passwd --delete hyh@192.168.116.111::shareky33 /root/ky33

如何快速清空目录中的大量文件?

方法一:rsync -a --delete 空目录/ 目标目录/

方法二:find 目标目录/ [选项] -delete

方法二效率没有一高

rsync有两种常用的认证方式

1.rsync-daemon方式

2.ssh,使用rsync-daemon会有缺陷,使用ssh更灵活

inotify

  • 使用inotify通知接口,可用用来监控文件的各种变化清空,如文件存取、删除、移动、修改等。利用这一机制,可以非常方便地实现文件异动告警、增量备份,并针对目录或文件的变化及时作出响应。
  • 将inotify机制与rsync工具相结合,可以实现触发式备份(实时同步),即只要原始位置的文档发生变化,则立即启动增量备份操作;否则处于静默等待状态。这样,就避免了按固定周期备份时存在的延迟性、周期过密等问题。

  • 因为 inotify 通知机制由 Linux 内核提供,因此主要做本机监控,在触发式备份中应用时更适合上行同步

发起端配置rsync+inotify

1.修改源服务器的配置文件

bash 复制代码
vim /etc/rsyncd.conf
read only =no 这样就能在指定目录中写入
cat /var/run/rsyncd.conf#查看进程pid号
kill进程号
rsync --daemon
cat /var/run/rsyncd.pid
netstat -lntp | grep rsync

2、调整 inotify 内核参数

bash 复制代码
在Linux内核中,默认的inotify机制提供了三个调控参数:max_queue_events(监控事件队列,默认值为16384)、max_user_instances(最多监控实例数,默认值为128)、max_user_watches(每个实例最多监控文件数,默认值为8192)。当要监控的目录、文件数量较多或者变化较频繁时,建议加大这三个参数的值。
​
cat /proc/sys/fs/inotify/max_queued_events
cat /proc/sys/fs/inotify/max_user_instances
cat /proc/sys/fs/inotify/max_user_watches
​
​
vim /etc/sysctl.conf
fs.inotify.max_queued_events = 16384
fs.inotify.max_user_instances = 1024
fs.inotify.max_user_watches = 1048576
​
sysctl -p   #内核优化
​

3.安装 inotify-tools

用 inotify 机制还需要安装 inotify-tools,以便提供 inotifywait、inotifywatch 辅助工具程序,用来监控、汇总改动情况。 inotifywait:可监控modify(修改)、create(创建)、move(移动)、delete(删除)、attrib(属性更改)等各种事件,一有变动立即输出结果。

bash 复制代码
上传软件包到/opt
​
tar zxvf inotify-tools-3.14.tar.gz
cd /opt/inotify-tools-3.14
./configure
make && make install
实时监控
inotifywait -mrq -e modify,create,move,delete /var/www/html
#选项"-e":用来指定要监控哪些事件
#选项"-m":表示持续监控
#选项"-r":表示递归整个目录
#选项"-q":简化输出信息

4.在另外一个终端编写触发式同步脚本

(注意,脚本名不可包含 rsync 字符串,否则脚本可能不生效)

先用inotify监控,通过管道符号交给while read,读取到相关事件后,如果rsync未在执行则立即启动

bash 复制代码
vim /opt/inotify.sh
#!/bin/bash
INOTIFY_CMD="inotifywait -mrq -e modify,create,attrib,move,delete /root/ky33
RSYNC_CMD="rsync -azH --delete --password-file=/opt/ky33 /root/ky33 hyh@192.168.116.111::shareky33/"
#使用while、read持续获取监控结果,根据结果可以作进一步判断是否读取到输出的监控记录
$INOTIFY_CMD | while read DIRECTORY EVENT FILE
do
    if [ $(pgrep rsync | wc -l) -le 0 ] ; then
    #如果rsync未在执行,则立即启动
        $RSYNC_CMD
    fi
done
​
​
​
chmod +x inotify.sh
​
​
在源服务器里

​了解一些git的用法

需要yum -y install git

SVN、Git 代码版本控制软件,主要功能作代码版本控制,支持日志备份、数据恢复、文件同步等功能

git类型 作用
git clone 克隆代码
git add 添加文件到暂存区
git commit 提交代码
git push 推送代码到代码仓库(国际的代码仓库:github、国内的gitee、本地搭建私有的代码仓库gitlab)
git log 查看所有的git的操作日志
git pull 更新代码
git branch 管理代码分支
git checkout 切换分支
bash 复制代码
git clone https://mirror.ghproxy.com/https://github.com/otale/tale.git

使用国内的镜像去从网站上克隆代码到本地
相关推荐
B站计算机毕业设计超人1 小时前
计算机毕业设计Python+大模型中医养生问答系统 知识图谱 医疗大数据 中医可视化 机器学习 深度学习 人工智能 大数据毕业设计
大数据·人工智能·爬虫·python·深度学习·机器学习·知识图谱
GDDGHS_1 小时前
Flume和kafka的整合
大数据·kafka·flume
DolphinScheduler社区3 小时前
10月月报 | Apache DolphinScheduler进展总结
大数据
叫我二蛋3 小时前
大数据技术之Hadoop :我是恁爹
大数据·hadoop·分布式
谢李由202303220813 小时前
Hadoop 学习心得
大数据·hadoop·分布式
qq_446598043 小时前
Hadoop高可用集群工作原理
大数据·hadoop·分布式
努力的小雨4 小时前
零基础入门Hadoop:IntelliJ IDEA远程连接服务器中Hadoop运行WordCount
大数据
AC学术中心4 小时前
EI检索!2024年大数据与数据挖掘会议(BDDM 2024)全解析!
大数据·人工智能·数据挖掘
qq_446598044 小时前
集群搭建高可用
大数据
xfcloud4 小时前
2024世界职业技能大赛大数据平台搭建hadoop(容器环境)
大数据·hadoop·分布式·jdk