0420第十六次课:平常运维-rsync、日志

平常运维-rsync、日志

1、rsync介绍

  1. rsync介绍html

    rsync是一个同步工具,在平常的运维中常会用到。它能够本地同步,也实现能够远程两台机器同步。node

    好比有个需求:有A、B目录两个目录,A目录文件一直在不定时的增长,想要把A目录里面的数据拷贝到B目录下去。而且要求每小时拷贝一次,若是用cp来实现只能覆盖,而且浪费磁盘IO。这种状况就可使用rsync,它能够增量的同步。linux

  2. rsync安装shell

    yum -y install rsyncvim

  3. rsync命令格式安全

    rsync [OPTION] … SRC DEST //OPTION为参数,SRC源,DEST目标服务器

    rsync [OPTION] … SRC [user@]host:DEST //远程拷贝,若是不写user就默认使用当前的用户session

    rsync [OPTION] … [user@]host:SRC DEST // 反向拷贝,把远程机器上的文件或目录拷到本地架构

    rsync [OPTION] … SRC [user@]host::DEST // 多了:: ,后面在讲运维

    rsync [OPTION] … [user@]host::SRC DEST

  4. rsync经常使用选项

2、rsync使用示例

  1. /etc/passwd 拷贝到/tmp/目录下而且更名为1.txt

    rsync -av /etc/passwd /tmp/1.txt

    -a :包含-rtplgodD选项

    -v:可视化显示

  2. 远程拷贝

    rsync -av /etc/passwd root@47.106.84.56:/tmp/

  3. rsync同步目录

    rsync -av /root/test/ /tmp/test_dest/

    同步目录时,文件结尾不能少了"/"

  4. 软链接拷贝

    加上-L 参数后,会把参数 -l 的含义给覆盖掉。-L会把软连接所指向的源文件给拷贝过去

    rsync -avL /root/test/ /tmp/test_dest/

  5. 删除目标中源文件中没有的内容

    rsync -av --delete /root/test/ /tmp/test_dest/

    test_dest目标目录中有666.txt,可是源目录test目录中没有这个文件

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

  6. 过滤文件同步

    过滤掉全部.txt文件

    rsync -av --exclude "*.txt" /root/test/ /tmp/test_dest/

    也能够支持多重多虑

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

  7. -P参数,详细的显示同步过程

    rsync -avP /root/test/ /tmp/test_dest/

  8. -u参数 ,目标中的文件比源新,则不一样步

    修改/tmp/test_dest/111.py文件

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

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

  9. -z 参数,压缩传输

    若是传输文件比较大能够加上这个参数

    rsync -avz /root/test/ /tmp/test_dest/

3、rsync经过ssh同步

  • ssh远程同步条件

    两台机器,能够ping通 而且都安装了rsrnc包

  • 远程同步示例

    rsync -av /etc/passwd 193.112.38.222:/tmp/test222

    193.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

4、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 -av /tem/test11111.txt 172.18.11.153::test/tmp/test2222.txt

    ::为模块名,也就是配置文件中[test]

  • rsync传输时设置用户名密码

    一、配置文件中指定用户名和密码文件

    auth users=test secrets file=/etc/rsyncd.passwd

    二、编辑/etc/rsyncd.passwd

    密码格式为:test:wxy123

    修改权限为600

    chmod 600 /etc/rsyncd.passwd

    三、测试

    rsync -avP /tmp/test/ test@172.18.11.153::test/

  • 客户端设置密码文件

    在rsync传输文件的时候,在写shell脚本输入密码很差,这时候在客户端也定义一个密码文件

    一、设置密码文件

    vim /etc/rsync_pass.txt

    格式:客户端只写一个密码便可

    并修改权限为600

    chmod 600 /etc/rsync_pass.txt

    二、测试

    rsync -avP /tmp/test/ --password-file=/etc/rsync_pass.txt test@172.18.11.153::test/

    这里须要加上--password-file=/etc/rsync_pass.txt

5、系统日志

  • 系统日志

    /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命令

    一、dmesg会把系统的硬件日志列出来

    二、这个个日志是保存在内存中的,并非一个文件

    三、dmesg -c 清空当前日志

    四、/var/log/dmesg这个日志文件和dmesg命令没哟任何关联,它是系统启动的一个日志

  • last命令

    一、last命令是调用的/var/log/wtmp 日志

    二、日志内容包含:用户、登陆终端、源IP、时间、登陆时长

    三、/var/log/wtmp日志是-个二进制文件,不能直接查看的,只能用last命令去查看

  • lastb 命令查看登陆失败的用户

    一、lastb命令是调用的/var/log/btmp 日志

    二、日志内容包含:用户、登陆终端、登陆IP、时间、登陆时长

    三、/var/log/btmp日志也是-个二进制文件,不能直接查看的,只能用lastb命令去查看

    四、若是服务器被暴力登陆(被黑),这个日志通常会有不少条记录

  • 安全日志

    /var/log/secure 这个日志会记录系统的登陆信息,成功失败都会记录。若是系统有可能被暴力能够查看这个日志

6、screen工具

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

  • 使用需求

    需求:执行一个脚本,时间很长 ,而且这个脚本会输出一些信息。要保证这个脚本不能中断。

    解决方法:

    一、nohup command & 把脚本丢到后台,并加一个日志。可是这样没办法实时的查看输出信息

    二、screen工具,能够把要执行的命令,放到这个终端里,而后在退出pts/0以前,能够把screen丢到后台去,随时用, 随时查看 。

  • screen安装

    yum install -y screen

  • 使用

    安装完成后直接输入screen命令,会进入到screen,进入到一个窗口,这个窗口就是一个虚拟终端

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

    执行screen -ls 命令,列出当前全部的session

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

    screen -r 1558

    想要退出screen ,直接exit便可

    建立一个自定义名字的screen,加上-S选项,能够指定自定义的名字

    screen -S wxy

7、课堂笔记

相关文章
相关标签/搜索