目录

Rsync 备份

Rsync 基于 SSH 同步本地和远程主机之间的文件,在不同主机之间镜像同步整个目录树,支持增量备份,保持链接和权限。Rsync 只同步两个文件不同的部分,相同的部分不再传递(增量备份),这使得在服务器传递备份文件或者同步文件,比起scp工具要省好多时间。

Ubuntu18.04 下的安装配置

$ sudo cp /usr/share/doc/rsync/examples/rsyncd.conf /etc/rsyncd.conf
$ sudo systemctl start rsync.service

配置信息

# motd file=/etc/motd           # 欢迎信息
log file=/var/log/rsyncd        # rsync 不能正确工作时,需要查看该文件
# pid file=/var/run/rsyncd.pid  # 一般由systemd管理,不主动设置
#syslog facility=daemon         # 指定rsync发送日志消息给syslog时的消息级别
#socket options=                # 自定义tcp选项,默认是关闭的

[ftp]                           # 定义一个模块
    comment = public archive    # 模块描述
    path = /var/www/pub         # 需要同步的路径
    use chroot = yes            # chroot到path参数指定的目录下
    max connections=10
    lock file = /var/lock/rsyncd
    address = 192.168.0.100     # 监听地址
    port 873                    # 监听端口
    read only = yes             # 只读限定
    list = yes                  # 客户请求可用模块时,是否列出该模块
    uid = nobody                # 守护进程使用的 uid
    gid = nogroup               # 守护进程使用的 gid
    strict modes = yes          # 密码文件只能被 pid 用户访问,其他任何用户不可以访问该文件
    ignore errors = yes         # 运行 delete 操作时忽略I/O错误
    ignore nonreadable = yes    # 忽略那些没有访问文件权限的用户
    transfer logging = no       # 使用ftp格式的文件来将操作记录在自己单独的日志中
    timeout = 600               # 超时
    refuse options = checksum dry-run   # 定义一些不允许客户对该模块使用的命令选项列表
    dont compress = *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz # 同步时不再压缩的类型

设置忽略文件

exclude =
exclude from =
include =
include from =

用户权限校验

auth users =   # 该选项指定由空格或逗号分隔的用户名列表,只有这些用户才允许连接该模块
# 该文件每行包含一个 username:password对,以明文方式存储
# 只有在auth users被定义时,此选项才生效。同时我们需要将此文件权限设置为0600
secrets file = /etc/rsyncd.secrets

客户端控制

hosts allow =
hosts deny =

日志

log format = %t: host %h (%a) %o %f (%l bytes). Total %b bytes.
%h:远程主机名
%a:远程IP地址
%l:文件长度字符数
%p:该次rsync会话的进程id
%o:操作类型:send 或 recv del
%f:文件名
%P:模块路径
%m:模块名
%t:当前时间
%u:认证的用户名(匿名时是null)
%b:实际传输的字节数
%c:当发送文件时,该字段记录该文件的校验码

inotify 监控文件变化

$ sudo apt-get install inotify-tools