日常运维-rsync、日志



一、rsync介绍

  1. rsync介绍
    rsync是一个同步工具,在日常的运维中常会用到。它可以本地同步,也实现可以远程两台机器同步。
    比如有个需求:有A、B目录两个目录,A目录文件一直在不定时的增加,想要把A目录里面的数据拷贝到B目录下去。并且要求每小时拷贝一次,如果用cp来实现只能覆盖,并且浪费磁盘IO。这种情况就可以使用rsync,它可以增量的同步。
  2. rsync安装
    yum -y install rsync
  3. rsync命令格式
    rsync [OPTION] … SRC DEST //OPTION为参数,SRC源,DEST目标
    rsync [OPTION] … SRC [user@]host:DEST //远程拷贝,如果不写user就默认使用当前的用户
    rsync [OPTION] … [user@]host:SRC DEST // 反向拷贝,把远程机器上的文件或目录拷到本地
    rsync [OPTION] … SRC [user@]host::DEST // 多了:: ,后面在讲
    rsync [OPTION] … [user@]host::SRC DEST
  4. rsync常用选项


二、rsync使用示例

  1. /etc/passwd 拷贝到/tmp/目录下并且改名为1.txt
    rsync -av /etc/passwd /tmp/1.txt

-a :包含-rtplgodD选项

-v:可视化显示

  1. 远程拷贝
    rsync -av /etc/passwd root@47.106.84.56:/tmp/
  2. rsync同步目录
    rsync -av /root/test/ /tmp/test_dest/同步目录时,文件结尾不能少了"/"
  3. 软连接拷贝
    加上-L 参数后,会把参数 -l 的含义给覆盖掉。-L会把软链接所指向的源文件给拷贝过去
    rsync -avL /root/test/ /tmp/test_dest/

查看rsync 版本 rsync日志查看_配置文件

  1. 删除目标中源文件中没有的内容
    rsync -av --delete /root/test/ /tmp/test_dest/test_dest目标目录中有666.txt,但是源目录test目录中没有这个文件

执行完同步后,666.txt被删除

查看rsync 版本 rsync日志查看_配置文件_02

  1. 过滤文件同步
    过滤掉所有.txt文件
    rsync -av --exclude "*.txt" /root/test/ /tmp/test_dest/

也可以支持多重多虑

rsync -avL --exclude "*.txt" --exclude="11*" /root/test/ /tmp/test_dest/

  1. -P参数,详细的显示同步过程
    rsync -avP /root/test/ /tmp/test_dest/
  2. -u参数 ,目标中的文件比源新,则不同步
    修改/tmp/test_dest/111.py文件

加上-u参数,再执行同步发现111.py并没有被之前的文件覆盖掉

rsync -avu /root/test/ /tmp/test_dest/

查看rsync 版本 rsync日志查看_运维_03

  1. -z 参数,压缩传输
    如果传输文件比较大可以加上这个参数
    rsync -avz /root/test/ /tmp/test_dest/


三、rsync通过ssh同步

  • ssh远程同步条件
    两台机器,可以ping通 并且都安装了rsrnc包
  • 远程同步示例
    rsync -av /etc/passwd 193.112.38.222:/tmp/test222193.112.38.222:是目标机器ip,输入密码就可以同步了
  • 将远程机器上的文件拉取到本地
    rsync -av 193.112.38.222:/tmp/test222 /tmp/test333
  • 指定端口进行传输
    如果对方机器不是默认的22端口,可以-e指定端口进行传输
    rsync -av -e "ssh -p 22" /etc/passwd 193.112.38.222:/tmp/test222


四、rsync通过服务同步

rsync通过服务的方式同步,首先需要开启一个服务。它是C/S架构,开启rsync daemo服务,默认端口是873。daemon模式是守护进程。

开启服务后,客户端就可以通过873端口进行通信。

  • 服务配置文件:
    配置文件地址是 /etc/rsyncd.conf。(也可以更改路径,但是在更改路径后,就需要在启动服务的时候,去rsync --daemon//conf=后跟路径)
  • 配置文件样例
port=873
 log file=/var/log/rsync.log
 pid file=/var/run/rsyncd.pid
 address=172.18.11.153
 [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.133.132 1.1.1.1 2.2.2.2     192.168.133.0/24
  • 配置文件解释:

参数名

解释

port

指定rsync服务端口,默认是873

log file

指定日志文件

pid file

指定pid文件

address

指定rsync启动服务的ip,如有多个ip就可以指定其中一个ip启动。如果不指定改参数,默认是全部ip启动

[]

括号内指定模块名,可以自定义

path

存放数据的路径

use chroot true 或 false

传输文件前首先chroot到path参数所指定的目录下。这样做的原因是实现额外的安全防护,但缺点是需要以roots权限,并且不能备份指向外部的符号连接所指向的目录文件。默认情况下chroot值为true,如果你的数据当中有软连接文件,建议你设置成false

max connections

指定最大的连接数,默认是0,即没有限制

read only ture或false

如果为true,则不能上传到该模块指定的路径下

list

表示当用户查询该服务器上的可用模块时,该模块是否被列出,设定为true则列出,false则隐藏。

uid/gid

指定传输文件时以哪个用户/组的身份传输

auth users

指定传输时要使用的用户名。

secrets file

指定密码文件,该参数连同上面的参数如果不指定,则不使用密码验证。注意该密码文件的权限一定要是600。格式:用户名:密码

hosts allow

表示被允许连接该模块的主机,可以是IP或者网段,如果是多个,中间用空格隔开。 当设置了auth users和secrets file后,客户端连服务端也需要用用户名密码了,若想在命令行中带上密码,可以设定一个密码文件

  • 启动服务
    rsync --daemon
  • 检查服务
    netstat -lntp |grep 873

ps -aux |grep rsync

查看rsync 版本 rsync日志查看_查看rsync 版本_04

  • 测试
    rsync -av /tem/test11111.txt 172.18.11.153::test/tmp/test2222.txt::为模块名,也就是配置文件中[test]
  • rsync传输时设置用户名密码
    1、配置文件中指定用户名和密码文件
    auth users=test secrets file=/etc/rsyncd.passwd
    2、编辑/etc/rsyncd.passwd
    密码格式为:test:wxy123
    修改权限为600
    chmod 600 /etc/rsyncd.passwd
    3、测试
    rsync -avP /tmp/test/ test@172.18.11.153::test/
  • 客户端设置密码文件
    在rsync传输文件的时候,在写shell脚本输入密码不好,这时候在客户端也定义一个密码文件
    1、设置密码文件
    vim /etc/rsync_pass.txt格式:客户端只写一个密码即可
    并修改权限为600
    chmod 600 /etc/rsync_pass.txt2、测试
    rsync -avP /tmp/test/ --password-file=/etc/rsync_pass.txt test@172.18.11.153::test/这里需要加上--password-file=/etc/rsync_pass.txt


五、系统日志

  • 系统日志
    /var/log/messages 是linux的系统总日志,
    系统中日志会有自动切割机制,增长到一定级别就会自动切割:
  • 切割机制的配置文件
    /etc/logrotate.conf

参数解释:

weekly //每周切割一次

rotate 4 //4周一次轮换

create //创建新的

compress //是否需要压缩,默认是注释的

  • /etc/logrotate.d/syslog 这个会给cron,maillog,messages,secure,spooler这几个日志进行切割
    Linux系统有一个特点,一个服务写一个文件的时候,并不是按照文件名去写的,而是根据inode来写的
  • dmesg命令
    1、dmesg会把系统的硬件日志列出来
    2、这个个日志是保存在内存中的,并不是一个文件
    3、dmesg -c 清空当前日志
    4、/var/log/dmesg这个日志文件和dmesg命令没哟任何关联,它是系统启动的一个日志
  • last命令
    1、last命令是调用的/var/log/wtmp 日志
    2、日志内容包含:用户、登录终端、源IP、时间、登录时长
    3、/var/log/wtmp日志是-个二进制文件,不能直接查看的,只能用last命令去查看
  • lastb 命令查看登录失败的用户
    1、lastb命令是调用的/var/log/btmp 日志
    2、日志内容包含:用户、登录终端、登录IP、时间、登录时长
    3、/var/log/btmp日志也是-个二进制文件,不能直接查看的,只能用lastb命令去查看
    4、如果服务器被暴力登录(被黑),这个日志一般会有很多条记录
  • 安全日志
    /var/log/secure 这个日志会记录系统的登录信息,成功失败都会记录。如果系统有可能被暴力可以查看这个日志


六、screen工具

screen它是虚拟的一个屏幕,也可以理解为一个虚拟的终端。

  • 使用需求
    需求:执行一个脚本,时间很长 ,并且这个脚本会输出一些信息。要保证这个脚本不能中断。
    解决方法:
    1、nohup command & 把脚本丢到后台,并加一个日志。但是这样没办法实时的查看输出信息
    2、screen工具,可以把要执行的命令,放到这个终端里,然后在退出pts/0之前,可以把screen丢到后台去,随时用, 随时查看 。
  • screen安装
    yum install -y screen
  • 使用
    安装完成后直接输入screen命令,会进入到screen,进入到一个窗口,这个窗口就是一个虚拟终端

虚拟终端,执行vmstat 1命令,然后 ctrl+a键 再按 d键 ,就把screen丢到后台了

执行screen -ls 命令,列出当前所有的session

查看rsync 版本 rsync日志查看_python_05

执行screen -r 再加查看到的id 命令,再回到虚拟终端

screen -r 1558

查看rsync 版本 rsync日志查看_配置文件_06

想要退出screen ,直接exit即可

创建一个自定义名字的screen,加上-S选项,可以指定自定义的名字

screen -S wxy

查看rsync 版本 rsync日志查看_运维_07