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

日常运维-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:可视化显示

  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/

三、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

四、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传输时设置用户名密码

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

    2、测试

    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

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

    screen -r 1558

    想要退出screen ,直接exit即可

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

    screen -S wxy

七、课堂笔记

转载于:https://my.oschina.net/u/3755326/blog/3040206

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值