日常运维 4

rsync工具介绍

 

rsync工具是在Linux系统下数据备份的工具。字面理解就是remote sync(远程同步)。它不仅可以远程同步数据,而且可以本地同步数据(类似于cp ),相对于cp命令的区别在于它不会覆盖以前的数据(如果数据已存在),而是先判断已经存在的数据和新数据的差异,只有数据不同时才会把不相同的部分重复。→(增量拷贝)

下载rsync

yum install -y rsync

本地同步

rsync -av /etc/passwd /tmp/1.txt

 

日常运维 4

远程同步

rsync -av /etc/passwd [email protected]:/tmp/1.txt

日常运维 4

rsync [OPTION] … SRC [[email protected]:DEST]

可以只写IP地址,不加用户就默认为当前终端的用户

 

rsync常用选项

rsync命令的常用选项

(1)-a 这是归档模式,表示以递归方式传输文件,并保持所有属性,它等同于-rtplgoD。

如果要关闭-rtplgoD中某个选项,可以在-a选项后跟一个– no-[OPTION] 。例:-a –no-D等同于-rtplgo

(2)-r 同步目录时要加上,类似cp时的-r选项。如果单独传输一个文件不需要加-r选项。

(3)-v 同步时显示一些信息,让我们知道同步的过程

(4)-l 保留软链接

(5)-L 加上该选项后,同步软链接时会把源文件给同步(会把软链接指向的目标文件同步过去)

(6)-p 保持文件的权限属性

(7)-o 保持文件的属主

(8)-g 保持文件的属组

(9)-D 保持设备文件信息

(10) -t 保持文件的时间属性

(11)–delete 删除DEST中SRC没有的文件

(12)–exclude 过滤指定文件,如:–exclude “logs”会把文件名包含logs的文件或者目录过滤掉,不同步(支持通配符)

(13)-P 显示同步过程,比如速率,比-v更加详细

(14)-u 加上该选项后,如果DEST中的文件比SRC新,则不同步(表示把DEST中比SRC还新的文件排除掉,不会覆盖)

(15)-z 加上该选项,将会在传输过程中压缩。(节省带宽)

 

本地同步

rsync -av /root/lioo/ /tmp/lioo_dest/

日常运维 4

 

加上-L选项后,会覆盖小-l选项。把软链接指向的目标文件内容同步过去

rsync -avL /root/lioo/ /tmp/lioo_dest/

日常运维 4

 

--delete 选项删除目标文件中源文件没有的文件

rsync -avL --delete /root/lioo/ /tmp/lioo_dest/

日常运维 4

 

--exclude 过滤掉不需要传输的文件 不支持连写 但能写多个--exclude

rsync -avL --exclude "*.txt" --exclude "x*" /root/lioo/ /tmp/lioo_dest/

日常运维 4

 

-P 更详细的显示同步过程

rsync -avP /root/lioo/ /tmp/lioo_dest/

日常运维 4

 

-u选项 保护目标目录下比原目录中还新文件不会被覆盖

rsync -avPu /root/lioo/ /tmp/lioo_dest/

 

日常运维 4

-z 加上该选项,将会在传输过程中压缩(远程传输较大文件时)

rsync -avPz /root/lioo/ /tmp/lioo_dest/

 

 

rsync通过ssh同步

要求2台机器可以通信 都需要安装了 rsync

将文件传到对方机器上

rsync -avP /etc/passwd 192.168.217.128:/tmp/123.txt

日常运维 4

 

也可以在对方机器中文件下载到我的机器中

rsync -avP 192.168.217.128:/tmp/123.txt /root/123.txt

日常运维 4

 

-e "ssh -p 22" 指定22端口

rsync -avP /etc/passwd -e "ssh -p 22" 192.168.217.128:/tmp/111.txt

日常运维 4

 

远程登录到对方机器

ssh -p 22 192.168.217.128

日常运维 4

 

 

rsync通过服务端同步

通过服务的方式连接 :在远程主机上建立一个rsync的服务器,然后将本机作为rsync的一个客户端连接远程的rsync服务器。(c/s架构)

监听端口,默认873 。也可以自定义

 

rsync -avP /tmp/111.txt 192.168.217.129::test/888.txt

启动服务前需要编辑配置文件,默认是在/etc/rsyncd.conf里面

如果不是在/etc/rsyncd.conf里面,启动服务是格式为:rsync --daemon /etc/rsyncd.conf=文件路径

如在/etc/rsyncd.conf下,则可以不写文件路径,直接使用rsync –daemon来启动服务

 

首先配置a机器的服务

vi /etc/rsyncd.conf 删除里面的内容重新编辑下面内容

 

port=873 指定端口 默认873

log file=/var/log/rsync.log 日志文件

pid file=/var/run/rsyncd.pid 指定pid文件 涉及服务启动停止等进程操作

address=192.168.217.129 启动rsyncd服务的ip 多个ip时可以指定一个或多个(自己)

[test] 指定模块名

path=/tmp/rsync 指定传输目录自定义

use chroot=true 默认值为true,如果你的数据当中有软链接文件 建议设成false

max connections=4 最大客户端连接数 0为没有限制

read only=no false/true如果为yes则不能上传到该模块指定的路径下

list=true 用户查询是服务器的模块名 true列出 false隐藏

uid=root 指定传输文件时用户的身份

gid=root

#auth users=test 指定传输时的用户名

#secrets file=/etc/rsyncd.passwd 指定传输时的密码文件 做实验先注释掉

hosts allow=192.168.217.128 允许同步的机器ip(目标)可以空格写多个

 

设置密码是需要创建文件 vi /etc/rsyncd.passwd

格式:传输时的用户名:密码

chmod 600 /etc/rsyncd.passwd 再把文件权限改成600

日常运维 4

rsync --daemon 启动服务

查看进程和和端口

ps aux |grep rsync

netstat -lnp|grep rsync

日常运维 4

 

创建传输文件目录

mkdir /tmp/rsync/

chmod 777 /tmp/rsync/

日常运维 4

 

报错无法传输 显示没有路由到远程机器上去

rsync -avP /tmp/111.txt 192.168.217.129::test/888.txt

把b机器的111文件传到a机器中改名为888

日常运维 4

 

排错步骤

先检查网络是否通信 ,

再使用telnet 查看指定的端口是否打开。

telnet的安装命令:yum install -y telnet

 

telnet 192.168.217.129 873 发现873端口没有接通

日常运维 4

关闭两台机器的iptables的防火墙

systemctl stop firewalld

 

日常运维 4

再次 telnet 192.168.217.129 873 端口已经启用

 

把b机器的111文件传到a机器中改名为888 显示传输成功

rsync -avP /tmp/111.txt 192.168.217.129::test/888.txt

日常运维 4

也可以a机器上的文件下载到b机器上

rsync -avP 192.168.217.129::test/888.txt /tmp/666.txt

 

873端口被占用

修改配置文件的端口如8730

rsync -avP /tmp/333.txt --port 8730 192.168.217.129::test/111.txt

 

如果设置用户名和密码有又想在传输时不输入密码

在b机器上添加配置文件

vi /etc/rsync_passwd 只把a机器设置的密码写进去

chmod 600 /etc/rsync_passw 修改权限

rsync -avP /tmp/333.txt --port 8730 --password-file=/etc/rsync_passwd [email protected]::test/111.txt

日常运维 4

 

 

linux系统日志

Linux系统中会有很多的日志文件,这些文件可以帮助我们了解很多系统的重要事件。这些文件一般都存放在/var/log目录中。常见的日志文件有:

1./var/log/messages:这个文件相当重要,几乎系统发生的所有错误信息或重要信息都会记录在这个文件中,包含系统启动时的引导消息及系统运行时的其他状态消息。

2./var/log/secure:记录系统的安全信息,如ssh、ftp、pop3

3./var/log/dmesg:记录系统在启动时核心检测过程所生产的各项信息

4./var/log/lastlog:记录系统上所有用户最后一次登录系统的信息,lastlog命令就是利用该文件的内容来显示数据的。

5./var/log/wtmp:记录用户登录系统及退出系统的信息,该文件是经过处理的,无法直接查看,可以使用相关命令来查看,如last和ac命令

6./var/log/boot.log:记录守护进程启动和停止相关的日志信息

7./var/log/faillog:记录登录失败时的用户信息

8./var/log/cron:记录与定时任务crontab相关的日志信息

9./var/log/httpd/, /var/log/news/, /var/log/samba/*: 各个服务的日志文件,记录各自的服务产生的日志信息

syslogd服务可以帮助我们主动收集到设备的各种信息,并将其保存在服务器上,当出现问题时可以省去手动收集信息的麻烦,方便快捷的从syslogd服务中读取各种信息进行分析排错。

/etc/logrotate.conf : 日志切割配置文件

dmesg命令 : 在内存中的日志查看硬件的问题 -c 清空

/var/log/dmesg : 系统启动的日志

last命令 :调用的文件/var/log/wtmp 查看正确的登录历史

lastb命令:调用的对应的文件是/var/log/btmp 看登录失败的用户,

/var/log/secure : 安全日志

 

screen工具

能防止远程执行的命令因网络中断导致的进程中断

安装命令

yum install -y screen

常见用法

screen直接回车就进入了虚拟终端

ctrl a组合键再按d退出虚拟终端,但不是结束

screen -ls 查看虚拟终端列表

screen -r id 进入指定的终端

screen -S w1

screen -r w1

需求,执行一个脚本,需要一天一夜,而且脚本会输出一些东西出来,这就意味着这个脚本不能中途断开,保证脚本不中断,有两种方法:

方法一:把这个任务丢到后台去,然后加一个日志的输出

命令nohup command &——>nohup 加执行命令 加日志 再加一个&符号

这时即使你的终端断开,依旧会在后台执行——>但虽然解决了任务中断的问题,但是没有办法实时查看输出的内容

方法二:screen工具,可以把要执行的命令,放到这个终端里,然后在退出pts/0之前,可以把screen丢到后台去,随时用, 随时查看

screen可以执行多个虚拟终端,同时运行,若想进入到其中一个,指定id即可

但是时间久了,有可能会忘记某一个screen是运行的是什么(因为名字是相同的)

我们可以给screen作业的名称

screen -S "test_screen"

screen -r 后可以加id号,可以是screen作业的名称