4月20日任务:
10.28 rsync工具介绍
10.29/10.30 rsync常用选项
10.31 rsync通过ssh同步
10.32/10.33 rsync通过服务同步
10.34 linux系统日志
10.35 screen工具
扩展
1. Linux日志文件总管logrotate http://linux.cn/article-4126-1.html
2. xargs用法详解 http://blog.csdn.net/zhangfn2011/article/details/6776925
rsync的使用场景
日志切割工具logrotate
https://linux.cn/article-4126-1.html
xargs
https://blog.csdn.net/gb4215287/article/details/78037520
1、rsync工具介绍
Linux系统下有很多数据备份工具,常用的是rsync,从字面意思理解为remote sync (远程同步)。rsync不仅可以远程同步数据(类似scp),而且可以本地同步数据(类似于cp),但不同cp或者scp的一点是,它不会覆盖以前的数据 (如果数据已经存在),而是先判断已经存在的数据和新数据的差异,只有数据不同时才会把不相同的部分覆盖。
rsync是一款快速且功能非常多的文件复制工具。它可以在本地复制,通过任何远程shell或从另一台主机复制到/从远程 rsync守护进程。它提供了大量的选项控制其行为的每个方面并允许非常灵活指定要复制的文件集。它是著名的其增量转 换算法,可减少发送的数据量通过发送只有来源之间的差异在网络上文件和目标中的现有文件。rsync很广泛用于备份 和镜像以及作为改进的复制命令日常使用。
安装rsync yum install -y rsync
rsync -av /etc/passwd /tmp/1.txt 把/etc/passwd拷贝到tmp/下并改名叫1.txt
上面命令中:
a参数中包含了很多选项
v查看到可视化过程;查看到发送了多少字节;多少字节每秒;文件一共有多大;速度是多少
rsync -av /etc/passwd root@192.168.86.31:/tmp/1.txt 远程复制,输入用户的密码后,可以拷贝
这里要求远程的机器也必须按照rsync,需要验证密码是因为这里没有做两机互联
rsync格式
rsync [OPTION] … SRC DEST 本机的
rsync [OPTION] … SRC [user@]host:DEST
rsync [OPTION] … [user@]host:SRC DEST
rsync [OPTION] … SRC [user@]host::DEST
rsync [OPTION] … [user@]host::SRC DEST
OPTION是选项(a,v),SRC是源文件或目录,DEST是目标目录或者文件;[USER@]host是远程服务器,host代表IP,[USER@]可以省略,如果不写用户名,默认会以当前终端的用户执行
2、 rsync常用选项
-a 包含-r t p l g o D参数选项
-r 同步目录时要加上,类似cp时的-r选项
-v 同步时显示一些信息,让我们知道同步的过程
-l 保留软连接,若是拷贝的原目录里面有一个软链接文件,那这个软链接文件指向到了另外一个目录 下。在加上-l,它会把软链接文件本身拷贝到目标目录里面去
-L 加上该选项后,同步软链接时会把源文件给同步,(可以把软连接所指向的源文件拷贝过去)
-p 保持文件的权限属性
-o 保持文件的属主(如果A是www用户所有者,过去B一样是www用户,如果B没有www用户,会显示成数字,有user1的话就显示成user1)
-g 保持文件的属组
-D 保持设备文件信息,/dev/sdb1这样的设备文件有它的特殊性,如果不加-D可能拷贝过去就是一个 非常普通的文件,不能当设备来用
-t 保持文件的时间属性
--delete 删除DEST(目标目录)中SRC(源目录)没有的文件
--exclude 过滤指定文件,如--exclude “logs”会把文件名包含logs的文件或者目录过滤掉,不同步。可以写多个--exclude
-P 显示同步过程,比如速率,比-v更加详细
--progress 同-P功能一样
-u 加上该选项后,如果DEST(目标目录)中的文件比SRC(源目录里的文件)新,则不同步
-z 传输时压缩
常用选项较多,常用的有:a,-v,-z,--delete和--exclude
123目录作为源,tmp做目标目录
rsync -av /root/123/ /tmp/123_dest/ 同步一个目录,把root下的123目录同步到tmp下并改名为123_dest
rsync -avL --delete /root/123/ /tmp/123_dest/ --delete 删除多余的文件
rsync -avP /root/123/ /tmp/123_dest/ P显示同步过程
3、rsync通过ssh同步
rsync通过ssh方式同步,从A机器到B机器,通过ssh的方式去传输
rsync -av test1/ 192.168.86.31:/tmp/test2/ 推文件,192.168.86.31是目标IP,并且这台机器也需要安装rsync
rsync -avP 192.168.86.31:/tmp/test2/ /tmp/test1/ 拉文件,把远程文件拉回到本机
如果对方机器的端口不是22:
rsync -av -e "ssh -p 22" test1/ 192.168.86.31:/tmp/test2/ (ssh -p 22) 是一个命令指定端口,可以连接对方的指定端口
ssh -p 192.168.86.31 也可以这样去连接对方机器
4、rsync通过服务同步
rsync 通过服务的方式同步 ,默认端口是873
要编辑配置文件/etc/rsyncd.conf
启动服务rsync --daemon
格式:rsync -av /root/123/ 192.168.228.31::test/tobe.txt 两个 ::test //test表示[test]模块名路径/tmp/rsync
rsyncd.conf样例,把下列内容放到/etc/rsyncd.conf配置文件中
port=873
log file=/var/log/rsync.log
pid file=/var/run/rsyncd.pid
address=192.168.86.3
[test] //[test] 模块名
path=/tmp/rsync // 目录为实验目录/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.86.31
然后rsync --daemon 启动服务,通过 ps aux |grep rsync查看服务是否启动
netstat -lntp 查看监听的端口是873,如果不写监听的IP,就会绑定0.0.0.0 全部网段,全部IP为873
mkdir /tmp/rsync 创建实验目录
chmod 777 /tmp/rsync/ 更改权限
yum install -y telnet 安装telnet
telnet 192.168.228.31 873 检测端口是否通畅,下方的端口不通
关闭firewalld
systemctl stop firewalld.service
在B机器上给服务器写文件
rsync -av /root/123/ 192.168.228.3::test/tobe.txt
rsyncd.conf配置文件详解
port:指定在哪个端口启动rsyncd服务,默认是873端口。
log file:指定日志文件。
pid file:指定pid文件,这个文件的作用涉及服务的启动、停止等进程管理操作。
address:指定启动rsyncd服务的IP。假如你的机器有多个IP,就可以指定由其中一个启动rsyncd服务,如果不指定该参数,默认是在全部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或者网段,如果是多个,中间用空格隔开。
use chroot=true|false 当有软链接,需要给其定义为false;
当设置了auth users和secrets file后,客户端连服务端也需要用用户名密码了,若想在命令行中带上密码,可以设定一个密码文件
rsync -avL test@192.168.133.130::test/test1/ /tmp/test8/ --password-file=/etc/pass
其中/etc/pass内容就是一个密码,权限要改为600
第一步、在服务端,创建一个软连接
第二步、修改配置文件 vim /etc/rsyncd.conf
第三步、在另一个客户端同步test模块
rsync -avLP 192.168.176.31::test/ /tmp/test/ 从服务的传输到test目录
-auth users 指定传输时要使用的用户名
secrets file:指定密码文件
5、Linux系统日志
曰志记录了系统每天发生的各种各样的事情,比如监测系统状况、排查系统故障等,可以通过他来检查错误发生的原因.日志的主要功能是审计和监测,还可以实时的监测系统状态,监测和追踪侵入者等等。
/var/log/messages
系统日常日志 /var/log/messages 它是核心系统日志文件,包含了系统启动时的引导消息,以及系统运行时的其他状态 消息。IO错误、网络错误和其他系统错误都会记录到这个文件中。另外其他信息,比如某个人的身份切换为root以及用 户自定义安装的软件(apache)的日志也会在这里列出。
在查看曰志的时候,会发现曰志自动切割了 ls /var/log/messages*
linux系统中有一个logrotate服务,会自动切割日志,防止无限制的增加。
logrotate用来切割日志 /etc/logrotate.conf 日志切割配置文件
查看 cat /etc/logrotate.d/syslog
syslog文件会为cron, maillog, messages, secure, spooled这几个日志进行切割
messages日志是由syslogd服务决定的,所以kill -HUP就会重新加载这个日志
还有一个脚本,shell命令行,在把日志切割后(挪走),改名字生成新的日志
Linux系统有一个特点,一个服务写一个文件的时候,并不是按照文件名去写的,而是根据inode来写的
dmesg命令和dmesg日志
dmesg命令,会把系统硬件相关的日志列出来
这个日志是保存在内存中的,并不是一个文件;假如你的网卡有问题了,硬盘损坏了,都会记录在这个日 志中
dmesg -c清空当前日志;但是一重启这个系统,又会生成这些日志
/var/log/dmesg 日志
注意:这个日志文件和dmesg命令没有任何关联;它是系统启动的一个日志,记录的信息
last命令,调用的文件/var/log/wtmp
last命令,查看你正确的登陆历史
它调用的文件/var/log/wtmp。
里面记录的是谁,在哪里,来源IP,时间,登录的时长都会有记录
/var/log/wtmp日志是一个二进制文件,不能直接cat查看,只能用last命令去查看
lastb命令查看登录失败的用户,对应的文件时/var/log/btmp
对应的文件时/var/log/btmp日志
/var/log/btmp也是二进制文件,不能直接cat的
安全日志
/var/log/secure 登陆操作系统,验证成功会在这里记录要给日志,失败也会记录
6、screen工具 虚拟终端
有时候我们需要执行一个命令或脚本,需要几小时甚至几天,在这个过程中,如果中途断网或者出现有其他意外情况怎么办,当然也可以把命令或者脚本放到后台运行,不过不保险,无法在屏幕上随时查看,这就要用到虚拟终端screen。
单个screen,建立、退出
首先安装screen包 : yum install -y screen
输入screen直接回车就进入了虚拟终端
ctrl+a ,再按d,退出虚拟终端,但不是结束
screen -ls 查看已打开的screen会话
退出后,如果想再次登入某个screen会话,可以使用的是screen -r id 进入指定的终端
exit,可以直接退出screen会话
如果有多个screen会话,可以通过id进入指定的会话
如果screen太多,却不知道其功能作用,需要命令和定义
screen -S "test_screen" 定义一个自定义的名字-S