1.rsync 简介
rysnc 是一种备份工具。支持增量备份和差异备份。rsync 有三种备份方式,第一种是本地备份类似与 cp 命令,第二种是远程备份,类似与 scp,使用的是 ssh 传输通道(需要进行 ssh 身份验证)。第三种是守护进程模式,需要有一台 linux 主机作为服务器监听端口,其他主要通过服务器的 ip 和端口进行访问(备份)操作
2.rsync 用法
2.1 选项
rsync 有许多选项:
-n: 在不确定命令是否能按意愿执行时,务必要事先测试;-n 可以完成此功能;
-v: --verbose,详细输出模式
-q: --quiet,静默模式
-c: --checksum,开启校验功能,强制对文件传输进行校验
-r: --recursive,递归复制;
-a: --archives,归档,保留文件的原有属性
-p: --perms 保留文件的权限
-t: --times 保留文件的时间戳
-l: --links 保留文件的符号链接
-g: --group 保留文件的属组
-o: --owner 保留文件的属主
-D: --devices 保留设备文件
-H, --hard-links 保留硬链结;
-S, --sparse 对稀疏文件进行特殊处理以节省 DST 的 空间;
-e ssh: 表示使用 ssh 协议作承载
-z: 对文件压缩后传输
--progress:显示进度条
--stats: 显示如何执行压缩和传输
--delete:删除那些 DST 中有而 SRC 没有的文件,即删除 DST 中多余的文件
2.2 命令格式
Local: rsync [OPTION...] SRC... [DEST] Access via remote shell: Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST] Push: rsync [OPTION...] SRC... [USER@]HOST:DEST Access via rsync daemon: Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST] rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST] Push: rsync [OPTION...] SRC... [USER@]HOST::DEST rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST
由此语法可知,rsync 有三种工作方式:
(1).本地文件系统上实现同步。命令行语法格式为上述"Local"段的格式。
(2).本地主机使用远程 shell 和远程主机通信。命令行语法格式为上述"Access via remote shell"段的格式。
(3).本地主机通过网络套接字连接远程主机上的 rsync daemon。命令行语法格式为上述"Access via rsync daemon"段的格式。
前两者的本质是通过管道通信,即使是远程 shell。而方式(3)则是让远程主机上运行 rsync 服务,使其监听在一个端口上,等待客户端的连接。
2.3 配置文件
rsync 配置文件一般为/etc/rsyncd.conf:
fake super = yes
uid = rsync
gid = rsync
use chroot = no
max connections = 10
timeout = 600
motd file = /var/rsyncd/rsyncd.moth
pid file = /var/rsyncd/rsync.pid
lock file = /var/run/rsync.lock
log file = /var/rsyncd/rsyncd.log
dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2
[backup]
path = /backup
igonre errors
read only = false
write only = false
list = false
auth users = rsyncd_backup
secrets file = /etc/rsyncd.passwd
rsyncd.conf 配置文件常用参数说明
rsyncd.conf 参数 | 参数说明 |
---|---|
uid=rsync | rsync 使用的用户。 |
gid=rsync | rsync 使用的用户组(用户所在的组) |
use chroot=no | 如果为 true,daemon 会在客户端传输文件前“chroot to the path”。这是一种安全配置,因为我们大多数都在内网,所以不配也没关系 |
max connections=200 | 设置最大连接数,默认 0,意思无限制,负值为关闭这个模块 |
timeout=400 | 默认为 0,表示 no timeout,建议 300-600(5-10 分钟) |
pid file | rsync daemon 启动后将其进程 pid 写入此文件。如果这个文件存在,rsync 不会覆盖该文件,而是会终止 |
lock file | 指定 lock 文件用来支持“max connections”参数,使得总连接数不会超过限制 |
log file | 不设或者设置错误,rsync 会使用 rsyslog 输出相关日志信息 |
ignore errors | 忽略 I/O 错误 |
read only=false | 指定客户端是否可以上传文件,默认对所有模块为 true |
list=false | 是否允许客户端可以查看可用模块列表,默认为可以 |
hosts allow | 指定可以联系的客户端主机名或和 ip 地址或地址段,默认情况没有此参数,即都可以连接 |
hosts deny | 指定不可以联系的客户端主机名或 ip 地址或地址段,默认情况没有此参数,即都可以连接 |
auth users | 指定以空格或逗号分隔的用户可以使用哪些模块,用户不需要在本地系统中存在。默认为所有用户无密码访问 |
secrets file | 指定用户名和密码存放的文件,格式;用户名;密码,密码不超过 8 位 |
[backup] | 这里就是模块名称,需用中括号扩起来,起名称没有特殊要求,但最好是有意义的名称,便于以后维护 |
path | 这个模块中,daemon 使用的文件系统或目录,目录的权限要注意和配置文件中的权限一致,否则会遇到读写的问题 |
3.实验
3.1 本地传输
文件同步
rsync -avz /etc/fstab /data/
目录同步
rsync -avz /data /opt
data 后面加/表示将 data 下的内容同步过去 不加/表示将 data 目录同步过去
--delete 让目标目录与原目录数据同步
3.2 远程传输
备注:需要注意的是,远程传输方式使用的是 ssh 传输通道,ssh 传输通道本身传输数据加密的,是安全的,但也有几个缺点:
1.用户权限问题
2.用户身份暴露(安全隐患)
3.文件路径暴露(安全隐患)
tcp 传输过程,每传输一个数据都会有连接的建立,维护,断开过程。所以传输多个文件会比较慢
且两边都需要安装 rsync 程序。
第一次传输需要进行秘钥确定,且每次登陆需要输入密码,如不想输入密码,可生成秘钥并发送到远程主机。
使用 ssh-keygen 生成秘钥,并使用 ssh-copy-id 发送至远程主机
此时传输数据便不会提示输入密码(ssh 登陆亦是如此)
3.3 守护进程方式
守护进程方式需要一台机器作为 server 端,启动 rsync deamon 程序,监听端口,通过 ip+socket 来进行交互。
1.rpm -ql rsync 查看 rsync 是否有安装(有的 rsync 把 rsync 与 rsync-deamon 分开,需要注意下)
如果没有的话则需要安装
yum -y install rsync-deamon rsync
2.编辑配置文件
vim /etc/rsyncd.conf
3.创建程序用户
useradd -M -s /sbin/nologin rsync
chown -R rsync.rsync /backup
4.创建目录
mkdir /backup && chown -R rsync.rsync /backup
5.创建虚拟用户认证文件
echo "rsync_backup:1" > /etc/rsync.password
chmod 600 rsync.password
6.启动守护进程
systemctl start rsyncd
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于