10.28 rsync工具介绍
rsync(remote sync)即远程同步。rsync不仅可以远程同步数据(类似于scp),而且可以本地同步数据(类似于cp),但不同于cp或scp的是,它不会覆盖以前的数据,而是先判断已经存在的数据和新数据的差异,只有数据不同时才会把不相同的部分覆盖。
rsync的安装命令为:yum install -y rsync。
rsync的命令格式:
rsync [选项] ... SRC DEST
rsync [选项] ... SRC [ USER@ ]HOST:DEST
rsync [选项] ... [ USER@ ]HOST: SRC DEST
rsync [选项] ... [ USER@ ]HOST::SRC DEST
rsync [选项] ... SRC [ USER@ ]HOST::DEST
10.29 rsync常用选项(上)
-a:归档模式,表示以递归的方式传输文件,并保持所有属性,等同于-rlptgoD。-a选项后面可以跟一个--no-OPTION,表示关闭-rlptgoD中的某一个,比如-a--no-l等同于-rptgoD。
-r:以递归的方式处理子目录。主要是针对目录来说的,如果单独传一个文件不需要加-r选项,但是传输目录时必须要加。
-v:打印一些信息,比如文件列表、文件数量等。
-l:保留软链接。
-L:表示像对待常规文件一样处理软链接。如果是SRC中有软链接文件,则加上该选项后,将会把软链接指向的目标文件复制到DST。
-p:保持文件权限。
-o:保持文件属主信息。
-g:保持文件属组信息。
-D:保持设备文件信息。
-t:保持文件时间信息。
--delete:删除DST中SRC没有的文件。
--exclude=PATTERN:指定排除不需要传输的文件,等号后面跟文件名,可以是万用字符模式(如*.txt)。
--progress:在同步的过程中可以看到同步的过程状态,比如统计要同步的文件数量、同步的文件传输速度等。
-u:表示把DST中比SRC还新的文件排除掉,不会覆盖。
-z:加上该选项,将会在传输过程中压缩。
常用的选项有-a、-v、-z、--delete和--exclude这几个。
10.30 rsync常用选项(下)
我们先建立一些目录和文件,然后对rsync的各个选项分别做详细介绍。
使用-a选项:
从上图可见,我们本来想把test1目录直接复制成test2目录,可结果rsync却新建了test2目录,然后把test1放到了test2中。为了避免这样的情况发生,我们可以这样做:
这里加一个/就可以解决上面的问题,所以在使用rsync备份目录时,要养成加/的习惯。
我们知道-a选项等同于-rlptgoD,且-a还可以和--no-OPTIN一并使用。再来看看-l选项的作用:
如上图可见,如果不使用-l选项,系统则不会复制软链接文件。
使用-L选项:
如上图可见,加-L选项就可以把源目录中的软链接的目录文件复制到目的目录中。
使用-u选项:
我们先查看下test1/1和test2/1的创建时间,然后使用touch修改test2/1的创建时间,让test2/1比test1/1的创建时间晚一些。
然后不加-u选项进行同步:
此时,test2/1的创建时间还是和test1/1是一样的。下面加上-u选项:
如上图可见,加上-u选项后,不会再把test1/1同步为test2/1了。
使用--delete选项:
首先删除test1/123.txt,然后把test1/目录同步到test2/目录下:
我们会发现,test2/目录并没有删除123.txt文件。
加上--delete选项后:
此时,test2/目录下的123.txt文件也被删除了。
还有一种情况,如果在目录目录中增加了文件,而源目录中没有这些文件,同步时加上--delete选项后同样会删除新增的文件:
使用--exclude选项:
该选项还可以与匹配字符*一起使用:
10.31 rsync通过ssh同步
rsync [选项] ... SRC [ USER@ ]HOST:DEST
rsync [选项] ... [ USER@ ]HOST: SRC DEST
上面两种方式就是通过ssh的方式备份数据,通过ssh的方式,其实就是让用户登录到远程机器,然后执行rsync的任务:
也可以使用第三种方式复制:
10.32 rsync通过服务同步(上)
这种方式可以理解为:在远程主机上建立一个rsync的服务器,在服务器上配置好rsync的各种应用,然后将本机作为rsync的一个客户端连接远程的rsync服务器。
配置一台rsync服务器的方法:
在192.168.6.120主机上建立并配置rsync的配置文件/etc/rsyncd.conf,如下图所示:
参数的作用:
port:指定在哪个端口启动rsyncd服务,默认是873端口。
log file:指定日志文件。
pid file:指定pid文件,这个文件的作用涉及服务的启动、停止等进程管理操作。
address:指定启动rsyncd服务的IP。假如你的机器有多个IP,就可以指定由其中一个启动rsyncd服务,如果不指定该参数,默认是在全部IP上启动。
[ ]:指定模块名,里面内容自定义。
path:指定数据存放的路径。
use chroot true|false:表示在传输文件前,首先chroot到path参数所指定的目录下。这样做的原因是实现额外的安全防护,但缺点是需要root权限,并且不能备份指向外部的符号连接所指向的目录文件。默认情况下chroot的值为true,如果你的数据当中有软链接文件,则一般设置为false。
max connections:指定最大的连接数,默认为0,即没有限制。
read only ture|false:如果为true,则不能上传到该模块指定的路径下。
list:表示当用户查询该服务器上的可用模块时,该模块是否被列出,设定为true则列出,设定为false则隐藏。
uid|gid:指定传输文件时以哪个用户/组的身份传输。
auth users:指定传输时要使用的用户名。
secrets file:指定密码文件,该参数连同上面的参数如果不指定,则不使用密码验证。注意,该密码文件的权限一定要是600。
hosts allow:表示被允许连接该模块的主机,可以是IP或者网段,如果是多个,中间用空格隔开。
编辑secrets file并保存后要赋予600权限,如果权限不对,则不能完成同步:
如果想开机ynfcrsyncd服务,请把/usr/bin/rsync --daemon --confg=/etc/rsyncd.conf写入/etc/rc.d/rc.local文件中。
10.33 rsync通过服务同步(下)
上面的例子中,都是要输入密码,这意味着我们不能写入脚本中自动执行。其实这种方式可以不用手动输入密码,有两实现方式。
(1)、指定密码文件
(2)、在rsync服务端不指定用户
10.34 Linux系统日志
日志记录了系统每天发生的事情,比如监测系统善、排查系统故障等。可以通过日志来检查错误发生的原因,或者受到攻击时攻击都留下的痕迹。
日志的主要功能是审计和监测,还可以实时地监测系统状态,监测和追踪侵入者等。
日志文件/var/log/messages是核心系统日志文件,包含了系统启动时的引导消息,以及系统运行时的其他状态消息。I/O错误、网络错误和其他系统错误都会记录到这个文件中。其他信息,比如某人个的身份切换为root,以及用户自定义安装的软件日志也会在这里列出。
通常情况下,/var/log/messages是做故障诊断时首先要查看的文件。系统有一个日志轮询的机制,每星期切换一个日志,切换后的日志名字类似于messages-20181122,会存放在/var/log目录下面,连同messages一共有5上这样的日志文件。20181122是日期,表示日志切割的年月日,这是通过logrotate工具的控制来实现的,配置文件是/etc/logrotate.conf。
/var/log/messages是由rsyslogd这个守护进程产生的,如果停止这个服务,系统就不会产生/var/log/messages,所以不能停止这个服务。rsyslogd服务的配置文件为/etc/rsyslog.conf,这个文件定义了日志的级别。
命令dmesg可以显示系统的启动信息,如果某个硬件有问题,用这个命令也是可以看到的。
last命令用来查看登录Linux的历史信息:
last命令输出的信息实际上是读取了二进制日志文件/var/log/wtmp,只是这个文件不能直接使用cat、vim、head、tail等工具查看。
/var/log/secure也是和登录信息有关的日志文件。该日志文件记录验证和授权等方面的信息,比如ssh登录系统成功或失败时,相关的信息都会记录在这个日志里。
10.35 screen工具
screen是一个可以在多个进程之间多路复用一个物理终端的窗口管理器。screen中有会话的概念,用户可以在一个screen会话中创建多个screen窗口,在每一个screen窗口中就像操作一个真实的SSH连接窗口一样。
screen的安装命令如下:
yum install -y screen
在命令窗口中直接输入screen,就可以进入一个虚拟终端:
查看已经打开的screen会话:
退出screen会话的方法:按Ctrl+A键,然后再按d退出(只是退出,不是结束,结束screen会话要按Ctrl+D或者输入exit)。
退出后如果还想再次登录某个screen会话,可以使用命令screen -r [ screen 编号 ](编号如上图的2997)。如果当前只打开一个screen会话,后面的编号可以省略。
当需要长时间运行某个命令或者脚本时,就打开一个screen会话,然后运行该任务,按Ctrl+A键,再按d键退出会话,这样不影响终端窗口上的任何操作。