回顾
设置开机自启systemctl enable sshd
由于需要修改sshd端口,停用selinux服务
Setenforce 0
关闭防火墙
Systemctl stop firewalld
Systemctl disable firewalld //开机不自启
对称加密和非对称加密
Des 信息传输的双方使用一个密钥
Rsa 公钥和私钥 两套加密算法
使用ssh远程管理
- 账号密码方式
Ssh -l 用户 -p端口 用户域名/ip地址
Ssh -p端口 用户@ip
如果端口默认22,不需要添加-p
Ssh 用户@ip
修改ssh服务端口,不允许root远程登录
Vim /etc/ssh/ssh_conf
#38 root
#17 端口
重启
root无法远程登陆,需要其他的用户权限
- 密钥对
- 选择一个账户
- 生成公钥和私钥 ssh-keygen
- ~/.ssh/
id_rsa 私钥
Id_rsa.pub 公钥
将公钥中的字符串追加到对方主机的对应用户的家目录的~/.ssh/authorized_key
- Ssh-copy-id -p9999 用户@ip
Linux系统下数据同步服务rsync
一.概述
sync同步:强制把缓存中的数据写入磁盘
async异步:将数据放到缓存区,在周期性(一般是30s)的同步到磁盘
rsync远程同步
rsync特点
可以镜像保存整个目录树和文件系统
可以保留原有权限
二.rsync的使用
1.安装rsync
yum -y install rsync
[root@y ~]# yum -y install rsync
基本选项
- rsync语法
rsync -av 源数据位置 目录位置
文件的增加会同步
修改文件也会被rsync同步
文件的删除(--delete)
文件的属性
- 本地文件同步
在家目录中创建一些文件,将文件同步到opt下
[root@y ~]# mkdir folder
[root@y ~]# mkdir folder/f{1..3}
[root@y ~]# tree folder/
[root@y ~]# touch folder/f1/file{0..4}
[root@y ~]# tree folder/
将folder目录下的文件传递到opt
[root@y ~]# rsync -av folder/ /opt/ //folder加/将folder目录下的文件同步过去
[root@y ~]# rsync -av folder /opt/ //folder不加/把folder整个目录同步过去
rsync -R选项的应用(保留相对路径) 也会携带目录
[root@y ~]# rsync -avR folder/ /opt/(加R表示把folder目录同步过去folder加不加/都是同步folder目录)
[root@y ~]# rsync -av folder/f1/ folder/f2/
[root@y ~]# rm -rf folder/f1/file0
[root@y ~]# rsync -av --delete folder/f1/ folder/f2/
[root@y ~]# chmod g+w folder/f1/file1
[root@y ~]# rsync -av --delete folder/f1/ folder/f2/
5.远程同步-----要求对面主机也要安装rsync
向x主机/tmp目录同步数据
[root@y ~]# rsync -av folder/ root@192.168.2.12:/tmp/
在x主机里面创建一个300M的文件
[root@x ~]# dd if=/dev/zero of=/tmp/lajiwenjian bs=300M count=1
在远程主机上拉取文件
[root@y ~]# rsync -av root@192.168.2.12:/tmp/lajiwenjian /tmp/
6.rsync作为系统服务
1)Linux系统服务的思路:
对外提供服务——>端⼝监听——>==启动服务==——>启动脚本——>配置⽂件
2)[root@y ~]# systemctl start rsyncd //启动服务
3)[root@y ~]# netstat -lntup|grep rsync //查看端口
4)查找服务的配置文件
[root@y ~]# find / -name "rsync*conf"
/etc/rsyncd.conf
[root@y ~]# mkdir -p /app/studentweb/src/main/java/co/goho/tjj.studentweb/
[root@y ~]# touch /app/studentweb/src/main/java/co/goho/tjj.studentweb//File{0..9}.java
[root@y ~]# systemctl stop firewalld
[root@y ~]# setenforce 0
[root@y ~]# cd /app/studentweb/
[root@y studentweb]# vim /etc/rsyncd.conf
[root@y studentweb]# systemctl restart rsyncd
以上操作在y主机提供了一个针对/app/下的项目rsync服务
下次访问直接找服务
[root@x ~]# rsync -a root@192.168.2.11:: //设置是否能够检测到项目app
5)在x主机里面把rsync项目拉取过去(不需要启动rsync服务)
[root@x ~]# rsync -av root@192.168.2.11::app /tmp/
7.自动化的推送拉取文件
例如:每1min自动推送
1)找到rsync的which地址
which rsync
/usr/bin/rsync
2)编辑计划任务
crontab -e
3)然后在x主机/tmp/下查看
8.为rsyncd服务添加密码:
1)编辑vim /etc/rsync.conf
添加两个属性
auth users=user0,user1
aecrets file=/etc/rsync.secrets
[root@y ~]# vim /etc/rsyncd.conf
2)创建编辑密码 账号:密码
[root@y ~]# vim /etc/rsync.secrets
3)必须给/etc/rsync.secrets添加权限
[root@y ~]# chmod 600 /etc/rsync.secrets //更改密码文件权限为600
4)重启rsyncd服务
Systemctl restart rsyncd
5)在x主机上拉取文件
[root@x ~]# rsync -av zhangsan@192.168.2.11::app /tmp/
9.实现代码实时同步
1)直接安装inotify-tools(监听工具)
Yum -y install inotify-tools 监听指定目录,一旦目录发生修改,就执行指定的指令
[root@y ~]# yum -y install inotify-tools
[root@y ~]# inotifywait mr /app/
一旦inotifywait监听到目录中的改变,就直接推送
- 编写inotifytest.sh脚本
#!/bin/bash
/usr/bin/inotifywait -mrq -e modify,delete,create,attrib,
move /app/studentweb|while read events
do
rsync -av /app/studentweb/ root@192.168.2.12:/tmp/
Done
3)[root@y ~]# ./inotifytest.sh //执行脚本 文件没有改变不动,会卡那
4)[root@y ~]# touch /app/studentweb/tt.txt //再开一个终端创建文件
监听就会动
5)让inotifytest.sh一直执行下去
[root@y ~]# nohup ./inotifytest.sh & //在后台一直执行,不显示