有两台linux服务器,要从一台将数据备份到另外一台。这里环境是centos,centos已经默认安装rsync
主服务器ip:192.168.1.1
备服务器ip:192.168.1.2
- 在备份服务器上创建好配置文件
touch /etc/rsync.conf // rsync配置
touch /etc/rsyncd.secrets // 保存密码的文件
touch /etc/rsyncd.mote // 欢迎页面,可有可无
2.在 rsync.conf 中添加
vi /etc/rsync.conf // 这里有个大坑,配置里要把注释去掉,有中文注释会报错
log file = /var/log/rsyncd.log #日志文件位置,启动rsync后自动产生这个文件
uid = root #设置rsync运行权限为root
gid = root #设置rsync运行权限为root
prot = 873 #默认端口
[test] #模块名称,自定义
path = /data/test #保存文件的路径
read only = no #设置rsync服务端文件为读写权限
use chroot=no #默认为true,修改为no,增加对目录文件软连接的备份
uid=root
gid=root
list=true
hosts allow = 192.168.1.1 #主服务器的ip地址
auth users = root #用户名
secrets file = /etc/rsyncd.secrets #密码文件
- rsyncd.secrets和rsyncd.mote
vi /etc/rsyncd.secrets
username:password #用户名和密码
vi /etc/rsyncd.mote
welcome use rsync service #随便写两句
备份服务器的rsync配置完成。
到主服务器上使用命令
将/home2/test/ 下的内容传到备份服务器上,test是rsync.conf中配置的模块名,会将内容保存到配置中的目录,这个命令需要输入密码
rsync -avSH /home2/test/ root@192.168.1.2::test
不需要输入密码的命令,只需要带上 --password-file=
密码文件需要创建,并且要需改权限为600
toucn /etc/password.txt
vi /etc/password.txt
123456
在密码文件中输入服务器密码,完成后直接执行以下命令就可以了
rsync -avH --port=873 --progress --delete /home2/test/ root@192.168.1.2::test --password-file=/etc/passwd.txt
命令参数说明 | |
---|---|
-a | 归档模式,主要保留文件属性,等同于-rlptgoD |
-o | 保留文件所有者属性 |
-v | 显示详细信息 |
-p | 保留文件权限属性 |
-g | 保留文件所属组属性 |
-z | 传输过程中对数据进行压缩 |
-t | 保留修改时间属性 |
-r | 递归 |
- -progress | 显示数据传输的进度信息 |
- -password-file=FILE | 指定密码文件,将密码写入文件,实现非交互式数据同步,这个文件名也需要修改权限为600 |
- -delete | 删除那些仅在目标路径中存在的文件(源路径中不存在),在脚本中的数据同步经常加上此参数 |
- -list-only | 仅列出服务器模块列表,需要rsync服务器设置list=true |
在搭建过程中碰到很多坑,最终填完坑亲测可行方案,就是那么简单。