文件同步工具rsync

文章目录

作用

rsync是linux系统下的数据镜像备份工具。使用快速增量备份工具Remote Sync可以远程同步,支持本地复制,或者与其他SSH、rsync主机同步

特性

快速:第一次同步时 rsync 会复制全部内容,但在下一次只传输修改过的文件。rsync 在传输数据的过程中可以实行压缩及解压缩操作,因此可以使用更少的带宽。

安装命令

powershell 复制代码
yum install -y rsync

服务端启动

  1. 修改配置文件在/etc/rsyncd.conf,开发
powershell 复制代码
[ftp]
    path = /soft/srcRsync
  1. 启动命令:rsync --daemon
  2. 在另一台机器查看源机器的文件:rsync --list-only 192.168.1.123::ftp/
  3. 在目的机器同步源机器的文件:rsync -avz 192.168.1.123::ftp/ /soft/dstRsync
    说明:
    -a 参数,相当于-rlptgoD,-r 是递归 -l 是链接文件,意思是拷贝链接文件;-p 表示保持文件原有权限;-t 保持文件原有时间;-g 保持文件原有用户组;-o 保持文件原有属主;-D 相当于块设备文件;
    -z 传输时压缩;
    -P 传输进度;
    -v 传输时的进度等信息,和-P有点关系
  4. 目的机器拉取时也删除源机器没有的文件加上--delete:rsync -avz --delete --password-file=/etc/rsyncd.pwd.client sgg@192.168.1.123::ftp/ ./

增加安全认证及免密登录

  1. 在源机器上创建文件:echo "sgg:111" >> /etc/rsyncd.pwd
  2. 修改源机器上的配置文件加上:auth users = sgg secrets file = /etc/rsyncd.pwd
  3. 设置安全认证后,查询源机器文件的命令需要加上账号rsync --list-only sgg@192.168.1.123::ftp/
  4. 设置目的机器的密码文件,可以免输入密码了:rsync --list-only --password-file=/etc/rsyncd.pwd.client sgg@192.168.1.123::ftp/

实时推送源服务器配置

将目的服务器的配置上账号密码,在源服务器上配置上目的服务器的密码

  1. 在目的机器配置设置账号密码,如上在源机器的操作
  2. 在源机器配置目的机器的密码,如上在目的机器的操作
  3. 配置目的服务器的配置文件添加上read only = no, 和uid = root gid = root,如果不配置read only = no会报read error: Connection reset by peer (104),如果不加uid = root gid = root会报failed to set permissions on "/test2.txt" (in ftp): Operation not permitted (1)
  4. 执行推送命令即可:rsync -avz --password-file=/etc/rsyncd.pwd.client /soft/srcRsync/ sgg@dstIp::ftp/

结合inotify实现实时推送

Inotify 是一个 Linux特性,它监控文件系统操作,比如读取、写入和创建。Inotify 反应灵敏,用法非常简单,并且比 cron 任务的繁忙轮询高效得多。学习如何将 inotify 集成到您的应用程序中,并发现一组可用来进一步自动化系统治理的命令行工具

参数详解

powershell 复制代码
-v, --verbose 详细模式输出
-q, --quiet 精简输出模式
-c, --checksum 打开校验开关,强制对文件传输进行校验
-a, --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD
-r, --recursive 对子目录以递归模式处理
-R, --relative 使用相对路径信息
-b, --backup 创建备份,也就是对于目的已经存在有同样的文件名时,将老的文件重新命名为~filename。可以使用--suffix选项来指定不同的备份文件前缀。
--backup-dir 将备份文件(如~filename)存放在在目录下。
-suffix=SUFFIX 定义备份文件前缀
-u, --update 仅仅进行更新,也就是跳过所有已经存在于DST,并且文件时间晚于要备份的文件。(不覆盖更新的文件)
-l, --links 保留软链结
-L, --copy-links 像对待常规文件一样处理软链接
--copy-unsafe-links 仅仅拷贝指向SRC路径目录树以外的链接
--safe-links 忽略指向SRC路径目录树以外的链接
-H, --hard-links 保留硬链接
-p, --perms 保持文件权限
-o, --owner 保持文件属主信息
-g, --group 保持文件属组信息
-D, --devices 保持设备文件信息
-t, --times 保持文件时间信息
-S, --sparse 对稀疏文件进行特殊处理以节省DST的空间
-n, --dry-run显示哪些文件将被传输
-W, --whole-file 拷贝文件,不进行增量检测
-x, --one-file-system 不要跨越文件系统边界
-B, --block-size=SIZE 检验算法使用的块尺寸,默认是700字节
-e, --rsh=COMMAND 指定使用rsh、ssh方式进行数据同步
--rsync-path=PATH 指定远程服务器上的rsync命令所在路径信息
-C, --cvs-exclude 使用和CVS一样的方法自动忽略文件,用来排除那些不希望传输的文件
--existing 仅仅更新那些已经存在于DST的文件,而不备份那些新创建的文件
--delete 删除那些DST中SRC没有的文件
--delete-excluded 同样删除接收端那些被该选项指定排除的文件
--delete-after 传输结束以后再删除
--ignore-errors 即使出现IO错误也进行删除
--max-delete=NUM 最多删除NUM个文件
--partial 保留那些因故没有完全传输的文件,以是加快随后的再次传输
--force 强制删除目录,即使不为空
--numeric-ids 不将数字的用户和组ID匹配为用户名和组名
--timeout=TIME IP超时时间,单位为秒
-I, --ignore-times 不跳过那些有同样的时间和长度的文件
--size-only 当决定是否要备份文件时,仅仅察看文件大小而不考虑文件时间
--modify-window=NUM 决定文件是否时间相同时使用的时间戳窗口,默认为0
-T --temp-dir=DIR 在DIR中创建临时文件
--compare-dest=DIR 同样比较DIR中的文件来决定是否需要备份
-P 等同于 --partial
--progress 显示备份过程
-z, --compress 对备份的文件在传输时进行压缩处理
--exclude=PATTERN 指定排除不需要传输的文件模式
--include=PATTERN 指定不排除而需要传输的文件模式
--exclude-from=FILE 排除FILE中指定模式的文件
--include-from=FILE 不排除FILE指定模式匹配的文件
--version 打印版本信息
--address 绑定到特定的地址
--config=FILE 指定其他的配置文件,不使用默认的rsyncd.conf文件
--port=PORT 指定其他的rsync服务端口
--blocking-io 对远程shell使用阻塞IO
-stats 给出某些文件的传输状态
--progress 在传输时显示传输过程
--log-format=formAT 指定日志文件格式
--password-file=FILE 从FILE中得到密码
--bwlimit=KBPS 限制I/O带宽,KBytes per second
-h, --help 显示帮助信息

学些过程中遇到的问题

  1. 查看源机器的文件提示@ERROR: chroot failed,原因是服务器端的目录不存在或无权限。创建目录或者授权即可
  2. 设置安全认证后,查看源机器文件提示 auth failed on module ftp,原因是没有修改/etc/rsyncd.pwd文件的权限,需要修改为600的权限
相关推荐
编程乐趣7 分钟前
自学C#,要懂得用好对象浏览器
windows·.net
阿巴~阿巴~9 分钟前
Linux基本命令篇 —— alias命令
linux·服务器·bash
xkroy22 分钟前
网络协议概念与应用层
网络
筏.k34 分钟前
C++ 网络编程(14) asio多线程模型IOThreadPool
网络·c++·架构
qq_3938282243 分钟前
办公文档批量打印器 Word、PPT、Excel、PDF、图片和文本,它都支持批量打印。
windows·word·powerpoint·excel·软件需求
好名字更能让你们记住我1 小时前
Linux多线程(十二)之【生产者消费者模型】
linux·运维·服务器·jvm·windows·centos
门思科技1 小时前
设计可靠 LoRaWAN 设备时需要考虑的关键能力
运维·服务器·网络·嵌入式硬件·物联网
单线程的Daniel1 小时前
Dubbo RPC 序列化问题记录
windows·rpc·dubbo
小锋学长生活大爆炸1 小时前
【知识】RPC和gRPC
服务器·网络协议·rpc
小高不会迪斯科1 小时前
MIT 6.824学习心得(2) 浅谈多线程和RPC
网络·网络协议·rpc