Morning
[root@1 ~]# firewalld-cmd --zone=public --add-port=9999/tcp
[root@1 ~]# chmod -R g+w /code //-R递归赋予权限
[root@1 ~]# ssh-copy-id -p9999 用户@IP地址
[root@1 ~]# scp -P9999 文件 用户@IP地址:详细地址
一、ssh回顾
1.安装
openssh 开源
openssh-server 、openssh-client
启动 systemctl start ssh
设置开机自启 systemctl enable ssh
由于需要修改sshd端口,停用seline服务
setenforce 0
关闭防火墙 firewall-cmd --zone=public --add-port=9999/tcp
systemctl stop firewalld
systemctl disable fireallds 设置开机不自启
对称和非对称加密
des 信息传输的双方是用一个密钥
rsa 公钥和私钥两套加密算法
使用ssh远程管理
1.账号密码方式
ssh -l用户名 -p端口号 域名/ip
ssh -p端口 用户@ip
如果端口默认22,不需要添加p选项
ssh 用户@ip
修改ssh服务端口,不允许root远程登录
vim /etc/ssh/sshd_conf
//38 root
// 17 端口
root无法远程登录,需要其他的用户和权限
useradd zhansan
passwd zhansan
useradd lisi
passwd lisi
zhansan、lisi都可以w 目录code
mkdir /code
groupadd code
chgrp -R code /code. //修改目录code的所属的组为code组
为用户添加w权限
chmod -R g+w /code
2.密钥对
1.选择一个账户 zhansan、 su zhansan
2.生成公钥和私钥 ssh-keygen
3.~/.ssh/
id_rsa 私钥
id_rsa.pub 公钥
将公钥中字符串追加到对应主机的对应用户的家目录的~/.ssh/authorized_key
公钥可以复制字符串,私钥绑定
3.ssh-copy-id -p9999 用户@ip
1、RSYNC介绍
rsync 是一个强大的文件同步工具,常用于在不同的系统之间高效地复制和同步文件及目录。
它具有以下一些显著的特点和优势:
1、增量备份:rsync 只会传输源目录和目标目录之间有差异的部分,这大大减少了数据传输量,提高了同步效率。
例如,如果您有一个大型的文件库,并且只对其中的几个文件进行了修改,rsync 只会传输这些修改过的文件,而不是整个文件库。
2、数据完整性:它能够确保数据在传输过程中的完整性,通过校验和来验证文件是否正确传输。
3、多种传输方式:支持通过本地连接(如本地磁盘)、SSH 等方式进行文件同步。
4、保留权限和属性:可以保留文件和目录的权限、所有者、组、时间戳等属性。
5、排除特定文件或目录:通过配置,可以指定排除某些不需要同步的文件或目录。
在实际应用中,rsync 常用于服务器之间的数据备份、文件同步、版本控制等场景。以下是一个基本的 rsync 命令示例:
rsync -avz source_directory destination_directory
其中:
-a 表示归档模式,保留权限、属性等。
-v 表示详细模式,显示更多信息。
-z 表示在传输过程中进行压缩,以减少网络带宽使用。
(1)rsync的好姐妹
sync 同步:刷新⽂件系统缓存,强制将修改过的数据块写⼊磁盘,并且更新超级块。
async 异步:将数据先放到缓冲区,再周期性(⼀般是30s)的去同步到磁盘。
rsync 远程同步:== remote synchronous ==
数据同步过程
sync数据同步 => 保存⽂件(⽬标)=> 强制把缓存中的数据写⼊磁盘(⽴即保存),实时性 要求⽐较⾼的场景
asyn数据异步 => 保存⽂件(⽬标)=> 将数据先放到缓冲区,再周期性(⼀般是30s)的去同 步到磁盘,适合⼤批量数据同步的场景
(2)rsync特点
可以镜像保存整个⽬录树和⽂件系统
可以保留原有的权限(permission,mode),owner,group,时间(修改时间,modify time),软硬 链接,⽂件acl,⽂件属性(attributes)信息等
传输== 效率⾼ ==,使⽤同步算法,只⽐较变化的(增量备份)
file1.txt file2.txt file3.txt(A服务器)
rsync实现数据同步 => 只同步file3.txt => 增量备份 file1.txt file2.txt(B服务器)
⽀持匿名传输,⽅便⽹站镜像;也可以做验证,加强安全
(3)rsync与scp的区别
两者都可以实现远程同步,但是相对⽐⽽⾔,rsync能⼒更强
① ⽀持增量备份 ② 数据同步时保持⽂件的原有属性
2、ups中继器介绍
UPS 中继器是在不间断电源(UPS)系统中起到信号增强和扩展覆盖范围作用的设备。
它的主要作用包括:
信号增强:UPS 系统中的某些信号可能会随着传输距离的增加而减弱,中继器可以接收并重新放大这些信号,确保信号的强度和质量,以实现稳定的通信和控制。
例如,在一个大型的数据中心,UPS 与监控系统之间的距离较远,信号可能会衰减,使用中继器可以保证监控信息的准确传输。
扩展覆盖范围:使 UPS 系统能够覆盖更广的区域,超出原本的有效范围。
比如在多层建筑中,UPS 主机位于一层,而需要为高层的设备提供稳定的电源管理和监控,中继器可以帮助实现这一需求。
改善信号稳定性:减少信号干扰和失真,提高系统的可靠性。
兼容不同的拓扑结构:可以适应不同的网络拓扑结构,如星型、总线型等,以满足复杂的布线需求。
在选择 UPS 中继器时,需要考虑以下因素:
信号放大能力:确保其能够满足您系统中信号强度的要求。
兼容性:与您所使用的 UPS 系统和其他相关设备兼容。
可靠性:具备良好的稳定性和耐用性。
安装和维护的便捷性:易于安装和后续的维护操作。
总之,UPS 中继器在优化 UPS 系统的性能和覆盖范围方面发挥着重要的作用,有助于提高整个电源保障系统的可靠性和稳定性。
3、安装rsync
[root@1 ~]# rpm -aq |grep rsync //查看是否已经安装rsync
[root@1 ~]# yum list installed | grep rsync //查看是否已经安装rsync
[root@1 ~]# yum -y install rsync //默认没有安装,通过yum进行安装rsync软件
[root@1 ~]# which rsync //查看rsync的所在位置
/usr/bin/rsync
[root@1 ~]# find / -name "rsync*" //查找rsync相关文件
4、rsync基本语法使用
push:推,相当于上传;pull:拉,相当于下载
rsync [选项] 原数据位置 目标位置
文件的增加、修改、删除、属性修改,会被rsync同步
-v 详细模式输出
-a 归档模式,递归的⽅式传输⽂件,并保持⽂件的属性,equals -rlptgoD
-r 递归拷⻉⽬录
-l 保留软链接
-p 保留原有权限
-t 保留原有时间(修改)
-g 保留属组权限
-o 保留属主权限
-D 等于--devices --specials 表示⽀持b,c,s,p类型的⽂件
-R 保留相对路径
-H 保留硬链接
-A 保留ACL策略
-e 指定要执⾏的远程shell命令,ssh更改端⼝常⽤选项
-E 保留可执⾏权限
-X 保留扩展属性信息 a属性
(1)在家目录中创建一些文件
[root@1 ~]# mkdir folder
[root@1 ~]# mkdir folder/f{1..3}
[root@1 ~]# ls folder/
f1 f2 f3
[root@1 ~]# touch folder/f1/file{0..4}
[root@1 ~]# tree folder/
folder/
├── f1
│ ├── file0
│ ├── file1
│ ├── file2
│ ├── file3
│ └── file4
├── f2
└── f3
3 directories, 5 files
(2)使用rsync进行测试(文件增加)(同步文件或同步目录)
[root@1 ~]# rsync -av folder/* /opt //将folder目录下的文件同步到opt目录下
sending incremental file list
f1/
f1/file0
f1/file1
f1/file2
f1/file3
f1/file4
f2/
f3/
sent 378 bytes received 123 bytes 1,002.00 bytes/sec
total size is 0 speedup is 0.00
[root@1 ~]# tree /opt //查看是否同步成功
3 directories, 5 files
[root@1 ~]# rm -rf /opt/*
[root@1 ~]# rsync -av folder /opt //将folder目录同步过去
sending incremental file list
folder/
folder/f1/
folder/f1/file0
folder/f1/file1
folder/f1/file2
folder/f1/file3
folder/f1/file4
folder/f2/
folder/f3/
sent 412 bytes received 131 bytes 1,086.00 bytes/sec
total size is 0 speedup is 0.00
[root@1 ~]# tree /opt //查看同步效果
/opt
└── folder
├── f1
│ ├── file0
│ ├── file1
│ ├── file2
│ ├── file3
│ └── file4
├── f2
└── f3
4 directories, 5 files
[root@1 ~]# rm -rf /opt/*
[root@1 ~]# rsync -avR folder/ /opt //将folder目录同步过去 -R表示保留相对路径
[root@1 ~]# tree /opt //查看同步效果
4 directories, 5 files
[root@1 ~]# touch folder/f1/file5
[root@1 ~]# rsync -av folder/f1/ folder/f2/
[root@1 ~]# tree folder/
(3)使用rsync进行测试(文件删除)
[root@1 ~]# rm -rf folder/f1/file0
[root@1 ~]# rsync -av --delete folder/f1/ folder/f2/
[root@1 ~]# tree folder/
(4)使用rsync进行测试(文件修改)
[root@1 ~]# vim folder/f1/file1
哈哈
[root@1 ~]# cat folder/f1/file1
哈哈
[root@1 ~]# rsync -av folder/f1/ folder/f2/
[root@1 ~]# cat folder/f2/file1
哈哈
(5)使用rsync进行测试(文件属性改变)
[root@1 ~]# touch folder/f1/file1 -m -d "2024-7-14 00:00"
[root@1 ~]# rsync -av folder/f1/ folder/f2/
[root@1 ~]# ls -l folder/f2/file1
[root@1 ~]# chmod g+w folder/f1/file1
[root@1 ~]# rsync -av folder/f1/ folder/f2/
[root@1 ~]# ls -l folder/f2/file1
(6)远程传输文件
要实现远程同步,要求两台主机都应该安装rsync
[root@1 ~]# dd if=/dev/zero of=/tmp/lajiwenjian bs=300M count=1
[root@2 ~]# yum -y install rsync
[root@1 ~]# rsync -av /tmp/lajiwenjian root@10.0.0.20:/tmp/
[root@2 ~]# ls -lh /tmp/lajiwenjian
-rw-r--r--. 1 root root 300M 7月 18 11:05 /tmp/lajiwenjian
5、使用rsync同步一个项目
(1)查看rsyncd服务状态并执行服务
[root@1 ~]# systemctl status rsyncd
● rsyncd.service - fast remote file copy program daemon
Loaded: loaded (/usr/lib/systemd/system/rsyncd.service; disabled; vendor preset: disabled)
Active: inactive (dead)
[root@1 ~]# systemctl start rsyncd
[root@1 ~]# netstat -lntup | grep rsync
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 10086/rsync
tcp6 0 0 :::873 :::* LISTEN 10086/rsync
(2)找出服务的配置文件
[root@1 ~]# find / -name "rsync*conf"
/etc/rsyncd.conf
(3)创建一个项目
[root@1 ~]# mkdir -p /app/studentweb/src/main/java/co/goho/yuanyu.studentweb/ //-p创建多级目录
[root@1 ~]# tree /app/
/app/
└── studentweb
└── src
└── main
└── java
└── co
└── goho
└── yuanyu.studentweb
7 directories, 0 files [root@1 ~]# touch /app/studentweb/src/main/java/co/goho/yuanyu.studentweb/File{0..9}.java [root@1 ~]# tree /app/
7 directories, 10 files
[root@1 ~]# systemctl stop firewalld //关闭防火墙
[root@1 ~]# setenforce 0 //设置selinux模式为宽松模式
[root@1 ~]# getenforce
Permissive
[root@1 ~]# vim /etc/rsync.conf //修改rsync配置文件
[app]
path=/app/studentweb/ //项目路径
log file=/var/log/rsync.log //项目日志文件路径
[root@1 ~]# systemctl restart rsyncd //重启rsyncd服务
(在1主机中提供了一个针对app/下的项目rsync服务,下次访问直接找服务)
(4)测试(使用rsync服务同步项目)
[root@2 ~]# rsync -a root@10.0.0.11:: //查找10.0.0.11主机的项目
app
[root@2 ~]# rsync -av root@10.0.0.11::app /tmp/ //将app项目同步到2主机的tmp目录下
[root@2 ~]# ls -l /tmp/
drwxr-xr-x. 3 root root 18 7月 18 11:28 src
[root@2 ~]# tree /tmp/src/
Afternoon
1、修改项目名称
[root@1 ~]# systemctl start rsyncd //启动rsync服务
[root@1 ~]# systemctl status rsyncd
[root@1 ~]# vim /etc/rsyncd.conf //查看项目
[root@2 ~]# rm -rf /tmp/* //清空tmp目录
[root@2 ~]# ls /tmp
[root@2 ~]# rsync -a root@10.0.0.11:: //查看服务器项目
app
[root@2 ~]# rsync -av root@10.0.0.11::app /tmp/ //拉取服务器项目
[root@1 ~]# vim /etc/rsyncd.conf //修改配置文件
[efg]
path=/app/studentweb/
log file=/var/log/rsync.log
[root@1 ~]# systemctl restart rsyncd //重启服务
[root@2 ~]# rsync -av root@10.0.0.11::efg /tmp/ //需要修改名字
[root@1 ~]# systemctl restart rsyncd //重启服务
2、自动化推送拉取文件
每2分钟自动推送一次代码(使用计划任务每2分钟推送一次任务)
[root@1 ~]# which rsync //找到rsync 的which地址
/usr/bin/rsync
[root@1 ~]# crontab -e //编辑计划任务
*/2 * * * * /usr/bin/rsync -av /app/studentweb/ root@10.0.0.20:/tmp/
[root@2 ~]# rm -rf /tmp/* //删除tmp目录下的文件
[root@2 ~]# ls /tmp/ //查看是否自动推送成功
src
如果文件根本没有修改,就没有必要推送
自动监听文件被修改的行为,再自动推送
编辑计划任务,删除计划任务
[root@1 ~]# crontab -e
3、为rsyncd服务添加密码
编辑配置文件/etc/rsyncd.conf
添加两个属性
auth users=user0,user1
secrets file=/etc/rsync.secrets
[root@1 ~]# vim /etc/rsyncd.conf //配置文件添加两行内容(账号和密码文件的路径)
4、实现代码实时同步
(1)inotify介绍
inotify 是一个 Linux 内核提供的用于监控文件系统事件的机制。
它允许应用程序监控文件或目录的各种操作,例如创建、修改、删除、移动等。
以下是 inotify 的一些关键特点和用途:
特点:
实时性:能够实时地通知应用程序文件系统的变化。
细粒度监控:可以精确到单个文件或目录的操作级别。
用途:
文件同步工具:比如在多个服务器之间保持文件同步,当源端文件发生变化时,及时同步到目标端。
日志监控:监控日志文件的更新,以便及时处理新的日志内容。
例如,在一个自动化部署系统中,使用 inotify 来监测代码目录的变化,一旦有新的代码提交,自动触发部署流程。又或者在一个文件备份系统中,通过 inotify 来察觉文件的修改,然后及时进行备份操作。
(2)直接安装inotify-tools
监听指定目录,一旦目录发上修改,就执行指定的指令
[root@1 ~]# yum -y install inotify-tools
inotify 监听
安装后会有两条指令
inotifywait 等待 inotifywatch 一直监视(在/usr/bin下)
[root@1 ~]# inotifywait -mr /app/
Setting up watches. Beware: since -r was given, this may take a while!
Watches established.
|
新开一个窗口
[root@1 ~]# touch /app/studentweb/nihao.txt
(2)编写inotify.sh脚本
[root@1 ~]# which inotifywait
/usr/bin/inotifywait
[root@1 ~]# vim inotify.sh
#!/bin/bash //指定编译工具
/usr/bin/inotifywait -mrq -e modify,delete,create,attrib,move /app/studentweb | while read events
do
rsync -av --delete /app/studentweb/ root@10.0.0.20:/tmp/
done
[root@1 ~]# chmod +x inotify.sh
[root@1 ~]# ./inotify.sh
|
新开一终端执行下面命令
[root@1 ~]# touch /app/studentweb/tiantian.txt
[root@2 ~]# ls /tmp/
nihao.txt src tiantian.txt
[root@1 ~]# touch /app/studentweb/fuwocheng.txt
[root@2 ~]# ls /tmp/
fuwocheng.txt nihao.txt src tiantian.txt
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_70693880/article/details/140528698