安装rsync:
sudo apt-get install rsync
编辑server的配置文件,vim /etc/rsyncd.conf,
# sample rsyncd.conf configuration file # GLOBAL OPTIONS #motd file=/etc/motd log file=/var/log/rsyncd.log # for pid file, do not use /var/run/rsync.pid if # you are going to run rsync out of the init.d script. # pid file=/var/run/rsyncd.pid #syslog facility=daemon #socket options= # MODULE OPTIONS uid = root gid = root address = 192.168.2.30 read only = no list=yes ignore errors auth users=root secrets file = /etc/rsyncd.secrets [etc] path = /etc/ [opt_share] path = /opt/share/
示例配置说明:
###################################################################################################### # ******进程相关全局配置****** ###################################################################################################### # = 后面的值可根据自己的实际情况更改 # pid file 守护进程pid文件 # port 守护进程监听端口,可更改,由xinetd允许rsyncd时忽略此参数 # address 守护进程监听ip,由xinetd允许rsyncd时忽略此参数 pid file = /usr/local/var/run/rsyncd.pid port = 873 address = 192.168.1.2 #rsyncd 守护进程运行系统用户全局配置,也可在具体的块中独立配置, uid = root gid = root #允许 chroot,提升安全性,客户端连接模块,首先chroot到模块path参数指定的目录下 #chroot为yes时必须使用root权限,且不能备份path路径外的链接文件 use chroot = yes #只读 read only = no #只写 write only = no #允许访问rsyncd服务的ip,ip端或者单独ip之间使用空格隔开 hosts allow = 192.168.0.1/255.255.255.0 198.162.145.1 10.0.1.0/255.255.255.0 #不允许访问rsyncd服务的ip,*是全部(不涵盖在hosts allow中声明的ip,注意和hosts allow的先后顺序) hosts deny = * #客户端最大连接数 max connections = 5 #欢迎文件路径,可选的 #motd file = /etc/rsyncd/rsyncd.motd #日志相关 # log file 指定rsync发送消息日志文件,而不是发送给syslog,如果不填这个参数默认发送给syslog # transfer logging 是否记录传输文件日志 # log format 日志文件格式,格式参数请google # syslog facility rsync发送消息给syslog时的消息级别, # timeout连接超时时间 log file = /usr/local/logs/rsyncd.log transfer logging = yes log format = %t %a %m %f %b syslog facility = local3 timeout = 300 ###################################################################################################### # ******模块配置(多个)****** ###################################################################################################### #模块 模块名称必须使用[]环绕,比如要访问data1,则地址应该是data1user@192.168.1.2::data1 [data1] #模块根目录,必须指定 path=/home/username #是否允许列出模块里的内容 list=yes #忽略错误 #ignore errors #模块验证用户名称,可使用空格或者逗号隔开多个用户名 auth users = data1user #模块验证密码文件 可放在全局配置里 secrets file=/etc/rsyncd/rsyncd.secrets #注释 comment = some description about this moudle #排除目录,多个之间使用空格隔开 exclude = test1/ test2/
在客户端上面同步命令:
#!/bin/bash echo -e '\r------sync etc...\r' rsync -avzPrh --progress root@192.168.2.30::etc /mnt/sdb2/etc/ echo -e '\r------sync share...\r' rsync -avzPrh --password-file=sync.secrets --progress root@192.168.2.30::opt_share /mnt/sdb2/opt/share/
注意配置用户名与密码的时候:
- 必须设置 auth users 参数,不然–password-file参数不起作用。
- –password-file 指定的文件内容格式为 user:password
- –password-file 指定的文件权限要设置成 600
- rysnc 客户端指定的 –password-file文件内容仅仅只需要写上password,用户名已经在 root@192.168.2.30 这里指定了
- rsync 客户端的 –password-file文件,一样要设置权限为600
参考官方文档:https://download.samba.org/pub/rsync/rsyncd.conf.html