刚开始的时候,在不同服务器之间同步文件的时候,经常使用scp,然后定期执行。今天向大哥学习,利用rsync bit推送备份的核心,结合时间控制,完成了以前想都没想过的精致日志推送备份操作,记录下来,分享出来。有考虑的请指正。
rsync
首先,这是Linux rsync命令,也就是remote sync(远程同步),可以用来远程或本地同步数据。当然,scp和cp命令还是有一些区别的,就是满额和增量的关系。使用SCP和CP会无意识地完全覆盖前面的内容,而rsync会判断数据是否有差异,如果有,就部分覆盖。我们先列出rsync的参数:
选项功能-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.然后,为计划任务编写脚本。最后,附上脚本:
导入子流程
cmd = " rsync-p 1 . log root @ 192 . 168 . 1 . 2:/home/1 . txt "
re =子流程。Popen(cmd,shell=True,stderr =子进程。管道,stdout =子进程。管道)。交流()
打印(re[1])