ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# rsync操作和部署 ## 1 基础知识 ### 1.1 Rsync简介 可实现全量及增量、本地或远程的数据同步备份的工具 官网:https://www.samba.org/ftp/rsync/rsync.html 相当于cp(本地复制)、scp(远程复制)、rm(删除)命令的合体但比这三个命令更优秀 既能够备份数据内容,也能够备份属性信息 ### 1.2 Rsync优缺点: 1) 优点: * 支持拷贝特殊文件如链接文件,设备等 * 可以有排除指定文件或目录同步的功能,相当于打包命令tar的排除功能 * 可以做到保持元文件或目录的权限、时间、软硬链接、属主、组等所有属性均不变 * 可时间增量同步、即只同步发生变化的数据,因此数据的效率很高 * 可以使用rcp,rsh,ssh等方式来配合传输文件达到加密传输 * 可以通过socket(守护进程方式)传输文件和数据(服务端和客户端) * 支持匿名的、认证的(无需系统用户)进程模式传输,可方便安全的进行数据备份及镜像 2) 缺点: * 大量小文件同步的时候,时间较长,有时候rsync进程可能会停止 * 同步10G这样的大文时时,可能会中断,未完整同步前,是隐藏文件 * rsync本身不对数据加密,需配合ssh等实现加密 ### 1.3 Rsync的工作方式 * 单个主机本地之间的数据传输(类似于cp) * 借助rcp,ssh等通道来传输数据(类似于scp) * 以守护进程(socket)的方式来传输数据(服务端和客户端) ## 2 普通用法 ### 2.1 基本参数 常用参数:avz或az ```sh -v 详细模式输出,传输时的进度等信息 -z 传输时进行压缩以提高传输效率。--compress-level=NUM可按级别压缩 -a 归档模式,表示以递归方式传输文件,并保持文件说有属性,等于rtopgDI -r 对子目录以递归传递,即目录下的所有目录都同样传输,注意是小写r -t 保持稳健时间信息 -o 保持文件属主信息 -p 保持文件权限 -g 保持文件属组信息 -P 显示同步的过程及传输的进度等信息 -D 保持设备文件信息 -l 保留软链接 -e 使用指定的shell程序替代传输用的rsh管道,如ssh --exclude=PATTERN 指定排除不需要传输的文件模式(和tar参数一样) --exclude-from=file 指定排除某个目录中的某个文件(和tar参数一样) --bwlimit=RATE 限制传输时的带宽(避免全部占用完带宽) --partial 断点续传 --delete 让目标目录和源目录数据保持一致(不一致会删除) ``` >说明,rsync备份时,如果备份/tmp,表示备份目录名和目录下的内容,如果备份/tmp/,表示只备份目录下的内容 ### 2.2 普通模式 1) 本地模式语法: ```sh rsync [OPTION...] 源路径 目的路径 ``` 2) 远程模式语法: ```sh 拉: rsync [OPTION...] [远端用户@]主机名或IP:源路径 目标路径 推: rsync [OPTION...] 源路径 [远端用户@]主机名或IP:目标路径 ``` >PS1:前面的是原路径,后面的是目标路径,推和拉的区别仅仅是远端地址所在的位置 >PS2:远端用户名可省略,省略代表用本机当前用户去连接 3) 应用举例 * 备份本机hosts文件到到tmp目录 ```sh rsync -avz /etc/hosts /tmp ``` * 推送本机hosts文件到另外一台主机tmp目录 ```sh rsync -avz /etc/hosts root@172.16.1.31:/tmp/ ``` * 拉取远端主机hosts文件本机tmp目录 ```sh rsync -avz root@172.16.1.31:/etc/hosts /tmp/ ``` * 配合ssh加密传输数据[-e] ```sh rsync -avz -e 'ssh -p 22' /etc/hosts root@172.16.1.31:/tmp/ ``` * 同步时排除某些文件[--exclude] ```sh rsync -avz --exclude=a.txt /backup/ root@172.16.1.41:/tmp/ rsync -avz --exclude-from=paichu.txt /backup/ root@172.16.1.41:/tmp/ --exclude参数使用相对路径,可以排除单个和多个文件 也可以用--exclude-from=paichu.txt,排除这个文件中指定的文件 ``` * 无差异同步[--delete] ```sh rsync -avz --delete /backup/ root@172.16.1.41:/tmp/ --delete会把服务器上有而本地没有的数据全部删除,非常危险,慎用慎用 ``` * 限速[--bwlimit] ```sh sync -avz --bwlimit=100 /backup/ root@172.16.1.41:/tmp/ ``` ## 3. **守护进程模式(重点)** ### 3.1 基础说明 搭建服务端启动守护进程(873端口),然后在客户端推或拉数据进行备份,比普通远程模式好的地方在于,免交互的备份数据,配合定时任务食用更加. **语法** ``` 拉: rsync [OPTION...] [USER@]HOST::SRC DEST 推: rsync [OPTION...] SRC [USER@]HOST::DEST ``` >PS:推拉的区别同普通模式,用的更多的是推模式,因为拉的模式客户端数量很大时,会非常消耗服务端资源,而推模式请求由客户端发起,不占用服务端资源 ### 3.2 服务器端配置过程: 1) 检查和安装rsync ```sh rpm -qa rsync yum install rsync -y ``` 先检查是否有安装,如果有则安装 2) 添加rsync服务的用户 ```sh useradd -s /sbin/nologin -M rsync id rsync ``` 3) 生成rsyncd.conf配置文件并写入内容 ```sh cat >/etc/rsyncd.conf <<"EOF" ##rsyncd.conf start## 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 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 noah" path = /backup read only = false ##rsync_conf_____end## EOF ``` 关于配置文件各行的说明见文档最后 4) 创建共享目录并授权rsync服务管理 ```sh mkdir /backup -p chown -R rsync.rsync /backup/ ``` 5) 创建认证文件并修改权限 ```sh echo "rsync_backup:noah123" >/etc/rsync.password cat /etc/rsync.password chmod 600 /etc/rsync.password ls -l /etc/rsync.password ``` 此处的用户和密码,非系统中的用户和密码 6) 启动rsync服务加入开机启动 ```sh rsync --daemon netstat -lntup|grep 873 echo "/usr/bin/rsync --daemon" >>/etc/rc.local tail -1 /etc/rc.local ``` ### 3.3 客户端配置 1) 检查和安装rsync ```sh rpm -qa rsync yum install rsync -y ``` 2) 生成链接服务器需要的密码文件 ```sh echo "noah123" >/etc/rsync.password chmod 600 /etc/rsync.password ``` #只需要密码不需要用户名 3) 同步数据(推送) ```sh rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password ``` 提示:ip后面跟的backup是服务器配置文件中的模块名,不是备份路径 ## 4 配置文件说明 1) 配置文件整体说明 ```sh uid = rsync #用户,远端的客户机使用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 #忽略错误 list = false #不允许列表(ls) 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 noah" 模块描述信息 path = /backup #服务器提供的共享目录 read only = false #可写 ``` 注意不要在配置文件中某一行后面用#号写注释,识别不了的,注释用的#号必须写在行首 2) 黑白名单三种情况说明: * 只有白名单,白名单网段或主机信息允许。其余阻止 * 只有黑名单,黑名单网段或主机信息阻止,其余允许 * 黑白名单都有,相当于只有黑名单的方式 建议使用白名单方式