标签(空格分隔): Linux 运维
Rsync(远程同步Remote synchronization) https://www.samba.org/ftp/rsync/rsync.html
backup服务器: 172.16.1.41
nfs服务器: 172.16.1.31
具有可使本地和远程两台主机之间的数据快速复制同步镜像 远程备份的功能.一个rsync相当于scp,cp,rm,并且更优秀.
增量备份:rsync通过其独特的"quick check"算法,它仅同步大小或者最后修改时间发生变化的文件或目录.也可以实现只同步一个文件里有变化的内容部分.因此性能及效率上更好.
企业工作场景说明(实时备份,定时备份): cron+rsync
用法示例(3种:本地,远程shell,daemon模式):
Local: rsync [OPTION...] SRC... [DEST]
Access via remote shell:
Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST] 如rsync -e 'ssh -p 22' -avz /etc/hsots james@10.0.0.100
Push: rsync [OPTION...] SRC... [USER@]HOST:DEST
Access via rsync daemon: 需要设置配置文件
Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST
Usages with just one SRC arg and no DEST arg will list the source files instead of copy-ing.
-a, --archive: 归档模式
-v, --verbose: 详细信息。
-z, --compress: compress file data during the transfer
-e, --rsh=COMMAND: specify the remote shell to use
-r, --recursive: 对目录递归 recurse into directories
-t, --times: preserve modification times 维持mtime
--delete: delete extraneous files from dest dirs 即删除目标文件与源不同的地方,将目标与源保持相同
-l, --links copy symlinks as symlinks
-L, --copy-links:ransform symlink into referent file/dir
-p, --perms: 保持权限preserve permissions
--exclude=PATTERN exclude files matching PATTERN
--exclude-from=FILE read exclude patterns from FILE
--bwlimit=KBPS: limit I/O bandwidth; KBytes per second 限制传输带宽为指定字节每秒.
rsync -avz --delete /dev/null /tmp/haha.txt # 将后一个参数(haha)与第一个保持一致
rsync -avz /etc/host /tmp/ (本地)
rsync -avz -e "ssh -p 22" root@192.168.131.130:/tmp/ /opt/ (通过远程shell pull)
rsync -avz -e "ssh -p 22" /tmp/ root@192.168.131.130:/tmp/ (通过远程shell push)
daemon模式服务端配置:
(1) 将一台服务器(如backup)设置为daemon端.在其上创建rsync的配置文件 /etc/rsyncd.conf并做如下编辑(可以man rsyncd.conf
):
vim /etc/rsyncd.conf 内容如下
#Rsync server
#created by huangjian 17:31 2016/5/30
##rsyncd.conf start##
#客户端以如下两行的用户权限连过来
uid = rsync
gid = rsync
#与安全相关
use chroot = no
#设置可以允许多少客户端的连接
max connections = 2000
#超时600秒即自动断开
timeout = 600
#Rsync daemon进程号存放的文件地址
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
#忽略错误
ignore errors
read only = false
#客户端对服务器没有列表查看的功能
list = false
hosts allow = 172.16.1.0/24
#host deny = 0.0.0.0/32
#相当于用来作验证的名字(不需要创建),放在secrets file中的格式为: rsync_backup:pwd.
auth users = rsync_backup
secrets file = /etc/rsync.password
##################################
[bkup] # 表示共享目录
comment = www by uangianlap 17:31 2016/5/30
#backup dir
path = /backup
(2) 在服务器端创建配置文件(/etc/rsyncd.conf)里指定uid gid的相应虚拟用户.
useradd -M -s /sbin/nologin rsync
(3) 在服务器端创建指定的密码文件并写入配置文件中定义好客户端的验证名和密码(这里是rsync_backup与oldboy),并设置密码文件只有root用户有权限
echo "rsync_backup:uangianlap" > /etc/rsync.password
chmod 600 /etc/rsync.password
(4) 在服务器端创建备份目录
mkdir /backup
chown -R rsync.rsync /backup
(5) 在服务器端启动服务(以后可以自己在/etc/init.d/下写启动服务脚本),ps -ef | grep rsync 查看服务是否开启.
rsync --daemon
netstat -lntup
#可以查看rsync默认是监听在873端口上的.
(6) 将rsync启动命令放入开机启动脚本中
echo "rsync --daemon" >> /etc/rc.local
daemon模式客户端操作:
(1) 创建密码文件/etc/rsync.password,只需要在其中填写密码即可(连接的时候带了用户(下图中的USER)).
echo "uangianlap" > /etc/rsync.password
chmod 600 /etc/rsync.password
(经测试为必须,否则--passwrod-file不起作用)
(2) 用daemon的方式进行文件的"推送"或"拉取".(在客户端操作,假设客户端备份文件放在/tmp目录)
rsync -avz /tmp/ rsync_backup@172.16.1.41::bkup
# 需要手动输入密码
或者下面这种不需要手动输入密码
rsync -avz --password-file=/etc/rsync.password /tmp/ rsync_backup@172.16.1.41::bkup
Rsync优点:
- 增量备份同步,支持socket(daemon),集中备份
Rsync缺点:
- 大量小文件同步的时候,比对时间较长,有时rsync进程停止.
解决: 打包同步 或 drbd(文件系统同步复制block) - 同步大文件, 10G这样的大文件有时也会有问题,中断.未完全同步前,是隐藏文件.