rsync 优点:
2、支持socket(daemon模式),集中备份,不同服务器推送;
rsync 缺点:
1、大量小文件对比时间长;(打包后同步,drbd文件系统同步复制block或者由程序代码控制写两份)
2、rsync进程停止;
3、同步大文件,未同步完成前为隐藏文件,中断的话会占用空间;
本地增量同步,与cp格式用法基本一致,加--delete参数会保持文件夹文件完全一致
rsync -avz /tmp/ /tmp_test/
通过ssh隧道同步
rsync -avz -e 'ssh -p 22' /tmp root@x.x.x.x:/tmp
rsync客户端命令参数
-v 显示进度
-z 传输时压缩,提高传输效率
-e 通道
--exclude 排除
rsync daemon模式服务端:
1、创建出rsync服务端的配置文件
touch /etc/rsyncd.conf &&\
cat >>/etc/rsyncd.conf<<eof
#Rsync server
#created by babyplus 2016-06-16
##rsycnd.conf start##
#客户端连过来具备的权限
uid = rsync
gid = rsync
#安全相关,一般关闭
use chroot = no
#并发量
max connections = 2000
#超时等待
timeout = 600
#进程号的文件,每个进程都有一个进程号
pid file = /var/run/rsyncd.pid
#锁文件
lock file = /var/run/rsync.lock
#日志文件
log file = /var/log/rsyncd.log
ignore errors
#可否写入,改为ture只能拉不能推
read only = false
#可以查看服务端有什么文件
list = false
#允许连接的客户端
hosts allow = 10.0.0.0/24
hosts deny = 0.0.0.0/32
#启用虚拟用户作为连接用户 /etc/rsync.password里配置的账号
auth users = rsync_backup
secrets file = /etc/rsync.password
################################################
[backup]
comment = test 2016-06-16
#要共享的目录,rw属性
path = /backup
eof
2、创建傀儡用户,当客户端连上,就是rsync权限
useradd rsync -s /sbin/nologin -M
id rsync
mkdir -p /backup &&chown -R rsync.rsync /backup/
touch /etc/rsync.password &&\
echo "rsync_backup:11111111" >/etc/rsync.password
chmod 600 /etc/rsync.password
6、启动服务,无启动脚本,需要自己写,--address指定ip地址
rsync --daemon --address=x.x.x.x
7、查看服务是否开启
lsof -i :873
8、加入开机启动
rsync daemon模式客户端:
1、创建密码文件
touch /etc/rsync.password &&\
echo "11111111" >/etc/rsync.password &&\
chmod 600 /etc/rsync.password
2、PUSH:
rsync -avz /tmp/ rsync_back@x.x.x.x::backup --password-file=/etc/rsync.password
3、PULL:
#
客户端打包推送:
1、打包文件
cd / && tar zcvf conf_$(date_+%F).tar.gz /var/spool/cron/root /etc/rc.local /servers/scripts /etc/sysconfig/iptables
(未测试)制作定时任务:
cat >/script/test.sh<<eof
#!/bin/sh
#backup
IP=$(ifconfig eth1|awk -F '[ :]+' '{print $4}')
zipDate=$(date +%F).tar.gz
Path=/backup/$IP
mkdir -p $Path
cd / &&\
#定时任务里不加v,不显示执行信息
tar zcf $Path/log_$(zipDate) /app/logs
#...
#to back server 目录后面需要加/
rsync -avz $Path/ rsync_back@x.x.x.x::backup --password-file=/etc/rsync.password
#delete templete
find /backup -type f -name "*.tar.gz" -mtime +7|xargs rm -f
eof