Rsync
linux/Unix 文件同步和传送工具用于替代rcp的一个工具,rsync可以通过rsh或ssh使用,
也能以daemon模式去运行,在以daemon方式运行时rsync server会开一个873端口,等待客户端去连接.
连接时,rsync server会检查口令是否相符,若通过口令查核,则可以通过进行文件传输,
第一次连通完成时,会把整份文件传输一次,以后则就只需进行增量备份.
下载的地址:http:/rsync.samba.org
#wget http://rsync.samba.org/ftp/rsync/src/rsync-3.0.9.tar.gz
#tar xf rsync-3.0.9.tar.gz
# cd rsync-3.0.9
# ./configure && make && make install
rsync常用参数
-v,--verbose 详细模式输出;
-a,--archive 归档模式,表示以递归的方式传输文件,并保持所有文件属性不变,相当于使用了组合参数-rlptgoD;
-r, --recursive 对子目录以递归模式处理;
-l, --links 保留软链结;
-p, --perms 保持文件权限;
-t, --times 保持文件时间信息;
-g, --group 保持文件属组信息;
-o, --owner 保持文件属主信息;
-D, --devices 保持设备文件信息;
-H, --hard-links 保留硬链结;
-S, --sparse 对稀疏文件进行特殊处理以节省DST的 空间;
--delete 删除那些DST中SRC没有的文件;
-z, --compress 对备份的文件在传输时进行压缩处理;
rsync的六种不同的工作模式;
1)拷贝本地文件;
当SRC和DES路径信息中不包含冒号":"分隔符时,就启用这种工作模式:
[root@cmmailapp1 /]# rsync -avSH /home/coremail/ /cmbak/
2)使用一个远程shell程序(如rsh、ssh)来实现将本地机器的内容拷贝到远程机器,当DST路径地址包括冒号":"分隔符时启动该模式;
[root@cmmailapp1 /]# rsync -avSH /home/coremail/ 192.168.11.12:/home/coremail/
3)使用一个远程shell程序(如rsh、ssh)来实现将远程机器的内容拷贝到本地机器,当SRC地址路径包括冒号":"分隔符时启动该模式;
[root@cmmailapp2 /]# rsync -avSH 192.168.11.11:/home/coremail/ /home/coremail/
4)从远程rsync服务器中拷贝文件到本地机。当SRC路径信息包含"::"分隔符时启动该模式。
5)从本地机器拷贝文件到远程rsync服务器中。当DST路径信息包含"::"分隔符时启动该模式。
6)列远程机的文件列表。这类似于rsync传输,不过只要在命令中省略掉本地机信息即可。
如:rsync -v rsync://192.168.11.11/data
创建rsyncd.conf
# vi /etc/rsyncd.conf
################ 华丽的分割线 ############
port = 873
#端口号
uid = nobody
#指定当模块传输文件的守护进程UID
gid = nobody
#指定当模块传输文件的守护进程GID
use chroot = no
#不使用chroot到文件系统中的目录中
max connections = 10
#最大并发连接数
strict modes = yes
#指定是否检查口令文件的权限
#hosts allow=192.168.2.0/255.255.255.0
#hosts deny=*
pid file = /usr/local/rsyncd/rsyncd.pid
# 指定PID文件
lock file = /usr/local/rsyncd/rsyncd.lock
# 指定支持max connection的锁文件,默认为/var/run/rsyncd.lock
motd file = /usr/local/rsyncd/rsyncd.motd
# 定义服务器信息的,自己写 rsyncd.motd 文件内容
log file = /usr/local/rsyncd/rsync.log
#rsync 服务器的日志
log format = %t %a %m %f %b
syslog facility = local3
timeout = 300
[conf]
#自定义模块
path = /usr/local/nginx/conf
#用来指定要备份的目录
comment = Nginx conf
ignore errors
#可以忽略一些IO错误
read only = no
# 设置no 可以客户端可以上传文件,yes是只读
write only = no
# no为客户端可以下载,yes 不能下载
hosts allow = 192.168.2.0/24
# 可以连接的IP
hosts deny = *
# 禁止连接的IP
list = false
# 客户请求时,使用模块列表
uid = root
gid = root
auth users = backup
# 连接用户名,和linux系统用户名无关系
secrets file = /etc/rsyncd.pass
# 验证密码文件
########## 不华丽的分割 #########
建立文件夹
# mkdir /usr/local/rsyncd
建立motd文件
#vi /usr/local/rsyncd/rsyncd.motd
建立认证文件
#vi /etc/rsyncd.pass
bakcup:password
#chmod 600 /etc/rsyncd.pass
启动服务
#/usr/local/bin/rsyncd --daemon
##################################
备份机
#vi /etc/rsyncd.pass
password
#chmod 600 /etc/rsyncd.pass
# /usr/bin/rsync -vzrtopg --delete backup@服务器IP::conf /backup/conf/ --password-file=/etc/rsyncd.pass