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/