rsync介绍html
rsync是一个同步工具,在平常的运维中常会用到。它能够本地同步,也实现能够远程两台机器同步。node
好比有个需求:有A、B目录两个目录,A目录文件一直在不定时的增长,想要把A目录里面的数据拷贝到B目录下去。而且要求每小时拷贝一次,若是用cp来实现只能覆盖,而且浪费磁盘IO。这种状况就可使用rsync,它能够增量的同步。linux
rsync安装shell
yum -y install rsync
vim
rsync命令格式安全
rsync [OPTION] … SRC DEST
//OPTION为参数,SRC源,DEST目标服务器
rsync [OPTION] … SRC [user@]host:DEST
//远程拷贝,若是不写user就默认使用当前的用户session
rsync [OPTION] … [user@]host:SRC DEST
// 反向拷贝,把远程机器上的文件或目录拷到本地架构
rsync [OPTION] … SRC [user@]host::DEST
// 多了:: ,后面在讲运维
rsync [OPTION] … [user@]host::SRC DEST
rsync经常使用选项
/etc/passwd 拷贝到/tmp/目录下而且更名为1.txt
rsync -av /etc/passwd /tmp/1.txt
-a :包含-rtplgodD选项
-v:可视化显示
远程拷贝
rsync -av /etc/passwd root@47.106.84.56:/tmp/
rsync同步目录
rsync -av /root/test/ /tmp/test_dest/
同步目录时,文件结尾不能少了"/"
软链接拷贝
加上-L 参数后,会把参数 -l 的含义给覆盖掉。-L会把软连接所指向的源文件给拷贝过去
rsync -avL /root/test/ /tmp/test_dest/
删除目标中源文件中没有的内容
rsync -av --delete /root/test/ /tmp/test_dest/
test_dest目标目录中有666.txt,可是源目录test目录中没有这个文件
执行完同步后,666.txt被删除
过滤文件同步
过滤掉全部.txt文件
rsync -av --exclude "*.txt" /root/test/ /tmp/test_dest/
也能够支持多重多虑
rsync -avL --exclude "*.txt" --exclude="11*" /root/test/ /tmp/test_dest/
-P参数,详细的显示同步过程
rsync -avP /root/test/ /tmp/test_dest/
-u参数 ,目标中的文件比源新,则不一样步
修改/tmp/test_dest/111.py文件
加上-u参数,再执行同步发现111.py并无被以前的文件覆盖掉
rsync -avu /root/test/ /tmp/test_dest/
-z 参数,压缩传输
若是传输文件比较大能够加上这个参数
rsync -avz /root/test/ /tmp/test_dest/
ssh远程同步条件
两台机器,能够ping通 而且都安装了rsrnc包
远程同步示例
rsync -av /etc/passwd 193.112.38.222:/tmp/test222
193.112.38.222:是目标机器ip,输入密码就能够同步了
将远程机器上的文件拉取到本地
rsync -av 193.112.38.222:/tmp/test222 /tmp/test333
指定端口进行传输
若是对方机器不是默认的22端口,能够-e指定端口进行传输
rsync -av -e "ssh -p 22" /etc/passwd 193.112.38.222:/tmp/test222
rsync经过服务的方式同步,首先须要开启一个服务。它是C/S架构,开启rsync daemo服务,默认端口是873。daemon模式是守护进程。
开启服务后,客户端就能够经过873端口进行通讯。
服务配置文件:
配置文件地址是 /etc/rsyncd.conf。(也能够更改路径,可是在更改路径后,就须要在启动服务的时候,去rsync --daemon//conf=后跟路径)
配置文件样例
port=873 log file=/var/log/rsync.log pid file=/var/run/rsyncd.pid address=172.18.11.153 [test] path=/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.133.132 1.1.1.1 2.2.2.2 192.168.133.0/24
配置文件解释:
参数名 | 解释 |
---|---|
port | 指定rsync服务端口,默认是873 |
log file | 指定日志文件 |
pid file | 指定pid文件 |
address | 指定rsync启动服务的ip,若有多个ip就能够指定其中一个ip启动。若是不指定改参数,默认是所有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或者网段,若是是多个,中间用空格隔开。 当设置了auth users和secrets file后,客户端连服务端也须要用用户名密码了,若想在命令行中带上密码,能够设定一个密码文件 |
启动服务
rsync --daemon
检查服务
netstat -lntp |grep 873
ps -aux |grep rsync
测试
rsync -av /tem/test11111.txt 172.18.11.153::test/tmp/test2222.txt
::为模块名,也就是配置文件中[test]
rsync传输时设置用户名密码
一、配置文件中指定用户名和密码文件
auth users=test secrets file=/etc/rsyncd.passwd
二、编辑/etc/rsyncd.passwd
密码格式为:test:wxy123
修改权限为600
chmod 600 /etc/rsyncd.passwd
三、测试
rsync -avP /tmp/test/ test@172.18.11.153::test/
客户端设置密码文件
在rsync传输文件的时候,在写shell脚本输入密码很差,这时候在客户端也定义一个密码文件
一、设置密码文件
vim /etc/rsync_pass.txt
格式:客户端只写一个密码便可
并修改权限为600
chmod 600 /etc/rsync_pass.txt
二、测试
rsync -avP /tmp/test/ --password-file=/etc/rsync_pass.txt test@172.18.11.153::test/
这里须要加上--password-file=/etc/rsync_pass.txt
系统日志
/var/log/messages 是linux的系统总日志,
系统中日志会有自动切割机制,增加到必定级别就会自动切割:
切割机制的配置文件
/etc/logrotate.conf
参数解释:
weekly //每周切割一次
rotate 4 //4周一次轮换
create //建立新的
compress //是否须要压缩,默认是注释的
/etc/logrotate.d/syslog 这个会给cron,maillog,messages,secure,spooler这几个日志进行切割
Linux系统有一个特色,一个服务写一个文件的时候,并非按照文件名去写的,而是根据inode来写的
dmesg命令
一、dmesg会把系统的硬件日志列出来
二、这个个日志是保存在内存中的,并非一个文件
三、dmesg -c 清空当前日志
四、/var/log/dmesg这个日志文件和dmesg命令没哟任何关联,它是系统启动的一个日志
last命令
一、last命令是调用的/var/log/wtmp 日志
二、日志内容包含:用户、登陆终端、源IP、时间、登陆时长
三、/var/log/wtmp日志是-个二进制文件,不能直接查看的,只能用last命令去查看
lastb 命令查看登陆失败的用户
一、lastb命令是调用的/var/log/btmp 日志
二、日志内容包含:用户、登陆终端、登陆IP、时间、登陆时长
三、/var/log/btmp日志也是-个二进制文件,不能直接查看的,只能用lastb命令去查看
四、若是服务器被暴力登陆(被黑),这个日志通常会有不少条记录
安全日志
/var/log/secure 这个日志会记录系统的登陆信息,成功失败都会记录。若是系统有可能被暴力能够查看这个日志
screen它是虚拟的一个屏幕,也能够理解为一个虚拟的终端。
使用需求
需求:执行一个脚本,时间很长 ,而且这个脚本会输出一些信息。要保证这个脚本不能中断。
解决方法:
一、nohup command & 把脚本丢到后台,并加一个日志。可是这样没办法实时的查看输出信息
二、screen工具,能够把要执行的命令,放到这个终端里,而后在退出pts/0以前,能够把screen丢到后台去,随时用, 随时查看 。
screen安装
yum install -y screen
使用
安装完成后直接输入screen命令,会进入到screen,进入到一个窗口,这个窗口就是一个虚拟终端
虚拟终端,执行vmstat 1命令,而后 ctrl+a键 再按 d键 ,就把screen丢到后台了
执行screen -ls 命令,列出当前全部的session
执行screen -r 再加查看到的id 命令,再回到虚拟终端
screen -r 1558
想要退出screen ,直接exit便可
建立一个自定义名字的screen,加上-S选项,能够指定自定义的名字
screen -S wxy
日志切割logrotate详解:https://linux.cn/article-4126-1.html