八周三课 rsync通过服务同步,linux系统日志,screen工具
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了八周三课 rsync通过服务同步,linux系统日志,screen工具相关的知识,希望对你有一定的参考价值。
rsync通过服务的方式同步
通过服务的方式首先我们要开启一个服务,它的架构是cs架构。客户端和服务端。服务端开启一个服务,rsync服务,并且要监听一个端口,默认为873,并且这个端口是可以自定义的。开启服务后,客户端究竟可以通过873这个端口和服务端进行通信。
它的命令格式有两个“::”。
例如:rsync -av test1/ 192.168.133.130::module/dir/
自启动服务前,我们要编辑配置文件,配置文件的默认路径为 /etc/rsyncd.conf。
启动方式为rsync --daemon
首先我们先启动它的服务,下面有一个rsyncd.conf的样例
port=873(指定端口,也可以自定义端口)
log file=/var/log/rsync.log(指定日志文件)
pid file=/var/run/rsyncd.pid(指定pid文件)
address=192.168.133.130(指定监听的IP,如果不写,就监听所以有IP,我们也可以写多个IP)
[test](指定块名)
path=/root/rsync(指定数据存放路径)
use chroot=true(安全参数,如果有文件没能同步过来,那么就把参数改为false)
max connections=4(最大连接数,假设服务器很多,我们就可以定义连接数)
read only=no(是否只读,如果制度的情况下改成true,这个参数就是在服务端写数据的时候,如果服务端定义了只读,就写不进去了。)
list=true(列出远程服务器上所有模块,如果改成false则列不出来。列出模块名的命令为
rsync --port=端口名 IP。这是一个安全选项,如果模块名暴露,就会容易被被人攻击。)
uid=root(指定传输文件时以哪个用户的身份传输)
gid=root(指定传输文件时以哪个用户的身份传输)
auth users=test(指定传输时要使用的用户名)
secrets file=/etc/rsyncd.passwd(指定密码文件。编辑这个文件用vi去打开,它的格式为用户名:密码。然后将这个问价的权限改为600。在同步的时候既要在IP前加上用户名,运行后输入用户密码。但是如果先到shell脚本中,这样写会很麻烦,我们还有一个办法,在客户端也定义一个密码文件,里面只写一个密码,权限改为600。这时候在同步的时候加参数--passwd=客户端文件的路径加文件名。例如: rsync -avL [email protected]::test/test1/ /tmp/test8/ --password-file=/etc/pass.txt)
hosts allow=192.168.133.132 (定义允许那些IP同步。如果是多个IP,就用空格隔开,也可以写IP段。)
将它复制到配置文件中去。
如果我们重新设定端口,则要重新启动服务。并且在同步的同时要指定端口。
例如:rsync -avPL --port【端口号】
然后我们启动服务
[[email protected] 111]# rsync --daemon
然后我们查看一下他是否启动成功
[[email protected] 111]# ps aux|grep rsync
root 1101 0.0 0.0 112676 984 pts/0 R+ 20:37 0:00 grep --color=auto rsync
然后我们查看一下他监听的端口
[[email protected] ~]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0: LISTEN 796/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0: LISTEN 880/master
tcp 0 0 192.168.1.106:873 0.0.0.0: LISTEN 1141/rsync
tcp6 0 0 :::22 ::: LISTEN 796/sshd
tcp6 0 0 ::1:25 :::* LISTEN 880/master
我们看到监听的端口为873,而且我们也给他设定一个监听IP,如果不写监听IP,他就是绑定0.0.0.0全部的IP。
现在服务端我们已经弄好了,然后我们开始运行命令。
[[email protected] tmp]# rsync -av /tmp/aming.txt 192.168.1.106::test/aming-02.txt
这时候冒号后面跟的是模块的名字,模块命就是在配置文件中用【】括起来的,这个模块名代表的路径就是我们设定的path=/root/rsync,所以备份的文件就放到了/root/rsync这个路径下。
但是执行完命令后出现报错。
[[email protected] tmp]# rsync -av /tmp/aming.txt 192.168.1.106::test/aming-02.txt
rsync: failed to connect to 192.168.1.106 (192.168.1.106): No route to host (113)
rsync error: error in socket IO (code 10) at clientserver.c(122) [sender=3.0.9]
没有路由到远程机。
遇到这种问题第一考虑网络的连通性。
[[email protected] tmp]# ping 192.168.1.106
PING 192.168.1.106 (192.168.1.106) 56(84) bytes of data.
64 bytes from 192.168.1.106: icmp_seq=1 ttl=64 time=0.690 ms
64 bytes from 192.168.1.106: icmp_seq=2 ttl=64 time=0.439 ms
^C
--- 192.168.1.106 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1000ms
rtt min/avg/max/mdev = 0.439/0.564/0.690/0.127 ms
网络可以ping通。
然后查看端口
[[email protected] tmp]# telnet 192.168.1.106 873
Trying 192.168.1.106...
telnet: connect to address 192.168.1.106: No route to host
发现端口不同,出现这种情况,我们第一要考虑的是iptables的问题
我们先查看一下iptables。
[[email protected] tmp]# iptables -lnv
iptables v1.4.21: unknown option "iptables"
Try `iptables -h‘ or ‘iptables --help‘ for more information.
[[email protected] tmp]# iptables -nvL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)(以下省略)
发现真的是由于iptables的原因导致的。
然后我们将firewalld给停掉
[[email protected] tmp]# iptables -lnv
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
这样我们就停掉了。
然后我们再去另一台机器看看
[[email protected] ~]# iptables -nvL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
3223 285K ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
2 168 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0
40 2608 ACCEPT all -- lo 0.0.0.0/0 0.0.0.0/0
2 100 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
2476 2089K REJECT all -- * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT 2969 packets, 341K bytes)
pkts bytes target prot opt in out source destination
发现这台设备的iptables也开启了,所以我们也要关闭它。
然后再回到刚才的设备查看端口是否通畅。
[[email protected] tmp]# telnet 192.168.1.106 873
Trying 192.168.1.106...
Connected to 192.168.1.106.
Escape character is ‘^]‘.
@RSYNCD: 30.0
这时,端口已经通了。退出时按Ctrl加】,再输入quit退出。
然后再运行rsync -av /tmp/aming.txt 192.168.1.106::test/aming-02.txt这条名命令。
[[email protected] tmp]# rsync -av /tmp/aming.txt 192.168.1.106::test/aming-02.txt
Password:
这里需要我们输入密码,这是因为我们在编辑配置文件的时候定义了一条,auth users=test和secrets file=/etc/rsyncd.passwd,这个是用来定义密码的。我们可以在这两条前面加#来注释关掉它。
然后我们在运行这条命令
[[email protected] tmp]# rsync -avP /tmp/aming.txt 192.168.1.106::test/aming-02.txt
sending incremental file list
aming.txt
1159 100% 0.00kB/s 0:00:00 (xfer#1, to-check=0/1)
sent 1232 bytes received 27 bytes 2518.00 bytes/sec
total size is 1159 speedup is 0.92
这样我们就同步成功了。如果我们以后发现有用::的,他就是用了rsyncd.conf。
然后我们去另一台设备查看文件是否通过过去了。
[[email protected] tmp]# ls /tmp/rsync
aming-02.txt
已经同步过去了。
反过来我们么也可以将这个文件拉倒本机上来。
[[email protected] tmp]# rsync -avP 192.168.1.106::test/aming-02.txt /tmp/123.txt
receiving incremental file list
aming-02.txt
1159 100% 1.11MB/s 0:00:00 (xfer#1, to-check=0/1)
sent 45 bytes received 1266 bytes 2622.00 bytes/sec
total size is 1159 speedup is 0.88
也成功了。
linux系统日志
日志每天都记录了系统的各项数据。所以我们在遇到问题的时候应该第一时间去查看我们的系统日志,linux系统中有很多重要的日志。
1./var/log/messages:系统总日志,好多信息都记录在这个文件中。除非某项服务有定义单独的日志。这个日志每天都会写,久而久之就会很大。所以系统有一个日志切割机制,当日志增长到一定级别后就会自动切割。
[[email protected] ~]# ls /var/log/messages*
/var/log/messages /var/log/messages-20180305 /var/log/messages-20180311 /var/log/messages-20180320 /var/log/messages-20180328
我们可以看到这些日志后面都跟了一些日期,这就证明它是按日期切割的,那他是这样做到的呢?
logrotate,他就是用来切割日志的,为了防止日志无限制的增加。它的配置文件/etc/logrotate.conf。
[[email protected] ~]# cat /etc/logrotate.conf
see "man logrotate" for details
rotate log files weekly
weekly(按周切割)
keep 4 weeks worth of backlogs
rotate 4(保留4个)
create new (empty) log files after rotating old ones
create(创建新文件)
use date as a suffix of the rotated file
dateext(后缀名ext代表日期)
以下省略
dmesg命令
将系统里面的硬件先关的日志列出来,它保存在内存中,它并不是一个文件。比如我们的硬盘或者网卡出现问题,他都会记录在这里。我们除了看/var/log/messages外,还要运行这个命令查看硬件的故障和错误。参数-c可以清空内容,但重启后又会自动添加内容。
/var/log/dmesg
这是一个日志文件,他是记录系统启动的日志,和dmesg命令没有关系。
last命令,调用的文件/var/log/wtmp
用来查看正确的登陆历史,他是一个二进制文件,不能cat查看,只能用last来查看。
lastb命令查看登录失败的用户,对应的文件时/var/log/btmp /var/log/secure
他是记录登录失败的日志。他也是一个二进制文件,不能cat查看。
/var/log/secure安全日志
他会记录登录相关以及pam相关等等的日志。如果有人暴力破解我们设备,那么也会记录到这个文件中。
screen工具
虚拟终端。比如我们运行一个脚本,要运行很长时间,而且他会输出一些东西,也即意味着中途不能中断。
有两个办法解决,首先就是放到后台去执行,用命令nohup+执行命令+日志+&符号。即使终端断开,他依然会在后台执行。虽然解决理了防止任务中断的问题,但是没有办法实时查看任务输出的东西,毕竟他在后台。
还有一种方法就是将任务放在这个终端中,然后我们退出之前把这个screen放到后台去,随用随调。
screen直接回车就进入了虚拟终端
ctral a组合键再按d退出虚拟终端,但不是结束
screen -ls 查看虚拟终端列表
screen -r id 进入指定的终端
screen -S (自定义名字)
以上是关于八周三课 rsync通过服务同步,linux系统日志,screen工具的主要内容,如果未能解决你的问题,请参考以下文章