一 rsync 通过服务同步
服务的方式是c/s架构,需要在服务端开启一个服务rsync,并且要开启一个端口873
1、开启服务端rsync步骤
1)编辑配置文件
配置文件的默认路径是/etc/rsyncd.conf ,也可以放到其他位置
2)启动服务
# rsync --daemon
# rsync --daemon --configfile=配置文件的路径 //当配置文件路径不是默认路径时需要加上--config
3) 从客户端同步文件到服务端
模块为test,路径如下:
# rsync -avP /tmp/aming.txt 192.168.133.130::test/aming-02.txt //同步本机文件给远程机器;使用双冒号就表示使用的是rsyncd.conf
# rsync -avP 192.168.133.130::test/aming-02.txt /tmp/123.txt //同步远程客服机器的文件到本机
小技巧:检查端口是否通的命令# telnet IP Port
上图发现端口不通,首先考虑是iptables的问题,
这种情况就需要关闭c/s两端的firewalld
再来测试端口
按下ctrl+u结束上图的命令,再quit
2、rsyncd.conf配置文件详解
1)use chroot true|false
首先我们将chroot设置为true,配置文件此处被修改后不需要重启
下面这种方式同步文件没有问题:
但是加上-L后就没有同步
下面来查看日志文件:
如果将chroot改为false,则不会出现上述问题
3、修改配置文件的端口号
修改端口号后需要重启rsync服务才能使修改有效,并且在同步时需要加上端口号
4、
1)list
当服务端配置文件list=true时,使用下面命令双冒号后面不跟模块名,系统会将模块名列出来;
当服务端配置文件list=false时,使用下面命令双冒号后面不跟模块名,系统就不会会将模块名列出来;
2)uid/gid
在配置文件中将文件所属主/组改为nobody
结果发现同步文件到服务端出错
3)secrets file
使用auth users需要每次指定访问的用户名和输入密码,这样会造成凌晨备份等场景不方便,针对这种情况,我们可以使用密码文件,在这个文件中写入密码,并设置权限为600
此时我们再使用密码文件来同步
二 Linux系统日志
建议在系统启动失败时看系统日志
1、/var/log/messages
系统的一个总的日志,如果系统没有单独给某个服务定义日志文件,则都会写到这个日志文件中
2、日志切割
当日志文件大小增长到一定大小时,就会被切割
日志切割机制是有一个配置文件管控的/etc/logrotate.conf
上图表示每周切割一次,保留4次,即保留1个月的日志,dateext是后缀名
上图可以看到另外还有一个目录/ect/logrotate.d 目录下的文件列表如下:
打开syslog文件:
3、dmesg命令
这个是在内存中的,如果系统硬件有什么问题就会记录在这里面
# dmesg -c // 清空这里的日志,但一重启又会写入了
4、/var/log/dmesg日志文件
这个文件跟dmesg命令没有关联,这个日志是系统启动的一个日志,记录的一些背景信息
5、last命令
用于查看登陆的正常信息,
这个命令调用的文件是/var/log/wtmp文件,这个文件是二进制文件,不能直接cat,只能通过last命令查看
6、lastb命令
用于查看登陆失败的用户,调用的文件是/var/log/btmp文件,这个文件是二进制文件,不能直接cat,只能通过lastb命令查看
7、/var/log/secure
安全文件,内容如下图
如果有暴力破解,每登陆一次都会产生一条记录
三 screen工具
虚拟终端
使用场景:当执行一个脚本时,执行时间很长,可能需要一两天,并且脚本会有一些输出,这就意味着这个脚本不能中断,如果运行时网络断开,就意味着脚本也就断开了,为了保证脚本在这一天多的时间中持续运行,得保证网络很强健,这时有两个解决方案,
一是将脚本丢到后台,输出数据写到日志里面
使用命令# nohup 命令 &
缺点是无法直接查看实时信息
为了解决这个问题,就使用到了screen工具,使用虚拟终端,可以随时调出来看
1、安装screen、开启虚拟终端
# yum install -y screen
进入虚拟终端使用命令# screen
2、退出虚拟终端
ctrl+a 再按下b就可以退出虚拟终端,但没有退出
3、查看虚拟终端的任务列表
# screen -ls
4、# screen -r 任务编号
回到虚拟终端查看对应的任务
5、杀死退出screen
# exit
此时再来查看虚拟终端列表,没有任务
6、多个screen
7、# screen -S "name"
这个命令用于给对应screen取一个名字做区分,下图框中的文字就是screen的名字,
当需要把这个任务调到前台来时,就可以使用名字来调: