Rsync命令文件定时同步
Rsync命令文件定时同步
Rsync 是一个
开源的快速备份工具,是Linux和UNIX操作系统默认安装的组件之一,可在不同主机间镜像同步整个目录,并支持增量备份文件传输,保持链接和权限,采用优化的同步算法,传输前执行压缩,适用于异地备份,镜像服务器等应用。Rsync 官网地址:rsync.samba.org/
1. Environment
-
服务器2台
Centos7_x86_64( 源服务器)Rsync同步源:10.10.10.21
Centos7_x86_64(目的服务器)Rsync客户端:10.10.10.36
2. 安装rsync
-
在线安装
yum -y install rsync -
离线安装
# 离线环境下载安装包 # rpm下载工具 yum install rsync zip unzip # 下载freetype-devel及其依赖 mkdir -pv /home/rpm-rsync yumdownloader rsync zip unzip --resolve --destdir=/home/rpm-rsync # 目录压缩成zip文件 zip -r /opt/rpm-rsync.zip /home/rpm-rsync # 上传依赖rpm-rsync.zip 至 /opt/ cd /opt # 解压到指定目录 unzip -d /home /opt/rpm-rsync.zip # 从本机目录 /home/rpm-rsync 安装rsync包及依赖 yum localinstall /home/rpm-rsync/*.rpm -y
3. rsync备份工具
-
基本用法
大多数的备份程序要求指定原始位置、目标位置,rsync 命令其实跟 cp 命令相似。
比如:将文件
/etc/fstab、目录/boot/grub同步备份到/opt目录下。-r:选项表示递归整个目录、-l:选项表示备份链接文件。rsync /etc/fstab /opt rsync -rl /etc/fstab /boot/grub /opt -
rsync命令格式
基本格式:rsync [选项] 原始位置 目标位置 -
rsync 命令常用备份选项
-r:递归模式,包含目录及子目录中的所有文件。-l:对于符号链接文件仍复制为符号链接文件。-v:显示同步过程的详细信息。-a:归档模式,保留文件的权限、属性等信息,组合选项等于-rlptgoD。-z:在传输文件时进行压缩。-p:保留文件的权限标记。-t:保留文件的时间标记。-g:保留文件的属组标记。(仅超级用户使用)-o:保留文件的属主标记。(仅超级用户使用)-H:保留硬连接文件。-A:保留 ACL 属性信息。-D:保留设备文件及其他特殊文件。-- delete:删除目标位置有而原始位置没有的文件。--checksum:根据校验和(而不是文件大小、修改时间)来决定是否跳过文件。配置源的表示方法
执行远程同步任务时,rsync 命令需指定同步源服务器中的资源位置。
两种表示方法
用户名@主机地址::共享模块名(两个冒号分隔形式)rsync://用户名@主机地址/共享模块名(URL 地址形式)
使用真实用户测试
rsync服务如果
ssh端口修改了,需加上端口。命令格式:rsync -参数 文件 -e ‘ssh -p 端口号’ 用户名@ip:目录路径# rsync -avz abc '-e ssh -p 22' root@linuxserver.com:/tmp // 实操命令格式 root@linuxserver.com's password: //输入 linuxserver 设备的 root 密码 sending incremental file list abc sent 64 bytes received 31 bytes 27.14 bytes/sec total size is 0 speedup is 0.00 -
示例
源服务器 -> 目的服务器
# 源服务器10.10.10.21上运行 rsync -rav --progress <源目录>/ -e 'ssh -p 22' root@<目的IP>::<目的目录>/ # rsync -rav --progress /home/tmp/ -e 'ssh -p 22' root@10.10.10.36::/home/tmp/目的服务器 <- 源服务器
# 目标服务器10.10.10.36上运行 rsync -rav --progress -e 'ssh -p 22' root@<源IP>::<源目录>/ <目的目录>/ # rsync -rav --progress -e 'ssh -p 22' root@10.10.10.21::/home/tmp/ /home/tmp/
5. 定时同步
在实际生产环境中的备份工作,通常都是重复性的,那么我们可以设置个定时任务来完成备份操作。比如:每天凌晨04:00对服务器的tmp共享模块同步,并下载到本地/mnt/jacktian目录下,通过crond服务来完成。
这种同步过程中,我们不想输入密码,那么需创建一个密码文件,保存rsync_backup用户的密码。
-
创建rsync密码文件
# rsync密码文件 mkdir -pv /home/rsync_config/ # 编辑密码文件 vim /home/rsync_config/rsync_<IP>.password # vim /home/rsync_config/rsync_10_10_10_21.password # vim /home/rsync_config/rsync_10_10_10_36.password -
保存用户密码
<user>:<password> # rsync_backup:123.com # root:env015439 # root:UdQHxmZ5 -
赋予权限
chmod 600 /home/rsync_config/rsync_<IP>.password # chmod 600 /home/rsync_config/rsync_10_10_10_21.password # chmod 600 /home/rsync_config/rsync_10_10_10_36.password -
在执行 rsync 同步时使用选项
--password-file=/etc/rsync.password指定。每分钟一次:* * * * *30分钟一次:0 0/30 * * *每小时一次:0 0 0/1 * * ?12小时一次:0 0 0/12 * *每天凌晨2点一次:0 0 2 ? *crontab -e 00 04 * * * /usr/bin/rsync -az --delete --password-file=/home/rsync_config/rsync_10_10_10_21.password@rsync_backup@<源IP>::<源目录>/ <目的目录>/service crond restart chkconfig crond on -
运行命令
源服务器 -> 目的服务器
# 源服务器上运行 rsync -rav --progress <源目录>/ --password-file=rsync_<IP>.password@root@<目的IP>::<目的目录>/ # rsync -rav --progress /home/tmp/ --password-file=/home/rsync_config/rsync_10_10_10_36.password@root@10.10.10.36::/home/tmp/目的服务器 <- 源服务器
# 目标服务器上运行 rsync -rav --progress --password-file=/etc/rsync_<IP>.password@root@<源IP>::<源目录>/ <目的目录>/ # rsync -rav --progress --password-file=/home/rsync_config/rsync_10_10_10_21.password@root@10.10.10.21::/home/tmp/ /home/tmp/