Rsync(remote sync)是UNIX及 类UNIX 平台下一款神奇的数据镜像备份软件,它不像FTP或其他文件传输服务那样需要进行全备份。Rsync可以根据数据的变化进行差异备份,从而减少数据流量,提高工作效率。
你可以使用它进行本地数据或远程数据的复制,Rsync 可以使用 SSH 安全隧道进行加密数据传输。(使用ssh无密码认证可以让客户端复制服务端的指定目录的数据时,不用输入密码)
Rsync服务器端定义源数据,Rsync客户端仅在源数据发生改变后才会从服务器上实际复制数据至本地,
如果源数据在服务器端被删除,则客户端数据也会被删除,以确保主机之间的数据是同步的。
Rsync 默认使用 TCP 协议 , 监听 873 端口。
- Rsync的安装
yum install rsync
2.ssh无密码自动登录
sshd的安装(客户端和服务端都要安装)
yum install sshd
检查是否开启22端口
netstat -natl
某个用户 执行 过 ssh 命令,就会在 他 对应的家目录 下自动生成 。(如果以root身份运行,就产生/root/.ssh,如果没有就自行创建)
cd /root/.ssh
在客户端/root/.ssh目录下生成一对公钥和秘钥
ssh-keygen -t rsa
把公钥使用scp命令拷贝给服务端的/root/.ssh/目录下面
scp /root/.ssh/id_rsa.pub 192.168.72.125:/root/.ssh/
服务端把公钥信息放在authorized_keys里面,如果没有这个文件则自行建立(因为配置文件/etc/ssh/sshd_conf中指定的)
echo>authorized_keys
rm -rf id_rsa.pub
最后客户端使用ssh工具连接
ssh 192.168.72.125
3.rsync解析
rsync中的参数
-a 以archive模式操作、复制目录、符号连接 相当于-rlptgoD
-r 是递归
-l 是链接文件,意思是拷贝链接文件;-p 表示保持文件原有权限;-t 保持文件原有时间;-g 保持文件原有用户组;-o 保持文件原有属主;-D 相当于块设备文件;
-z 传输时压缩;
-P 传输进度;
-v 传输时的详细信息。可以看文档;
-e ssh的参数建立起加密的连接。
-u只进行更新,防止本地新文件被重写,注意两者机器的时钟的同时
–progress是指显示出详细的进度情况
–delete是指如果服务器端删除了这一文件,那么客户端也相应把文件删除,保持真正的一致
–password-file=/password/path/file来指定密码文件,这样就可以在脚本中使用而无需交互式地输入验证密码了,这里需要注意的是这份密码文件权限属性要设得只有属主可读。
4. 完全同步服务器信息,包括 修改,增加,删除
客户端要有跟服务器端一样的目录
客户端(目录可以随便指定,但是目录必须是一样的否则会出错)
mkdir -p /data/web/class.com
mkdir logs
rsync -avzP --delete --exclude "logs" root@192.168.10.5:/data/webdata/myclass.com/ /data/webdata/myclass.com
同步服务器端的/data/web/class.com下面的所有数据,但是不包括logs目录
5.如果想随时监控请使用计划任务
把上面的命令放在脚本中执行
vim /test/auto.sh
rsync -avzP --delete --exclude "logs" root@192.168.10.5:/data/webdata/myclass.com/ /data/webdata/myclass.com
保存退出,赋予可执行性权限
chmod u+x /test/auto.sh
编写计划任务
crontab -e
* * * * * /test/auto.sh