zoukankan      html  css  js  c++  java
  • 10.32/10.33 rsync通过服务同步 10.34 linux系统日志 10.35 screen工具

    10.32/10.33 rsync通过服务同步

    wKiom1nl-ALC-TAfAAj7BR4k4lU857.png

    rsync还可以通过服务的方式同步,这种方式首先需要开启一个服务,服务是cs架构的,也就是客户端和服务端。服务端要开启一个rsync服务,并且需要监听一个端口,默认是873端口,这个端口是可以自定义的,然后客户端可以通过这个端口与服务端进行通信,得以传输数据。

    启动服务之前要编辑配置文件,这个配置文件的路径是:/etc/rsyncd.conf ,配置的信息不一定必须要写在这个路径的文件里,也可以写在其他的文件里,不过在开启服务的时候就得加上--configfile=配置文件的路径,加上这个参数是为了指定配置文件的路径,如果是写在/etc/rsyncd.conf文件里,则不需要指定配置文件的路径。

    rsyncd.conf文件配置样例

    port=873

    log file=/var/log/rsync.log

    pid file=/var/run/rsyncd.pid

    address=192.168.77.130

    [test]

    path=/tmp/rsync

    use chroot=true

    max connections=4

    read only=no

    list=true

    uid=root

    gid=root

    auth users=test

    secrets file=/etc/rsyncd.passwd

    hosts allow=192.168.77.132 1.1.1.1 2.2.2.2  192.168.77.0/24

      把配置样例粘贴到/etc/rsyncd.conf文件里:

    wKiom1nl-AjhzTouAArSdrcWvOo066.png

    保存退出后,启动服务:

    wKioL1nl9VOT6bUQAAD9l5xNuSA941.png

    检测一下服务是否已启动:

    wKioL1nl9VPSikUTAAJOO-hVuAg431.png

    检查一下监听的端口:

    wKiom1nl-AqRWasyAAP3P95pEJ0092.png

    在tmp目录下创建rsync目录,并设置为777权限:

    wKiom1nl-Avg7mx9AAExyBdxec4803.png

    现在我要在在另一台机器同步文件过来,得执行下面这条命令:

      rsync -avP /tmp/1.txt 192.168.77.130::test/123.txt

    wKioL1nl9VawzpmHAAKCSQQ4-Co668.png

    如果出现以上错误就ping一下另一台机器是否能通,能ping通的话就检查一下端口是否能通。

    telnet命令可以检测某个端口是否是通的,如果没有这个命令的话就安装一下:

    安装命令:yum install -y telnet

      检测端口:

    wKioL1nl9VfyB_MxAAIZRvClzDc653.png

    端口不通的话,检测一下是否是iptables的问题:

    wKiom1nl-A-RXBh-AAVSOjFaSmA348.png

    这是没问题的,那么就检测另一台机器的iptables:

    wKiom1nl-BTDovvlAAt0Px1CeCM447.png

    显示以上这种信息,就证明是这台机器的iptables问题。

    停掉这台机器的firewalld服务:

    wKiom1nl-BTyWXOSAAD8kA67E6U701.png

    现在再回到另一台机器检测一下端口:

    wKioL1nl9V_zVsgJAAI01eNTn4o158.png

    显示以上结果则表示没问题的。

    Ctrl + ]再输入quit退出端口检测:

    wKiom1nl-BeSLKtAAANpL32Ypv8187.png

    处理完以上问题后,就可以执行rsync命令了:

    wKioL1nl9WHCfnYGAAKTqh_700c402.png

    如果不想输入密码的话,就把配置文件里这这两行注释掉:

    wKioL1nl9WPyiBgZAARHhB71lrQ201.png

    现在就可以不需要密码传输文件了:

    wKiom1nl-BqQ5466AARafKZ3L0s532.png

    在充当服务端的机器上就能看到同步的文件了:

    wKioL1nl9WWDklfAAAEfq9rW7t4574.png

    同样的我们也可以从服务端上同步文件:

    wKiom1nl-B2TjUc7AAV06hq7G-Y685.png

    wKioL1nl9WvTjVpwAAcmqNLiaJo761.png

    use chroot为true的情况下,你要同步的目录里有软链接的话,并且你rsync命令里加上了-L选项的话,那么同步此目录的时候,软链接文件会同步失败。

      例如我在源目录里创建了一个软链接文件:

    wKiom1nl-CHACf93AALFOFOdJOI736.png

    然后如果我rsync命令里不加-L选项进行同步的话,是不会出问题的:

    wKiom1nl-COwQC92AAVQXheqfRw026.png

    但是如果加了-L就会出现错误:

    wKiom1nl-ZKwG4NAAAVJkW3sS5c669.png

    如果修改了端口号的话,那么在同步的时候需要加上--port选项指定端口号。

      例如我在配置文件里端口号更改为8730:

    wKiom1nl-ZTwU5iDAAPlbNVlLkw780.png

    重启一下服务,端口才会更新:

    wKioL1nl9uGRJXpqAAZweXlv-U8725.png

    加上--port选项指定端口号:

    wKiom1nl-Znhj6gzAAQWfqYXuj4253.png

    wKioL1nl9ujiQjfsAAjHA5l5hOo864.png

    列出服务端的可用模块:

    wKiom1nl-Z6QeJgkAAGDhja45SA905.png

    如果list为false的话,这个是列不出来的。

      在同步时需要输入用户和密码的话,就把刚刚注释的auth users和secrets file恢复,然后在auth users行指定用户名,secrets file行指定用户的密码文件路径:

    wKioL1nl9uuS2AW2AAQ3T7JAQqs453.png

    然后给test用户指定一个密码,需要编辑一下test用户的密码文件:

    vim /etc/rsyncd.passwd

      内容格式如下:

    wKioL1nl9uvgoVYIAAB_g-tEwak579.png

    然后把此文件的权限改为600:

    wKiom1nl-aGjr0yKAAFC4dMsP5M271.png

    这时候再同步的话就需要输入test用户名和密码了:

    wKioL1nl9u_z46ZeAAZh3PNkGg0155.png

    但是这样挺麻烦的每次都需要输入密码,但是跳过密码又不太安全,这时候要想解决这个问题,可以在客户端上也创建一个密码文件,这个密码文件里保存着test用户的密码,在使用rsync命令同步的时候只要加上--password-file=密码文件路径,这个参数即可不需要输入密码:

    创建密码文件:vi /etc/rsync_pass.txt

      内容格式,直接写上密码即可:

    wKiom1nl-aWicgB0AAB8_K8E3Gg499.png

    然后把此文件的权限也改为600:

    wKioL1nl9u_BVtJiAAE_mc5r8io282.png

    这时候再同步的话就不需要输入test用户的密码了:

    wKiom1nl-afDhaKpAAN9zJrcQlI821.png

    hosts allow这一行是用于指定允许连接你服务端的IP,指定多个则空一格即可,也可以指定IP端。

    10.34 linux系统日志

    wKiom1nl-auRpEIUAAkdtYu8CIQ801.png

    因为Linux系统最常用于作为服务器的操作系统,所以在系统中会存在着相当多的服务,有时候当一个服务启动不了或者出现一些问题,就可以去查看日志文件,日志往往会记录着服务启动、运行、停止的信息,还有错误信息,有时候报错不一定会显示在屏幕上,而是会显示在日志里,所以要学会查看日志。

    我们先来看看Linux系统里有哪些重要的日志:

      第一个是/var/log/messages,这个日志是Linux系统里一个汇总的日志,很多信息都记录在这个日志里,如果服务没有指定单独的日志文件的话,都会记录在这个日志里,其实这就是个系统日志。

    wKioL1nl9vWwLWDlAAFNwcKSi-8952.png

    在Linux系统里会有一个日志切割机制,当日志文件大小增涨到一定的程度,就会对这个日志进行切割:

    wKiom1nl-avxIwSrAAFKAxNQknM022.png

    这些日志切割是由logrotate服务来完成的,为了防止日志文件大小无限制的增加,所以会有这样的一个切割机制。

      /etc/logrotate.conf是logrotate服务的配置文件,内容如下:

    wKiom1nl-bLziLjfAA4nB3C9ghk796.png

    其他配置文件:

    wKiom1nl-bOxVfn1AAEbKEPCIK0258.png

    syslog文件内容:

    wKioL1nl9wCxlQtlAAa13tvJ3u0583.png

    Linux服务写文件的时候是根据文件的inode号去写的,而不是根据文件名,所以需要重新加载服务。

      dmesg命令会把系统里硬件相关的日志列出来,这个日志是保存在内存中的,并不是一个文件:

    wKiom1nl-byzeaE4AAzR98FM45Y586.png

    硬盘、网卡等等硬件出问题了,都会记录在这个日志里

    dmesg -c可以清空这些日志内容,清空时会再打印一遍。

      第二个是/var/log/dmesg 日志文件,这个日志和dmesg 命令没有关联,这是一个系统启动日志,会记录系统启动时的相关信息:

    wKioL1nl9wfxvoidAAEQAdinUEE162.png

    last命令,用来查看系统正确的登录历史,这个命令调用的是/var/log/wtmp文件,这个文件是二进制文件,所以要用last来查看:

    wKiom1nl-cTjGzGhAA_oRMOgROE245.png

      和last命令对应的是lastb命令,这个命令则是查看系统登录失败的历史信息,同样的这个命令也会调用一个文件,这个文件是/var/log/btmp文件,这也是一个二进制文件:

    wKioL1nl9w-i5yWLAAMumb_Ucjw944.png

    当你的系统被人暴力破解的时候,这里就会记录很多日志信息。

    /var/log/secure是一个安全日志:

    wKioL1nl9xDiTrgcAAEc63P4Lyc607.png

    无论系统登录成功或者失败的信息都会被记录到这个日志文件里:

    wKioL1nl9xXziEo_AAe2hq_sTpE233.png

    如果登录失败就会有这样一个信息,还会把IP给记录下来:

    wKiom1nl-cvgc_LqAAKk_tsQyvc806.png

    10.35 screen工具

    wKioL1nl9xyRe67GAA1RVtCLLY4468.png

    screen是一个虚拟的终端,我们假设一个需求要执行一个脚本,这个脚本执行时间很长可能要一天一夜,而且这个脚本会输出一些信息出来,所以不能中断,为了保证脚本执行的过程不中断,有两个办法可以解决这个问题,第一个办法是丢到后台里去然后加一个日志的输出,这个方式虽然解决了任务中断的问题,但是我们却无法实时在屏幕上查看到任务的输出信息。第二个办法就是使用screen虚拟终端,把这个脚本放到虚拟终端去执行。

    screen安装命令:yum install -y screen

    安装完之后,执行screen命令,就会进入到虚拟终端。

      现在我在虚拟终端里执行vmstat命令,每秒输出一次信息:

    wKiom1nl-dOh9smvAAOX2Dr7fOs513.png

    然后再把这个命令的进程扔到后台里,会退回到真实终端并且会打印一个信息出来,表示有个进程在虚拟终端里运行着:

    wKiom1nl-fnxwJI1AAIfappcpSk882.png

    Ctrl + a之后再按d,可以将一个进程扔到后台里去。

    screen -ls命令可以列出在虚拟终端里运行着的进程:

    wKiom1nl-frwrhW9AAH0bBoSmxQ285.png

    想要返回到虚拟终端里的话,使用screen -r 然后加上进程的id即可:

    wKioL1nl90WTedPXAAJGQxrpVfg225.png

    exit可以关闭screen虚拟终端,同样的会有一行信息:

    wKioL1nl90XQMSoLAAB23YfmFbY715.png

      screen可以有多个,也就是可以执行多次screen命令产生多个虚拟终端,使用screen -lsn可以列出这些虚拟终端的数量:

    wKioL1nl90iTUAG2AAXDNBXqDV0023.png

    同样的想要进入哪个screen,指定它的id即可:

    wKiom1nl-f7wFIThAAL6DdpVc58983.png

    但是有一个问题,就是时间久了之后可能会忘记这个screen是干什么用的了,因为它们除了id之外名字都是一样的。这时候就需要使用到-S选项,这个选项可以自定义screen的名字:

    wKioL1nl90izOKyAAADxArvuIoQ048.png

    这样使用screen -ls列出这些screen的是时候就知道是干嘛的了:

    wKiom1nl-gDydxC0AAQBFLl2wxE806.png

    这时候使用screen -r 命令就可以指定screen名称来进入这个screen:

    wKioL1nl90vCwLc2AAMSAdaoJv8057.png

    扩展

    1. Linux日志文件总管logrotate  

    http://linux.cn/article-4126-1.html

    2. xargs用法详解

    http://blog.csdn.net/zhangfn2011/article/details/6776925

  • 相关阅读:
    MFC tab页面中获到其它页面的数据
    sqlite数据库中"Select * From XXX能查到数据,但是Select DISTINCT group From xxx Order By group却查不出来
    关闭程序出现崩溃(exe 已触发了一个断点及未加载ucrtbased.pdb)
    springboot 通用Mapper使用
    springBoot 发布war包
    springCloud Zuul网关
    springboot hystrix turbine 聚合监控
    springBoot Feign Hystrix Dashboard
    springBoot Ribbon Hystrix Dashboard
    springBoot Feign Hystrix
  • 原文地址:https://www.cnblogs.com/pta188/p/9039023.html
Copyright © 2011-2022 走看看