• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

基于Linux rsync的日志详细的推送思路

武飞扬头像
juejin
帮助208

前言

最初的时候,在不同服务器之间同步文件的时候,会经常使用scp,然后定时执行,今天从以为大哥身上学到了,用rsync位推送备份的核心,结合时间控制,完成之前不曾想过的细腻的日志推送备份操作,记录,分享一下,有没有考虑到的也请大家多多指正。

rsync

首先明确,这里说的是Linux rsync命令,就是remote sync(远程同步),可以用在远程同步数据,也可以用在本地同步数据,当然,和scp,cp命令还是有不同的地方了,就是全量和增量的关系,使用scp和cp会无脑的全量覆盖之前的内容,而rsync会判断数据是否存在差异,如果有差异再进行部分覆盖。先列举一下rsync的参数吧:

OPTION选项 功能
-a 这是归档模式,表示以递归方式传输文件,并保持所有属性,它等同于-r、-l、-p、-t、-g、-o、-D 选项。-a 选项后面可以跟一个 --no-OPTION,表示关闭 -r、-l、-p、-t、-g、-o、-D 中的某一个,比如-a --no-l 等同于 -r、-p、-t、-g、-o、-D 选项。
-r 表示以递归模式处理子目录,它主要是针对目录来说的,如果单独传一个文件不需要加 -r 选项,但是传输目录时必须加。
-v 表示打印一些信息,比如文件列表、文件数量等。
-l 表示保留软连接。
-L 表示像对待常规文件一样处理软连接。如果是 SRC 中有软连接文件,则加上该选项后,将会把软连接指向的目标文件复制到 DEST。
-p 表示保持文件权限。
-o 表示保持文件属主信息。
-g 表示保持文件属组信息。
-D 表示保持设备文件信息。
-t 表示保持文件时间信息。
--delete 表示删除 DEST 中 SRC 没有的文件。
--exclude=PATTERN 表示指定排除不需要传输的文件,等号后面跟文件名,可以是通配符模式(如 *.txt)。
--progress 表示在同步的过程中可以看到同步的过程状态,比如统计要同步的文件数量、 同步的文件传输速度等。
-u 表示把 DEST 中比 SRC 还新的文件排除掉,不会覆盖。
-z 加上该选项,将会在传输过程中压缩。

很多,但是常用的不是很多,这些参数建议各位作为一个参照,那么接下来看基础使用案例:

rsync -p /opt/1.txt  /opt/user/1.txt  #本地使用
rsync -p /opt/1.txt root@192.168.2.10:/opt/1.txt #远程同步

这里有一个下午注意到的额外的点,就是同步的话,如果是用的是脚本而且是远程同步需要先配置ssh免密登录,这里也附上:

ssh-keygen #生成ssh证书
#一路回车
ssh-copy-id -i /home/mysql/.ssh/id_rsa.pub root@192.168.2.10 #下发ssh证书

那么这个使用就可以使用shell脚本,python脚本更加灵活的使用了。

推送

来看一下完整的推送思路:

1、确定日志的内容,构建日志数据,日志的名称以名字和时间并联。

2、然后重点来了,推送过去的日志保留10个时间节点的,但是在使用的是软链过去的日志,这个顿时觉得厉害了,因为这样可以轻松的实现版本的回退。

3、然后编写脚本,进行定时任务。最后附上脚本:

import subprocess
​
cmd = "rsync -p 1.log root@192.168.1.2:/home/1.txt "
​
re = subprocess.Popen(cmd, shell=True, stderr=subprocess.PIPE, stdout=subprocess.PIPE).communicate() 
​
print(re[1])

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanehge
系列文章
更多 icon
同类精品
更多 icon
继续加载