28Rsync免密传输与定时备份

rsync免密码交互传输

方法一:使用--password参数

在rsync语句最后加上--password-file=密码文件,即可自动提取密码文件中的密码

bash 复制代码
创建密码文件
[root@123456 ~]# echo 123456 > rsync.pass

修改密码文件权限
[root@123456 ~]# chmod 600 rsync.pass 

使用--password参数
[root@123456 ~]# rsync -avz 123 rsync_backup@192.168.74.129::backup --password-file=/root/rsync.pass
sending incremental file list

sent 48 bytes  received 16 bytes  128.00 bytes/sec
total size is 0  speedup is 0.00

方法二:使用rsync的内置变量RSYNC_PASSWORD

在执行rsync推送的过程中先查找RSYNC_PASSWORD 里面是否存在密码,默认里面为空,如果没有会提示让用户输入密码,如果有直接使用变量中的密码

注意:直接执行 RSYNC_PASSWORD=123456 只在当前 shell 会话生效,若 rsync 命令在子进程中执行(某些情况下会发生),可能无法继承该变量。

解决方法:使用export 定义RSYNC_PASSWORD为全局变量

bash 复制代码
[root@123456 ~]# export RSYNC_PASSWORD=123456
[root@123456 ~]# rsync -avz 123 rsync_backup@192.168.74.129::backup
sending incremental file list

sent 48 bytes  received 16 bytes  128.00 bytes/sec
total size is 0  speedup is 0.00

rsync --delete参数

作用:无差异同步

案例1:当前处于192.168.74.128

把192.168.74.128的home目录同步到192.168.74.129的home目录

案例2:当前处于192.168.74.128

把192.168.74.129的home目录同步到192.168.74.128的home目录

rsync 对路径末尾是否带 / 非常敏感,直接决定了 "同步目录本身" 还是 "同步目录内的内容":

  • 源路径不带 /:会将整个源目录(包括目录本身)同步到目标目录下。
  • 源路径带 /:只会将源目录内的内容(文件 / 子目录)同步到目标目录下,不会创建额外的目录。
bash 复制代码
[root@123456 home]# rsync -avz --delete  192.168.74.129:/home/ /home

总结就是,--delete 后面跟的是谁,就是谁不动,另一个同步成这个

如果遇到电脑中病毒,或者文件被修改损坏,即可把数据还原

--bwlimit 带宽限速

限制传输速度

root@123456 home\]# rsync -avz --delete --bwlimit=1KB 192.168.74.129:/home/ /home ## Rsync备份案例 ### 客户端需求: 1.客户端提前准备存放的备份的目录,目录规则如下: 以主机名称IP地址和时间命名 2.客户端在本地打包备份存放至创建的目录中 3.为备份文件做一个md5校验文件 4.把校验文件和备份文件发送至备份服务器 5.客户端本地保留最近7天的数据, 避免浪费磁盘空间 ```bash 1.客户端提前准备存放的备份的目录,目录规则如下: 以主机名称IP地址和时间命名 DATE=date +%F-%H-%M dir=`hostname`_`hostname -I`_$Date mkdir -p /backup/$d 2.客户端在本地打包备份存放至创建的目录中 [root@123456 ~]# tar -zcvf /backup/$dir/etc_$DATE.tar.gz /etc/hosts $>/dev/null 3.为备份文件做一个md5校验文件 [root@123456 ~]# md5sum /backup/$dir/*.tar.gz >/backup/$dir/md5.log 4.把校验文件和备份文件发送至备份服务器 [root@123456 ~]# rsync -avz /backup/$dir/ rsync_backup@192.168.74.129::backup 5.删除七天外的文件节省空间 [root@123456 ~]# find /backup/ -mtime +7|xargs rm -rf ``` 客户端每天凌晨1点定时执行该脚本 ### ![](https://i-blog.csdnimg.cn/direct/5cc9090b83ed417eb1f4a2914f56cf57.png) ### 服务端需求: 1.服务端部署rsync,用于接收客户端推送过来的备份数据 2.服务端需要每天校验客户端推送过来的数据是否完整 3.服务端需要每天校验的结果通知给管理员 4.服务端仅保留6个月的备份数据,其余的全部删除 ```bash 1.服务端需要每天校验客户端推送过来的数据是否完整 [root@test backup]# cat check.sh DATE=`date +%F-%H-%M` ho=123456_192.168.74.128_$DATE md5sum -c /backup/$ho/md5.log > /backup/$ho/$DATE.log 2.将校验后的结果发送到邮箱 mail -s "$Date 检查结果" 123456787@qq.com < /backup/$ho/$DATE.log &>/dev/null 3.删除180天前的数据 find /backup -mtime +180|xargs rm -rf ``` ![](https://i-blog.csdnimg.cn/direct/7d2ea2a18ac44812a413439013b2fa37.png) 客户端备份5分钟后,执行一次检查脚本 ![](https://i-blog.csdnimg.cn/direct/ca67d3ebf0374d14a21ab1de2a0104cf.png) 这是我的个人学习笔记,主要用于记录自己对知识点的理解和梳理。由于目前仍在学习探索阶段,内容中难免存在理解偏差或表述疏漏,恳请各位大佬不吝赐教,多提宝贵意见~ 若有不同看法,欢迎理性交流探讨,感谢包容与指正!

相关推荐
GGGGGGGGGGGGGG.11 分钟前
CI/CD 全链路实践:从 Git 基础到 Jenkins + GitLab 企业级部署
运维·git·ci/cd·云原生·gitlab·jenkins
6v6-博客8 小时前
P2P 远程桌面工具|免费开源内网穿透远程软件
运维·服务器
deeper_wind8 小时前
k8s-容器化部署论坛和商城服务(小白的“升级打怪”成长之路)
linux·运维·容器·kubernetes
勇往直前plus9 小时前
VMware centos磁盘容量扩容教程
linux·运维·centos
qq_4419960510 小时前
SSH 反向隧道:快速解决服务器网络限制
服务器·网络·ssh
政安晨10 小时前
Ubuntu 服务器无法 ping 通网站域名的问题解决备忘 ——通常与网络配置有关(DNS解析)
linux·运维·服务器·ubuntu·ping·esp32编译服务器·dns域名解析
007php00711 小时前
Jenkins+docker 微服务实现自动化部署安装和部署过程
运维·数据库·git·docker·微服务·自动化·jenkins
路溪非溪12 小时前
嵌入式Linux驱动开发杂项总结
linux·运维·驱动开发
2501_9200470312 小时前
nginx-限速-限制并发连接数-限制请求数
运维·nginx
Neolock12 小时前
Linux应急响应一般思路(三)
linux·web安全·应急响应