前言:rsync是类unix系统下的数据镜像备份工具,可以镜像保存整个目录树和文件系统,可以很容易做到保持原来文件的权限、时间、软硬链接等等。
rsync同样属于C/S架构模型,服务端守护进程始终监听于873端口
对比rsync命令与scp命令的优劣性
-
rsync有六种不同的工作模式介绍
- 1:拷贝本地文件;类似于cp命令
- 2:使用一个远程shell程序(如rsh、ssh)将本地拷贝到远端主机的某个目录下
rsync -avz grub.conf root@192.168.23.12:/data
- 3:使用一个远程shell程序(如rsh、ssh)将远端主机的文件拉到本地的某个目录下
rsync -avz root@192.168.23.12:/data/grub.conf /tmp/
- 4:将远程rsync服务器中的文件拷贝到本地目录
/usr/bin/rsync -avz --delete nfs@192.168.23.26::data /data/ --password-file=/etc/rsync.password
- 5:将本地目录文件拷贝到远程rsync服务器中(非常重要)
/usr/bin/rsync -avz --delete /data/ nfs@192.168.23.26::data --password-file=/etc/rsync.password
- 6:列出远程机的文件列表, 这类似于rsync传输
-
rsync命令格式
(一) Local: rsync [OPTION...] SRC... [DEST]
例如: rsync -avz /root/ /tmp/ # 将/root目录下的所有文件拷贝到/tmp目录下,默认是增量拷贝
例如: rsync -avz --delete /root/ /tmp/ # 增加--delete选项,指明在增量拷贝的基础上全量拷贝,也就是说/root目录下有的文件,/tmp目录下要有,/root目录下没有的文件,/tmp目录下要将文件删除。最后表现为/tmp目录的文件与/root目录的文件一样
(二)Access via remote shell:
Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
Push: rsync [OPTION...] SRC... [USER@]HOST:DEST
例如:rsync -avz --delete -e "ssh -p 22" /tmp/ 192.168.23.26:/tmp # 通过ssh加密,使得192.168.23.26主机上的/tmp目录下的所有文件与本机的/tmp目录下的文件一样
说明: 如何是本地拉取的话,如命令格式所示,源地址与目标地址需要调换一下位置
(三)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
例如:rsync -avz --delete /tmp/ rsync_backup@192.168.23.26::backup --password-file=/etc/rsync.password # 在daemon模式下,客户端将本地的/tmp目录下的所有文件推送到192.168.23.26主机的backup模块指定的目录中去
例如:rsync -avz --delete rsync_backup@192.168.23.26::backup --password-file=/etc/rsync.password /tmp/ # 这就是将远端的拉倒本地的/tmp目录下
-a: --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性
-v: --verbose 详细模式输出
-r: --recursive 对子目录以递归模式处理
-z: --compress 对备份的文件在传输时进行压缩处理
--delete :无差异拷贝
--exclude=somefile 指定排除不需要传输的文件模式
1:以守护进程的方式启动
/usr/bin/rsync --daemon
2:托管给xinetd服务,由xinetd代为管理
编辑 /etc/xinetd.d/rsync文件
将disable = no改为disable = yes
重启xinetd服务
此时可以看到xinetd服务监听在873端口上
0:创建一个/data目录,用来指定接受rsync客户端推送的文件
mkdir /data
1:编辑/etc/rsyncd.conf主配置文件
1:创建同步时候使用的密钥文件
echo "123456" > /etc/rsync.password
2:修改密钥文件的权限为600
chmod 600 /etc/rsync.password
2:手动同步本地的/data/目录的所有文件到rsync服务端
/usr/bin/rsync -avz --delete /data/ hello@192.168.23.12::data --password-file=/etc/rsync.password