rsync是一个文件同步工具,只传输文件不同的部分所以速度较快,用法大致分为三种,以本地复制文件的方式、使用ssh来同步远程文件,以服务的形式来同步文件。


同步远程日志到本地


        需要在远程开启rsync服务,然后用本地的rsync去同步远程的文件。

服务端配置:/etc/rsyncd.conf

# 运行rsync的用户,是linux的用户,这个用户需要有被同步文件的读权限,否者会报 Permission denied (13)
# 如果要用普通用户来运行可以将普通用户加入到被同步文件的组中usermod -G nginx qiyang
uid = root
gid = root

use chroot = no
max connections = 4
pid file = /var/run/rsyncd.pid
# exclude = lost+found/
transfer logging = yes
timeout = 900
# ignore nonreadable = yes
# dont compress   = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2


[log]  # 模块名称,后面同步文件时以模块名来指定同步源
read only = yes # 是否只读
path = /var/log/nginx/ # 要同步文件的目录位置
comment = nginx_log # 随便写
auth users = qiyang # 非linux用户,允许的用户,和下面的secrets file里面的用户对应
secrets file = /etc/rsync.pas  # 用来同步文件的用户,非linux用户,格式为 user:pass 权限为 600
hosts allow = 192.168.1.0/24,192.168.2.10 # 允许的IP,可以是网段,或单个IP

开启服务端的rsync服务:

systemctl start rsyncd.service

在客户端使用如下命令:可以加入定时任务

rsync -aP --delete qiyang@192.168.1.161::log /var/log/nginx/ --password-file=/etc/rsync.pas

参数:

--delete  删除远程端没有的本地还存在的文件

-a           递归复制

-P           详细显示

qiyang@192.168.1.161::log        这个log就是模块名称,前面有两个冒号,以这个模块的配置作为数据源

/var/log/nginx/                           同步到本地的目录

--password-file=/etc/rsync.pas  指定密码文件的位置,密码文件只要写密码即可,不写用户名,权限为600


通过ssh用法


以ssh形式来传输文件:会提示输入密码,做免秘钥即可,将本地的秘钥 ssh-copy-i 到远程即可。

rsync -av -e ssh user@hostname:/tmp/text.txt /tmp

-e        使用ssh协议


复制命令


作为复制命令:

rsync -av src/ dest/
rsync -av src dest/

rsync -av IP:/data/test/src/ dest/ --远程同步至本地

rsync -av src/ IP:/data/test/dest/ --本地文件同步至远程

        -a    递归方式传输文件

        -v    显示