使用rsync实现客户端与服务器端的文件同步与传送
1、什么是rsync?
–rsync是类unix系统下的数据镜像备份工具——remote sync。一款快速增量备份工具 Remote Sync,远程同步 支持本地复制,或者与其他SSH、rsync主机同步。
-第一次同步时rsync会复制全部内容,但在下一次只传输修改过的文件。rsync在传输数据的过程中可以实行压缩及解压缩操作,因此可以使用更少的带宽。
-安全:可以使用scp、ssh等方式来传输文件,当然也可以通过直接的socket连接。
-支持匿名传输,以方便进行网站镜象。
2、本人操作的时候使用的具体的环境是:客户端:Mac+服务器端:Ubuntu
iOS系统和Ubuntu是默认已经安装好rsync环境的,客户端可以直接打开 终端,使用rsync的相关命令就能进行操作;Ubuntu在使用rsync的时候需要先通过一系列的设置来打开rsync的服务。
其他环境下关于rsync的安装和配置可参考以下链接:
https://rsync.samba.org/ftp/rsync/rsyncd.conf.html
https://rsync.samba.org/ftp/rsync/
3、关于服务器端Ubuntu下的rsync的相关配置
主要是创建配置文件 rsyncd.conf列表内容
1、 修改/etc/default/rsync,让rsync服务在开机的时候启动:
$ sudo vim /etc/default/rsync
将RSYNC_ENABLE=false改为RSYNC_ENABLE=true
2、创建并修改rsyncd.conf,缺省安装中是没有这个文件的
先创建并编辑配置文件:
$ sudo cp /usr/share/doc/rsync/examples/rsyncd.conf /etc
$ sudo vim /etc/rsyncd.conf
3、去掉
log file=/var/log/rsyncd
pid file=/var/run/rsyncd.pid
syslog facility=daemon
前面的注释符号#
4、修改rsync需要同步的路径:
path = /var/www/pub
(修改成客户端需要同步到的服务器端的的路径即可)
5、修改rsync使其可读可写:
read only = false
6、修改rsync用户:
auth users = rsync_user
secrets file = /etc/rsyncd.secrets
7、创建rsync用户密码文件:
sudo touch /etc/rsyncd.secrets
使其内容如下(例子):
rsync_user:rsync_password
8、修改用户密码文件权限:
$ sudo chmod 0600 /etc/rsyncd.secrets
9、启动rsync
$ sudo /etc/init.d/rsync start
4、将客户端相关文件夹中的内容同步到服务器端设置路径下的相关命令的使用
$ rsync -avz local_filename server_username@server_ip:server_filename
5、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
//对备份的文件在传输时进行压缩处理;
6、rsync六种不同的工作模式:
1.拷贝本地文件,将/home/coremail目录下的文件拷贝到/cmbak目录下
$ rsync -avSH /home/coremail/ /cmbak/
2.拷贝本地机器的内容到远程机器
$ rsync -av /home/coremail/ 192.168.11.12:/home/coremail/
3.拷贝远程机器的内容到本地机器
$ rsync -av 192.168.11.11:/home/coremail/ /home/coremail/
4.拷贝远程rsync服务器(daemon形式运行rsync)的文件到本地机
$ rsync -av root@172.16.78.192::www /databack
5.拷贝本地机器文件到远程rsync服务器(daemon形式运行rsync)中。当DST路径信息包含”::”分隔符时启动该模式
$ rsync -av /databack root@172.16.78.192::www
6.显示远程机的文件列表。这类似于rsync传输,不过只要在命令中省略掉本地机信息即可
$ rsync -v rsync://192.168.11.11/data
7、rsync配置文件说明:
cat/etc/rsyncd.conf
//内容如下
port = 873
//端口号
uid = nobody
//指定当模块传输文件的守护进程UID
gid = nobody
//指定当模块传输文件的守护进程GID
use chroot = no
//使用chroot到文件系统中的目录中
max connections = 10
//最大并发连接数
strict modes = yes
//指定是否检查口令文件的权限
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 %bsyslog facility = local3timeout = 300
//自定义模块
[conf]
path = /usr/local/nginx/conf
//用来指定要备份的目录
comment = Nginx confignore 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
//验证密码文件