2017.12.6 八周第三次课

10.32/10.33 rsync通过服务同步

这种方式,可以理解为在远程主机上建立一个rsync服务器,在服务器上配置好rsync的各种应用,然后本机作为 rsync 的一个客户端去连接远程的rsync服务器。

如何配置一台rsync服务器。

[root@wangbin ~]# vi /etc/rsyncd.conf 可自定义名称,如果是rsyncd.conf系统会自动加载

port=873

log file=/var/log/rsync.log

pid file=/var/run/rsync.pid

address=192.168.247.129

【指定哪个端口启动 rsync 服务,默认873】

【指定日志文件】

【指定pid文件,涉及到服务启动以及停止等进程管理操作】

【指定启动 rsync 服务的IP,多个IP用逗号隔开,如有多个IP,指定其中一个启动rsync 服务,默认在全部IP上启动,不写的话,监听所有IP,注意这里是指服务器的IP】

[test]

path=/root/rsync

use chroot=true

max connections=4

read only=false

list=true

uid=root

gid=root

auth users=test

secrets file=/etc/rsyncd.passwd

hosts allow=192.168.247.132

  ○ 【指定模块名,可以自定义】

  ○ 【指定数据存放路径】

  ○ 【默认true,有false选项,在传输文件之前首先 chroot 到 path参数所指定的目录下。这样做的原因是实现额外的安全防护,但是缺点是需要root权限,并且不能备份指向外部的符号连接所指向的目录文件。默认情况下 true,如果数据中有软连接文件在其他目录下的话,建议设置成false,设置成true后,只能在上面定义的目录下拷贝上传文件】

  ○ 【最大连接数,默认0没有限制】	

  ○ 【true 不能上传到该模块指定的路径下】【只读模式(下载模式)	,只允许客户端下载,不允许上传,适合一对多的同步方式,如果多对一,改成no】

  ○ 【指定当用户查询该服务器上的可用模块时,该模块是否被列出,true列出,false隐藏】		

  ○ 【指定传输文件时,以哪个用户主的身份传输】

  ○ 【以哪个所属组的身份传输】

  ○ 【指定传输时使用的用户名】

  ○ 【指定密码文件,该参数连同上面的参数如果不指定则不使用密码验证,注意该密码文件的权限一定要是600】

  ○ 【指定被允许连接该模块的主机,可以是IP或者网段,如果是多个,直接用空格隔开】

一次只能运行一个配置文件,如果想运行多个模块,将多个模块下载同一个配置文件中。

配置文件分为两部分,全部配置部分和模块配置部分,全局部分就是几个参数,自定义模块名 [test]为分界,上面写的是全局部分,下面的都是模块部分。

一个配置文件可以有多个配置模块,模块名自定义,格式如 rsyncd.conf 所示。模块中的参数如 use chroot,max connections,uid,gid,auth users,secrets file 以及 hosts allow 都可以配置成全局参数。可以通过 man rsync.conf 查看更多参数和信息。

# rsync --daemon			【启动rsync进程】

[root@wangbin ~]# cat /etc/rsyncd.passwd

test:test123 【test 的密码是 test123】

[root@wangbin ~]# chmod 600 /etc/rsyncd.passwd 【修改secrets file 权限】

[root@wangbin ~]# rsync --daemon --config=/etc/rsyncd.conf 【启动rsync服务,结合上面创建的配置文件目录】

[root@wangbin ~]# cat /var/log/rsync.log 【启动后,查看日志,检查是否启动】

2017/02/19 06:32:41 [1237] rsyncd version 3.0.6 starting, listening on port 873

[root@wangbin ~]# netstat -lnp |grep 873

tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 1237/rsync

tcp 0 0 :::873 :::* LISTEN 1237/rsync

如果想开机启动,把命令 rsync --daemon --config=/etc/rsyncd.conf 写到/etc/rc.d/rc.loacl 文件内。然后去另一台机器测试。

格式说明 rsync -avL test@192.168.247.129::test/test1 /tmp/test5/

第一个test是配置文件中的auth users,第二个test是配置文件中定义的模块名[test]

[root@thinkpad ~]# rsync -avL test@192.168.247.129::test/test1 /tmp/test5/

Password:

@ERROR: auth failed on module test

rsync error: error starting client-server protocol (code 5) at main.c(1503) [receiver=3.0.6]

出现这种情况,说明前期的搭建过程没有问题,客户端可以连接服务器,失败的原因可能有几个。

1、密码错误

2、secrets file 的格式错误

name:passwd

3、配置文件写错,字母顺序

4、passwd权限问题

5、secrets file文件拥有者与rsync运行者

服务端rsync服务是以什么用户运行,则必须保证secrets file文件拥有者必须是同一个 假设root运行rsync --daemon,则secrets file的owner也必须是root

6、如果是以--password-file=file的方式附带密码

确保客户端密码文件格式无误,与服务端的密码文件不同,

客户端的不用加上用户名,即直接是 123456

7、可以尝试使用本地存在的用户名作为auth users

这个是在网上看到的,没实践过,不过如果都没办法,可尝试一下,

密码不要跟本地用户的系统密码一样就行了。

[root@thinkpad ~]# rsync -avL test@192.168.247.129::test/test1 /tmp/test5/

Password:

receiving incremental file list

rsync: link_stat "/test1" (in test) failed: No such file or directory (2)

sent 4 bytes received 6 bytes 2.86 bytes/sec

total size is 0 speedup is 0.00

rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1505) [receiver=3.0.6]

/etc/rsyncd.conf 配置文件中的 path 路径,是rsync后台传输数据的路径path=/root/rsync ,如果文件放在 /etc/rsync而不是/root/rsync里面,则会有这样的提示。

免密登陆

客户端上面,编辑一个pass文件,如/etc/pass,登陆的时候就可以免密码登陆服务端。

#vim /etc/pass 一定是在客户机上面建立密码文件

写入test的密码

#cat !$

test123

#rsync -avL test@192.168.247.129::test/test1/ /tmp/test8/ --password-file=/etc/pass

此时便不再需要密码

password file must not be other-accessible【报错提示权限太大,密码文件不能被他人读取】

continuing without password file

#chmod 700 /etc/pass 【最好改成400】

关于配置文件中的list

#rsync 192.168.247.136:: 【列出模块名字】

如果list是yes,则可以列出模块名,不是很安全。可以设置成no。这样便不会暴露模块名。

配置文件中的port

#rsync --port 8730 【如果配置文件指定了port,用--port指定】

配置文件中的 use chroot

rsyncd.conf中有一个配置use chroot=true,表示什么意思呢?

A 把用户限定在远程的某个目录下

B 如果要同步的目录下有软链接文件,并且该软链接指向的目标文件在另外一个目录里(path定义的目录外),那么当我们使用-L选项时就不成功了

C 这个选项提高了安全性

10.34 linux系统日志

系统大部分的配置文件路径,都可以再这个里面找到。

配置文件/etc/rsyslog.conf,该配置文件主要信息为:记录哪些服务和需要记录什么等级的信息。日常工作中,遇到服务或者系统的错误或者故障,查看日志都是排查故障最常用的方法。

多关注日志中的erro,cri等信息,error错误,crisis危机。

日志格式:

auth pam产生的日志

authpriv ssh,ftp等登陆信息的验证信息

cron 时间任务相关

kern 内核

lpr 打印

mail 邮件

mark(syslog) rsyslog服务内部的信息,时间标识

news 新闻组

user 用户程序产生的相关信息

uucp unix to unix copy, unix主机之间相关的通讯

local 1~7 自定义的日志设备

日志级别:

debug 有 调试信息 的,日志信息最多

info 一般信息日志,最常用

notice 最具有重要性的普通条件的信息

warning 警告级别

err 错误级别,组织某个功能或者模块不能正常工作的信息

crit 严重级别,阻止整个系统或者整个软件不能正常工作的信息

alert 需要立刻修改的信息

emerg 内核崩溃等严重信息,emergency

none 什么都不记录

从上到下,级别由低到高,记录的信息越来越少

连接符号

. : 大于等于 xxx 级别的信息

.=: 等于 xxx 级别的信息

.!: 在 xxx 之外的等级的信息

/var/log/messages 核心系统日志文件

# ls /var/log/messages*

/var/log/messages /var/log/messages-20170219

Linux系统最核心的日志文件,假若某个服务没有定义日志,那么该服务产生的日志就会记录到这个文件中。为避免一直写入数据占用磁盘空间,可对日志进行归档操作,该日志每周归档一次。记录过程会自动切割文档。可以通过cat,tail查看

日志如何切割,如何命名等规则,是根据/etc/logrotate.conf 来控制归档, 【rotate [rə(ʊ)'teɪt] 循环】。/var/log/messages 由 syslogd进程守护,如果暂停这个服务,系统不会产生/var/log/messages

#cat /etc/logrotate.conf

# 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 【以日期的形式命名】 # uncomment this if you want your log files compressed #compress 【如果想日志被压缩,改成compressed,默认不压缩】

/var/log/wtmp

查看用户登陆历史,不能直接cat查看,只能用 last 查看,#last即可,无需跟路径

/var/log/btmp

查看无效登陆历史,不能cat查看,用 lastb 查看,#lastb即可,无需跟路径

/var/log/maillog

记录邮件相关信息,比如发给谁邮件,是否发出去等信息。

/var/log/secure

一个安全认证相关的日志,比如系统用户登录时,正常登陆或者登陆失败都会记录,也会记录暴力登陆的情况

/var/log/dmesg 日志,记录系统启动时硬件相关信息

#dmesg 是一个命令,主要查看系统实时的硬件设备抛出的信息,如果磁盘异常或者网络异常或者内核异常都会记录下来。只不过这些信息是保存在内存中,一旦重启则消失。日志记录的是启动过程中记录的信息,并不完全一样。

主要记录硬件方面的故障,可以用这个命令查看。

10.35 screen工具

当执行一个脚本或者命令,需要几个小时甚至几天,如果中途断网或出现其他意外情况,执行的任务中断了怎么办。可以把命令或者脚本放到后台,但是也不保险。介绍两种方法避免这样的情况发生。

nohup 命令

作用是不挂断的运行命令,搜集进程在运行的时候产生的日志

[root@wangbin ~]# nohup sleep 100 & 【丢入后台的同时,加上nohup】

[1] 1976

[root@wangbin ~]# nohup: ignoring input and appending output to `nohup.out'

nohup.out便是记录这个日志的文件,可以cat查看日志,但是这里sleep因为本身不会输出日志,所以这里并不能看到有记录。

加 & 就可以放到后台,但是在中断退出时很有可能这个脚本也退出,那么在前面加 nohup 就没有问题了,nohup就是不挂断的运行命令,把运行命令产生的日志都记录到nohup 文件里。

screen 命令

screen 是一个可以在多个进程之间多路复用一个物理终端的窗口管理器。screen中有会话的概念,用户可以在一个screen会话中创建多个screen窗口,在每一个screen窗口中就像操作一个真实的ssh连接窗口一样

#yum install -y screen

#screen 【进入到一个新的连接窗口】

#screen -ls 【查看已经打开的screen会话】

输入图片说明

ctrl + a 再按 d 退出screen会话,只是退出,并没有结束。

ctrl + d 或者 exit 退出

#screen -r 1767 【退出后可通过编号进入,只有一个screeen的时候编号可以省略】

#screen -S aming 【自定义screen 的名字】

#screen -r aming 【进入aming screen】

所以,当有某个长时间运行的命令或者脚本时,就打开一个screen会话,然后运行该任务。按ctrl + a 再按 d 退出会话,不影响端口窗口上的任何操作。

#screeen 【进入一个终端】

#vmstat 1 【vmstat退出】

#screen 【另一个屏幕】

#top 【top退出】

#ps aux |grep -E 'vmstat|top' 【查看后台运行的vmstat和top命令】

#ps aux |grep 'vmstat|top' 【此时并不能grep screeen,因为screen并不是一个进程】

转载于:https://my.oschina.net/u/3461300/blog/1585844

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值