日常运维 4
rsync工具介绍
rsync工具是在Linux系统下数据备份的工具。字面理解就是remote sync(远程同步)。它不仅可以远程同步数据,而且可以本地同步数据(类似于cp ),相对于cp命令的区别在于它不会覆盖以前的数据(如果数据已存在),而是先判断已经存在的数据和新数据的差异,只有数据不同时才会把不相同的部分重复。→(增量拷贝)
下载rsync
yum install -y rsync
本地同步
rsync -av /etc/passwd /tmp/1.txt
远程同步
rsync -av /etc/passwd [email protected]:/tmp/1.txt
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/
加上-L选项后,会覆盖小-l选项。把软链接指向的目标文件内容同步过去
rsync -avL /root/lioo/ /tmp/lioo_dest/
--delete 选项删除目标文件中源文件没有的文件
rsync -avL --delete /root/lioo/ /tmp/lioo_dest/
--exclude 过滤掉不需要传输的文件 不支持连写 但能写多个--exclude
rsync -avL --exclude "*.txt" --exclude "x*" /root/lioo/ /tmp/lioo_dest/
-P 更详细的显示同步过程
rsync -avP /root/lioo/ /tmp/lioo_dest/
-u选项 保护目标目录下比原目录中还新文件不会被覆盖
rsync -avPu /root/lioo/ /tmp/lioo_dest/
-z 加上该选项,将会在传输过程中压缩(远程传输较大文件时)
rsync -avPz /root/lioo/ /tmp/lioo_dest/
rsync通过ssh同步
要求2台机器可以通信 都需要安装了 rsync
将文件传到对方机器上
rsync -avP /etc/passwd 192.168.217.128:/tmp/123.txt
也可以在对方机器中文件下载到我的机器中
rsync -avP 192.168.217.128:/tmp/123.txt /root/123.txt
-e "ssh -p 22" 指定22端口
rsync -avP /etc/passwd -e "ssh -p 22" 192.168.217.128:/tmp/111.txt
远程登录到对方机器
ssh -p 22 192.168.217.128
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
rsync --daemon 启动服务
查看进程和和端口
ps aux |grep rsync
netstat -lnp|grep rsync
创建传输文件目录
mkdir /tmp/rsync/
chmod 777 /tmp/rsync/
报错无法传输 显示没有路由到远程机器上去
rsync -avP /tmp/111.txt 192.168.217.129::test/888.txt
把b机器的111文件传到a机器中改名为888
排错步骤
先检查网络是否通信 ,
再使用telnet 查看指定的端口是否打开。
telnet的安装命令:yum install -y telnet
telnet 192.168.217.129 873 发现873端口没有接通
关闭两台机器的iptables的防火墙
systemctl stop firewalld
再次 telnet 192.168.217.129 873 端口已经启用
把b机器的111文件传到a机器中改名为888 显示传输成功
rsync -avP /tmp/111.txt 192.168.217.129::test/888.txt
也可以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
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作业的名称