使用rsync同步备份文件

安装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/

注意配置用户名与密码的时候:

  1. 必须设置 auth users 参数,不然–password-file参数不起作用。
  2. –password-file 指定的文件内容格式为 user:password
  3. –password-file 指定的文件权限要设置成 600
  4. rysnc 客户端指定的 –password-file文件内容仅仅只需要写上password,用户名已经在 root@192.168.2.30 这里指定了
  5. rsync 客户端的 –password-file文件,一样要设置权限为600

参考官方文档:https://download.samba.org/pub/rsync/rsyncd.conf.html