共计 2600 个字符,预计需要花费 7 分钟才能阅读完成。
1 什么是 rsync?(理论)
简而言之主要特点就是实现全量与增量,本地和远程的数据备份工具,同样适用于 indows。
官网 http://www.samba.org/ftp/rsync/rsync.html
rsync 在本地目录之间还能实现 rm 删除的功能
他根据文件和修改时间大小来同步
也可以根据权限不同来备份,需指定参数
2 特点(理论)
能有排除功能
能保持源目录和文件的时间权限和软连接属主等属性
能配合 ssh 通道来加密
可以作为服务,让客户端来连
支持匿名和支持认证
3 工作方式(理论)
本地之间传 类似 cpmingl
借助 ssh
守护进程方式(重要)
4 实例用途(操作)
(1)客户端模式
本地环境:
传文件 rsync /etc/hosts /opt
传目录 rsync -avz /opt /mnt <== 相当于 cp -ap /opt /mnt
## 注意 /opt 后的 / 加和不加的区别,很重要加了 / 只是把下面的文件过去,不加的话连自己 opt 都过去了,如果记不住就自己测试下
远程环境:
推送(传过去):rsync -avz /etc/hosts -e“ssh -p 22000”root@64.78.172.119:~
拉取(从远端主机传过来):rsync –avz root@64.78.172.119:~/test.txt /etc/ -e“ssh -p 22000”
## 记忆命令方法:本地目录 —》》远程 —-》通过什么方式 -e“ssh -p22000”
(2)守护进程模式
配置服务端 rysnc
Vi /etc/rsyncd.conf 里的内容
uid = rsync
gid = rsync
use chroot = no
max connections = 200
timeout = 100
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
[oldboy]
path = /oldboy/
ignore errors
read only = false
list = false
hosts allow = 199.101.117.0/24
hosts deny = 0.0.0.0/32
auth users = rsync_backup
secrets file = /etc/rsync.password
## 如果在 windows 下编辑或者复制的编码到 linux 下就最好用这个命令处理下 Dos2unix /etc/rsyncd.conf
mkdir /oldboy
useradd rsync -s /bin/nologin –M ## 新建个账户(和配置文件的 uid-gid 对应,此账户属性不能登录并且没目录)
chown -R rsync.rsync /oldboy ##(重要)
echo“rsync_backup:oldboy”> /etc/rsync.password ##rsync_backup 是虚拟账户,到时候客户端连接就用这个账户和密码 oldboy。
chmod 600 /etc/rsyncd.conf ## 设置成别人都不能看到,因为里面有密码
rsync –daemon #启动进程
## 以上配置结束,下面是辅助的管理 rsync 的操作命令
lsof -i :873 ## 查看 rsync 服务是否起来
pkill rsync ## 杀掉进程
killall rsync ## 但不一定杀掉 判断杀掉否就再执行一次, 提示 no programs killed 就说明对了
ps -ef |grep rsync
## 客户端配置:只要这两步即可
echo“oldboy”>/etc/rsync.password #这个路径和服务端路径没任何关系,为了规范而已,密码必须和服务那相同
chmod 600 /etc/rsync.password
## 当配置好服务和客户端后的一个生产环境实例:客户端备份一个网站 /var/ww/html
1.cd /var/www #要备份哪个目录就先到他上一层目录
2.tar zcvf html_$(date +%F) ./html
# 两种方法任意一种都可以
(模块法)
(1)rsync-avzhtml_xxx.tar.gz rsync_backup@64.78.172.::oldboy –password-file=/etc/rsync.password
(协议法)
(2)rsync-avz html_xxx.tar.gz rsync://rsync_backup@64.78.172.119/oldboy –password-file=/etc/rsync.password
## 必须是服务端配置的这个目录 /oldboy,换其他目录就推送不成功,但是子目录是可以的 /oldboy/test,记得要授权 chown rsync test 这个子目录
## 排错经验:如果连不上拒绝报错,telnet 端口测试,基本都是服务端口没开;Telnet 成功后想退出用 ctrl +]
## 如果提示报错 no space 这种说明一是容量不够,2 是 inode 满了,用 du -sh /* 来看哪个目录最大就最有可能有可疑,再进这个目录 du -sh *
## 服务端的 rsync.password 权限是 root root,里面内容是 rsync_backup:oldboy
Rsync 的详细介绍:请点这里
Rsync 的下载地址:请点这里
推荐阅读:
利用 inotifywait 监控主机文件和目录 http://www.linuxidc.com/Linux/2013-03/81075.htm
利用 inotify+rsync 实现 Linux 文件批量更新 http://www.linuxidc.com/Linux/2012-01/52132.htm
inotify-tools+rsync 实时同步文件安装和配置 http://www.linuxidc.com/Linux/2012-06/63624.htm
rsync 同步完整配置 http://www.linuxidc.com/Linux/2013-06/85781.htm