7月19日任务

10.32/10.33 rsync通过服务同步

10.34 linux系统日志
10.35 screen工具
扩展
1. Linux日志文件总管logrotate http://linux.cn/article-4126-1.html
2. xargs用法详解

image.png

不是通过ssh 而是通过服务的方式同步 这样就需要开启一个服务,cs架构,客户端,服务端。 服务端开启一个服务,监听一个端口默认873,而且可以自定义。客户端在服务器端开启以后就可以通过873端口传送服务以及数据。

启动服务之前要编辑配置文件,默认的地址是在 /etc/rsyncd.conf .如果写到别的地方,开启服务的时候要写上新路径

启动服务 rsybc --daemon

命令格式:

rsync -av 当前需要同步的文件 ip::模块名路径/文件名  模块名就是配置文件里的[]中间的那个test

rsync -avp /tmp/1.passwd 192.168.202.123::test/from02.passwd

image.png

解释一下上述的设置。

port是端口

log 日志文件

pid

address 是服务端的地址

[test]是模块名,随便起,在客户端的时候可以用来写在命令中

以下是一个案例:

aming1的ip 192.168.202.123 这个机器设置为服务器端 设置了873端口 以及log 配置 路径等。

aming2的IP192.18.202.250 这个机器设置为客户端 然后需要从客户端将一个文件同步到服务器端。

  1. 首先在服务器端配置好配置文件,/etc/rsyncd.conf

  2. 启动服务 rsync --daemon

  3. 检查以下这个服务是否启动 ps aux | grep rsync 查看进程 netstat -lntp 检查端口 873 

    image.png

4. 然后按照配置文件中的路径,给接受路径777权限

image.png

5.  在aming2机器上执行同步命令

rsync -avp /tmp/1.passwd 192.168.202.123::test/from02.passwd

passwd 是要传输的文件  双冒号后面是模块名 后面跟新文件的名字

6. 出现了error 

image.png

7. 检查错误。ping可以通,网络连接没有问题。然后检查端口,使用命令telnet ip 端口,ok是端口的问题。iptables的问题,所以要停掉firewalld服务。systemctl stop firewalld 关闭规则,两边都要。

image.png

8 重新执行传输命令,会要求输入密码,密码在配置文件中有定义,auth secrets 路径, 可以暂时先关闭。

9 执行,成功。

image.png

image.png

image.png

image.png

来说说配置文件中的含义:

port=873-----------默认端口,不写的话就是873

log file=/var/log/rsync.log--------自定义日志文件

pid file=/var/run/rsyncd.pid------- 指定pid文件,这个文件的作用涉及服务的启动,停止等进程管理操作。

address=192.168.133.130 ----------指定启动rsync服务的IP,多个ip可以指定其中一个,不指定就会在全部ip

[test] -----模块名

path=/root/rsync 指定数据存放路径

use chroot=true 表示在传输文件前首先chroot到path参数指定的目录下,这样做可以实现额外的安全防护,确定是需要root权限,并且不能备份只想外部的符号连接所指向的目录文件。默认为true,如果数据当中有软链接文件,建议改成false(翻译一下就是如果有软链接而且传输的时候把实体也传输,且实体不存在了就会报错)

max connections=4 指定最大连接数,默认为0,即没有限制

read only=no true/false 如果只读定义为true 那就是写不进去了 客户端就传不了了

list=true --------作用是如果是ture 就可以列出远程服务器所有的模块。是一个安全选项,如果模块名可见,就比较危险,有安全隐患。

image.png

uid=root 指定传输的时候以哪个用户传输。

gid=root

auth users=test 指定传输时用使用到用户名

image.png

secrets file=/etc/rsyncd.passwd 指定密码文件,该参数联通上面的参数如果不指定,则不用密码验证 

这个文件的格式是 用户:密码 权限是600.客户端的目录是/etc/rsync_pass.txt 只写密码,权限也是600。同步的时候需要更多的一个选项,--password-file=/etc/rsync_pass.txt 

hosts allow=192.168.133.132 1.1.1.1 2.2.2.2  192.168.133.0/24 用来定义哪些机器来做同步,1.1.1.1 2.2.2.2 表示多个ip 后面是ip段 

如果服务器端端口改变了,客户端需要在命令行加上一个选项 --port 端口号来保证传输正常。

Linux 系统日志

image.png

随着越来越多的涉及服务的启动,运行,log就越来越重要。很多的错误都会记录在日志中。

重要的日志:

/var/log/messages Linux的主要log都在这里

image.png

所有的日志都记录在此,所以长久以往会很大。所以系统有一个日志切割机制。增长到一定级别的时候就切割了。看下图

image.png

因为linux有一个服务 logrotate 日志切割

参考

dmesg命令 

显示硬件相关的日志,保存在内存中。关机即无。

/var/log/dmesg 记录的是启动相关的信息

last命令记录的是正确登陆的日志,调用的是 /var/log/wtmp文件,二进制文件不能用cat 

lastb命令记录的是登陆失败的日志,调用的是 var/log/btmp 二进制文件,如果有人尝试暴力破解等,就会留下记录。

安全日志 /var/log/secure 

screen工具 虚拟屏幕,虚拟终端。

image.png

有时候运行脚本时间很长,而且不能中途中断。所以为了不让一个任务意外中断,需要保证网络不能出任何的差错。

有两个办法解决:

1, 放到后台,有输出到日志中。

nohup 执行命令 日志 & 

这样就算终端断开也会在后台运行

2,screen放到后台,随时用,随时调出来。

 

screen命令 直接进入一个虚拟终端,执行一个不能停止的命令后 按ctrl a 然后按d 退出虚拟终端。任务继续进行

比如 在screen下执行 vmstat 1 命令

image.png

image.png

告诉你有一个screen id是4047 

可以使用screen -ls 列出来

image.png

回到screen screen -r id 

image.png

杀掉screen 用exit

也可以同时用好几个screen

但是时间久了不会记得screen下面运行的是什么命令了,如何区分?

有一个参数可以起名,-S 

screen -S “名字“ 进入的时候也可以用名字进入,同时也可以用id进来

image.png