Linux

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > Linux > Linux下rsync(本地、远程)文件同步

Linux下rsync(本地、远程)文件同步方式

作者:罗德斯

这篇文章主要介绍了Linux下rsync(本地、远程)文件同步方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

rsync介绍

sync同步:

刷新文件系统缓存,强制将修改过的数据块写入磁盘,并且更新超级快。

一般重启系统前执行sync命令

rsync特点

1.可以镜像保存整个目录树和文件系统

2.可以保留原有的权限,owner,group,时间,软硬链接,文件属性等信息

3.传输效率高,只比较变化的

4.支持匿名传输,也可以做验证,加强安全

rsync的选项说明

用法

1.本地同步:

rsync -a 源目录或文件 目标目录或文件
例如:
rsync -a /dir1/ /dir2/     #dir1下所有文件同步到dir2下

2.远程同步:

rsync -av root@192.168.1.77:/etc/hosts /dir1/     #j将192.168.1.77服务器/etc/hosts文件拷贝到本地/dir1文件夹下

默认是需要输入密码才能同步,因为rsync基于ssh服务

注:免密登录,这只密钥对

3.将rsync作为服务,进行同步(远程服务器端进行如下配置)

创建配置文件:touch /etc/rsyncd.conf

编辑/etc/rsyncd.conf

[ava]             #ava为模块名
log file = /var/log/rsync.log
path=/dir1        #path为同步目录
uid = root       不设置uid和gid的话会报错:有部分文件同步失败,提示:`permission denied`      
gid = root

启动:rsync --daemon

验证是否启动:

netstat -nltup | grep rsync   #可以看到端口号是873

手动进行备份操作:

本地端执行同步,从192.168.1.77同步模块名为ava的文件到本地/tmp/目录下:

rsync -av root@192.168.1.77::ava /tmp/

上述命令是手动实现备份功能,如需自动备份看下:

自动备份:

1.编写脚本

vim rsync_ava.sh

脚本内容:

#!/bin/bash
rsync -av root@192.168.1.77::ava /tmp/ &>/dev/null

给脚本添加可执行权限

chmod +x rsync_ava.sh

2.执行定时任务

编写计划

crontab -e
03 01 * * * 脚本路径      #每天1时3分执行备份脚本

查询定时计划:

crontab -l

拓展

实时同步备份(服务端有文件改变就备份):rsync+inotify

1.安装inotify软件

tar xf inotify-tools-3.13.tar.gz -C /usr/src/
cd /usr/src/inotify-tools-3.13/
./configure
make
make install

安装后会产生两条命令:

/usr/local/bin/inotifywait        #等待
/usr/local/bin/inotifywatch     #看守

2.编写脚本实现同步

#!/bin/bash
/usr/local/bin/inotifywait -mrq -e modify,delete,create,attrib,move /dir1
| while read events
			do
				rsync -a --delete /dir1 /dir2/
				echo "'date +%F\ %T'出现事件$events"  >> /var/log/rsync.log
2>&1
		done

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文