目录
一 Rsync
1.1 rsync介绍
Rsync功能类似于scp,但是优于scp,还具有本地不同分区目录之间全量 及增量备份
1.2 rsync 参数详解
(1) -a:–archive archive mode 权限保存模式,相当于 -rlptgoD 参数,存档,递归,保持属性等。 (2) -r:–recursive 复制所有下面的资料,递归处理。 (3) -p:–perms 保留档案权限,文件原有属性。 (4) -t:–times 保留时间点,文件原有时间。 (5) -g:–group 保留原有属组。 (6) -o:–owner 保留档案所有者(root only)。 (7) -D:–devices 保留device资讯(root only)。 (8) -l:–links 复制所有的连接,拷贝连接文件。 (9) -z:–compress 压缩模式,当资料在传送到目的端进行档案压缩。 (10) -H:–hard-links 保留硬链接文件。 (11) -A:–acls 保留ACL属性文件,需要配合–perms。 (12) -P:-P参数和 --partial --progress 相同,只是为了把参数简单化,表示传进度。 (13) --version:输出rsync版本。 (14) -v:–verbose 复杂的输出信息。 (15) -u:–update 仅仅进行更新,也就是跳过已经存在的目标位置,并且文件时间要晚于要备份的文件,不覆盖新的文件。 (16) --port=PORT:定义rsyncd(daemon)要运行的port(预设为tcp 873)。 (17) --delete:删除那些目标位置有的文件而备份源没有的文件。 (18) --password-file=FILE :从 指定密码文件中获取密码。 (19) --bwlimit=KBPS:限制 I/O 带宽。 (20) --filter “-filename”:需要过滤的文件。 (21) --exclude=filname:需要过滤的文件。 (22) --progress:显示备份过程。
推送: rsync 【OPTION...】 SRC... [DEST]
拉取: rsync 【OPTION...】 [USER@HOST:SRC...] [DEST]
SRC: 源文件或者是目录
DEST: 目录的目录或者是文件
1.3. rysnc案例
[root@master ~]# rsync -avz /root/cluster/ 192.168.220.129:/root/cluster ##将家目录下的cluster目录发送到129主机下的家目录cluster目录 ##若发送端没有cluster目录则会被创建
二 Rsync+ sersync架构实战
sersync可以记录下被监听目录发生的变化(包括增加,删除,修改等)具体某一个文件或者某一个目录的名字,然后使用rysnc同步的时候,只同步发生变化的文件或者目录
2.1 创建rsync配置文件
##step1: 一般系统默认安装rsync 直接编辑配置文件即可 ## 最好不要写注释 我写注释一直报错 [root@master data]# cat /etc/rsyncd.conf uid = rsync ## 需要存在用户,也可以用root gid = rsync ## 在实际环境中,我使用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 fake super = yes [backup] path = /data ignore errors read only = false list = false auth users = rsync_backup secrets file = /etc/rsync.password
2.2 创建密码 和启动服务
##服务端 [root@master data]# useradd -s /sbin/nologin -M rsync [root@master ~]# echo "rsync_backup:yingji" > /etc/rsync.password [root@master ~]# chmod 600 /etc/rsync.password [root@master ~]# rsync --daemon ##开启服务 [root@master ~]# netstat -ntlp | grep 873 tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 3055/rsync tcp6 0 0 :::873 ls :::* LISTEN 3055/rsync [root@master data]# scp /etc/rsyncd.conf @node1:/etc ##客户端 [root@node1 ~]# echo "yingji" > /etc/rsync.password [root@node1 ~]# chmod 600 /etc/rsync.password [root@master ~]# netstat -ntlp | grep 873 tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 3055/rsync tcp6 0 0 :::873 ls :::* LISTEN 3055/rsync
2.3 实例演示
##客户端操作 [root@node1 data]# touch {1..10}.log [root@node1 data]# ll 总用量 0 -rw-r--r-- 1 root root 0 4月 12 12:55 10.log -rw-r--r-- 1 root root 0 4月 12 12:55 1.log -rw-r--r-- 1 root root 0 4月 12 12:55 2.log -rw-r--r-- 1 root root 0 4月 12 12:55 3.log -rw-r--r-- 1 root root 0 4月 12 12:55 4.log -rw-r--r-- 1 root root 0 4月 12 12:55 5.log [root@node1 data]# rsync -avzP /data/ rsync_backup@192.168.220.128::backup/ --password-file=/etc/rsync.password ##服务端查看 [root@master data]# ll 总用量 0 -rw-r--r-- 1 rsync rsync 0 4月 12 12:55 10.log -rw-r--r-- 1 rsync rsync 0 4月 12 12:55 1.log -rw-r--r-- 1 rsync rsync 0 4月 12 12:55 2.log -rw-r--r-- 1 rsync rsync 0 4月 12 12:55 3.log ##虚拟机测试 10G文件约在2min分钟内
2.4 实时备份
下载rersync安装包,解压后添加指令,修改xml配置文件,运行既可以实时同步文件
我这边未做介绍,我实际测试中,发现确实可以实时备份的,但是有一点,如果源文
件被修改,则同步端也立马修改,确实做到了实时。
*********************************************************************************************
我根据我们公司的实际情况选择方案,公司备份路径繁多,平均每人有20+以上的不同路径,使用resync需要挂载后台较多,使用较为繁琐。同时最重要的是对于文件的备份
如果源端被删除,那么立即同步则十分危险,我觉得不太适合我们公司的现在环境
*************************************************************************************************
所以还是采用手动方式去备份文件,但是为了提高工作效率,则使用shell脚本来完成作业
三 Rsync 脚本企业实战
3.1 通用脚本
#!/bin/bash date=$(date +%Y-%m-%d) sync_dirs() { local dirs=("$@") local destination="${dirs[-1]}" unset 'dirs[${#dirs[@]}-1]' for dir in "${dirs[@]}"; do if [ -d "$dir" ]; then if ! rsync -avpz "$dir" rsync_backup@192.168.10.145::backup/"$destination" --password-file=/etc/rsync.password &> logs/rsync.log; then echo "Sync of $dir failed" >> logs/error.log fi fi done } sync_dirs "/public/test/pipeline/chip-seq" \ "test_$date" sync_dirs "/public/test1/inputrc" \ "test1_$data"
##将chip-seq文件同步给10.145主机,发送到目录为/test_data ##将inputrc文件同步给10.145主机,发送到目录为/test1_data ##rsync 将输出日志发送到rsync.log中 ##rsync 将未完成的路径输出到error.log中
3.2 定时任务
crontab -e
* 23 1 * * /bin/bash rsync_bak.sh
##每一个月备运行一次脚本