首页 > 其他分享 >云计算day09

云计算day09

时间:2024-07-18 18:57:48浏览次数:15  
标签:10.1 day09 同步 java av rsync 计算 rsyncd

Linux系统下数据同步服务RSYNC

⼀、RSYNC概述

1、什么是rsync

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能⼒更强 ① ⽀持增量备份 ② 数据同步时保持⽂件的原有属性 yum -y install rsync

⼆、RSYNC的使⽤

1、基本语法

Tar -zcvf. Zxvf. rpm -ivh # man rsync NAME rsync — a fast, versatile, remote (and local) file-copying tool //⼀种快速、通⽤、远程(和本地)的⽂件复制⼯具 SYNOPSIS //本地⽂件同步 Local:rsync [OPTION...] SRC... [DEST] //远程⽂件同步PUSH:推,相当于上传;PULL:拉,相当于下载

2、本地⽂件同步

本地⽂件同步简单理解就是把⽂件从⼀个位置(同步=>拷⻉)到另外⼀个位置(类似cp) 案例:/dir1、/dir2与/dir3,/dir1中创建三个⽂件file1、file2、file3,使⽤rsync本地同步 Access via remote shell: Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST] Push: rsync [OPTION...] SRC... [USER@]HOST:DEST OPTION选项说明 -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属性案例:rsync -R选项的应⽤(保留相对路径) 案例:rsync --delete(删除⽬标⽬录⾥多余的⽂件) /dir1 === /dir2 file1、file2 file1、file2、file3 rsync --delete同步后,会⾃动删除file3⽂件。(让dir1与dir2⽬录中的⽂件⾼度⼀致)

3、远程⽂件同步

要实现时远程同步,要求两台主机都应该安装rsync Push:上传⽂件到远程服务器端 案例:把linux.txt⽂档传输到远程服务器端(10.1.1.100) # mkdir /dir1 # mkdir /dir2 # mkdir /dir3 # touch /dir1/file{1..3} # rsync -av /dir1/ /dir2 => 把/dir1⽬录中的所有⽂件拷⻉到/dir2⽬录中 # rsync -av /dir1 /dir3 => 把/dir1⽬录整体同步到/dir3⽬录中 # rsync -avR /dir1/ /dir2 # rsync -av --delete /dir1/ /dir2 # rsync -av 本地⽂件或⽬录 远程⽤户名@远程服务器的IP地址:⽬标路径 # rsync -av linux.txt案例:把shop⽂件夹传输到远程服务器端(10.1.1.100) # rsync -av shop [email protected]:/root Pull:下载⽂件到本地服务器端 # rsync -av 远程⽤户名@远程服务器的IP:⽬标⽂件或⽬录 本地存储位置 案例:把远程服务器(10.1.1.100)的/etc/hosts⽂件下载到本地 # rsync -av [email protected]:/etc/hosts ./ 案例:把远程服务器(10.1.1.100)的/shop⽂件夹下载到本地 # rsync -av [email protected]:/shop ./ 思考: 问题1:rsync远程同步数据时,默认情况下为什么需要密码?如果不想要密码同步怎么实现? rsync在远程同步时,之所以要输⼊密码的主要原因在于其底层还是基于SSH服务的。SSH有 两种认证⽅式,如果没有配置免密则默认使⽤⽤户名+密码的认证⽅式。 不想要密码同步,可以考虑使⽤SSH免密操作。 Code => Backup Code: # ssh-keygen -t rsa -P "" # ssh-copy-id [email protected] 问题2:如果Backup服务器端更改了SSH的默认密码,那这个数据该如何?1.本地同步 1.安装rsync 2.Rsync -av 源 ⽬标地址 3.如果源⽬录不以/结尾,整个⽬录同步包含⽬录⽂件,带斜杠,只同步⽬录下的⽂件 4.-R保留⽬录的相对路径,也会携带⽬录 5.同步的内容 ⽂件的新增 修改,删除(--delete) 属性(时间,权限) 2.远程同步 1.2台主机都⽀持rsync的服务

4、rsync作为系统服务

默认情况下,rsync只是作为⼀个命令来进⾏使⽤的(ps在查询进程时,找不到对应的服 务),但是rsync提供了⼀种作为系统服务的实现⽅式。 Linux系统服务的思路: # rsync -e "ssh -p 10086" -av rsync.txt [email protected]:/root 2. rsync -ac 源 ⽤户@主机地址 2. 获取数据pull 拉取,发送数据push推送数据对外提供服务——>端⼝监听——>==启动服务==——>启动脚本——>配置⽂件 第⼀步:启动rsyncd服务(CentOS6中没有,CentOS7中有这个服务) # systemctl start rsyncd 如果企业中使⽤到操作系统为CentOS6版本,则没有启动脚本。必须求帮助: # man rsync # rsync --help Use "rsync --daemon --help" to see the daemon-mode command-line options. CentOS6:rsync作为系统服务 # touch /etc/rsyncd.conf # rsync --daemon # ps -ef|grep rsync # netstat -tunlp |grep rsync => -t tcp -u udp 注:如果rsync作为系统服务单独运⾏,则其底层就不需要SSH服务了! 第⼆步:rsyncd服务的配置⽂件/etc/rsyncd.conf # man 5 rsyncd.conf编号 IP地址 主机名称 ⻆⾊ 1 10.1.1.10 code.itcast.cn Code(MIS) 2 10.1.1.100 backup.itcast.cn Backup(Backup)

三、任务解决⽅案(重点)

1、环境准备

第⼀步:关闭防⽕墙与SELinux 第⼆步:更改主机名称 第三步:更改IP地址(静态IP) # systemctl stop firewalld # systemctl disable firewalld # setenforce 0 # vim /etc/selinux/config SELINUX=disabled # hostnamectl set-hostname code.itcast.cn # hostnamectl set-hostname backup.itcast.cn # su# vim /etc/sysconfig/network-scripts/ifcfg-ens33 TYPE="Ethernet" BOOTPROTO="none" IPADDR=10.1.1.10 NETMASK=255.255.255.0 GATEWAY=10.1.1.2 DNS1=8.8.8.8 DNS2=114.114.114.114 NAME="ens33" UUID="a5bb176c-c05c-4bdb-8975-a4aafa2fc90u" => 更改UUID的后3位 DEVICE="ens33" ONBOOT="yes" # vim /etc/sysconfig/network-scripts/ifcfg-ens33 TYPE="Ethernet" BOOTPROTO="none" IPADDR=10.1.1.100 NETMASK=255.255.255.0 GATEWAY=10.1.1.2 DNS1=8.8.8.8 DNS2=114.114.114.114 NAME="ens33" UUID="a5bb176c-c05c-4bdb-8975-a4aafa2fc56y" => 更改UUID的后3位 DEVICE="ens33" ONBOOT="yes" # systemctl restart network 第四步:关闭NetworkManager # systemctl stop NetworkManager # systemctl disable NetworkManager 第五步:配置YUM源 略第六步:时间同步

2、任务解决⽅案

==Code:10.1.1.10服务器== 第⼀步:准备代码⽂件 第⼆步:把rsync作为系统服务运⾏ ==Backup:10.1.1.100== 第三步:创建备份⽬录 第四步:测试rsync是否可以连接到rsync服务 # ntpdate cn.ntp.org.cn # mkdir /app/java_project -p # mkdir /app/java_project/aa{1..3} # touch /app/java_project/file{1..9}.java # vim /etc/rsyncd.conf [app] path=/app/java_project log file=/var/log/rsync.log # systemctl start rsyncd # ps -ef |grep rsync # netstat -tnlp |grep rsync # mkdir /backup/app1_java -p下载⽂件到本地 第五步:编写计划任务 + Shell的脚本⽂件,⾃动实现代码备份 ① 编写计划任务 ② 编写rsync_java.sh脚本程序

3、任务总结

Code代码服务器 => 10.1.1.10 /app/java_project Backup备份服务器 => 10.1.1.100 Code: ① 准备代码 ② 编写/etc/rsyncd.conf⽂件,定义同步代码⽬录 # rsync -a [email protected]:: app -a:获取rsync服务对应的同步⽬录标签 # rsync -av [email protected]::app /backup/app1_java # crontab -e 3 1 * * * /root/rsync_java.sh # vim rsync_java.sh #!/bin/bash rsync -av [email protected]::app /backup/app1_java &>/dev/null # chmod +x rsync_java.sh③ 启动rsyncd服务 Backup: ① 测试rsync是否可以连接到Code服务器上的rsyncd服务 ② 创建备份⽬录 ③ 编写计划任务,凌晨1点03去Code服务器同步代码 ④ 编写rsync_java.sh⽂件,实现同步操作 rsycn 安装 Yum -y install rsync Rsync 【选项】源⽂件 ⽬标⽬录 1.本地同步 rsync -av ~/abc/ /opt/ 同步⽂件的内容,⽂件的属性 ⽂件的新增 修改 删除(--delete) rsync -av /⽬录 /tmp。# 同步⽬录下的⽂件 rsync -av /⽬录/ /tmp/ #同步⽬录 rsyn c -avR 保存相对路径,其实也就是同步了⽬录2.远程同步 要求两台主机要应该安装rsync服务 ⽤法和本地同步相同 rsync -av [email protected]:/opt/ /tmp/ 拉取 pull rsync -av /tmp/ [email protected]:/tmp. push 推送 需要输⼊密码,需要免密,这个需要的密码也是使⽤sssh服务验证,所以,直接ssh免密 设置好之后就直接⽀持rsync 3.同步服务器的设置 启动服务 systemctl start rsyncd 修改配置⽂件 vim /etc/rsyncd.conf [abc] path=/app/javaproject/ Log file=/var/log/rsync.log 重启rsync服务 systemctl restart rsyncd在另⼀台主机上拉取rsync服务中的项⽬ 测试是否能够检测到项⽬ 检测到配置的abc Rsync -a [email protected]:: abc Rsync -av 源。⽬标⽬录 ⾃动化推送拉取⽂件 没30s⾃动推送四、RSYNC课程扩展 1、给RSYNC服务添加密码 Code服务器: ① 打开/etc/rsyncd.conf配置⽂件 ② 在/etc⽬录下创建rsyncd.secrets⽂件 ③ 更改密码⽂件权限为600 ④ 重启rsyncd服务 Backup备份服务器: # vim /etc/rsyncd.conf [app] path=/app/java_project log file=/var/log/rsync.log auth users = user1,user2 => ⽤户名 secrets file = /etc/rsyncd.secrets => 密码⽂件 # vim /etc/rsyncd.secrets user1:123 => 设置密码,⽤户名:密码 user2:123 # chmod 600 /etc/rsyncd.secrets # systemctl restart rsyncd # rsync -av [email protected]::app ./ Password:1232、RSYNC集合INOTIFY⼯具实现代码实时同步(重点) 第⼀步:直接安装inotify-tools yum -y install inotify-tools 监听指定⽬录,⼀旦⽬录发上修改,就执⾏指定的指令 第⼆步:编写inotify.sh # tar xf inotify-tools-3.13.tar.gz -C /usr/local/ # cd /usr/local/inotify-tools-3.14 # ./configure # make # make install 安装完后,就会产⽣下⾯两个命令 /usr/bin/inotifywait 等待 /usr/bin/inotifywatch 看守 /usr/bin/inotifywait -m : ⼀直监控某个⽬录,create、delete、modify等⾏为 -r : 递归,不仅仅监控⽬录还要监控⽬录下的⽂件 -q : 获取操作信息,但是不输出 -e : 哪些⾏为需要被监控,modify,delete,create,attrib,move modify: ⽂件被修改 delete: ⽂件被删除 create: ⽂件被创建 attrib: ⽂件属性被修改 move: ⽂件被移动 # vim inotify.sh #!/bin/bashinotifywait -mrq -e modify,delete,create,attrib,move /app/java_project |while read events do rsync -av --delete /app/java_project/ [email protected]:/backup/app1_java echo "`date +%F\ %T`出现事件$events" >> /var/log/rsync.log 2>&1 done 我对/app/java_project做了两件事 ① 在⽬录下创建了⼀个file9.java => create ② 在⽬录下删除了⼀个file5.java => delete create,delete => while => 执⾏两次 create rsync数据同步 delete rsync数据同步 /usr/local/bin/inotifywait -mrq -e modify,delete,create,attrib,move 第三步:添加可执⾏权限 # chmod +x inotify.sh 第四步:让inotify.sh⽂件⼀直执⾏下去 # nohup ./inotify.sh & & : 让inotify.sh在计算机后台运⾏,可以使⽤jobs命令查看,kill %编号结束,当我们退出 终端时,这个执⾏会⾃动结束 nohup : 让程序⼀直在后台运⾏,即使我们关闭了终端 扩展:如何查看rsync.log⽇志⽂件 # cat /var/log/rsync.log

标签:10.1,day09,同步,java,av,rsync,计算,rsyncd
From: https://blog.csdn.net/m0_67484044/article/details/140528402

相关文章

  • 云计算day08
    一、远程管理SSH服务免密登录解决方案1.使⽤yum安装了nodejs环境2.安装npm,设置镜像3.使⽤npm安装了vue4.使⽤安装vue软件,创建vue项⽬vuecreatevuehtml0005.跳到项⽬⽬录中,npmrunserve启动项⽬6.npmrunbuild构建项⽬7.将构建的项⽬⽬录dist⽬......
  • 云计算day07
    一、yum源概述软件包管理器,类似于360软件管家,以及⼿机的app市场yum优点Rpm安装(下载软件,单独安装,需要解决依赖关系)源码安装confguremakemakeinstallyum基于rpm,相当于rpm升级版,⾃动解决依赖关系分类:本地yum源yum仓库在本地,系统光盘/镜像⽂件⽹......
  • 1.1_5_1 计算机网络的性能指标
    一、计算机网络的性能指标    计算机的性能指标主要有七个——速率、带宽、吞吐量、时延、时延带宽积、往返时延、信道利用率。    计算机网络中常用的数量前缀有K->M->G->T,相邻符号之间的换算倍数为1e3,即为1T=1e12,1G=1e9,1M=1e6,1K=1e3。计组、操作系统中数量前缀......
  • 【YOLOv8改进-SPPF】 AIFI : 基于注意力的尺度内特征交互,保持高准确度的同时减少计算
    YOLOv8目标检测创新改进与实战案例专栏专栏目录:YOLOv8有效改进系列及项目实战目录包含卷积,主干注意力,检测头等创新机制以及各种目标检测分割项目实战案例专栏链接:YOLOv8基础解析+创新改进+实战案例介绍摘要YOLO系列因其在速度和准确性之间的合理权衡,成为了......
  • 时间区间按月计算使用天数
    selectt3.*,casewhenday_start>month_currentandday_end<month_lastthenTIMESTAMPDIFF(DAY,day_start,day_end)+1--'中间,结束时间-开始时间'whenday_start>month_currentthenTIMESTAMPDIFF(DAY,day_start,month_......
  • 隐马尔可夫模型之概率计算问题
    前向算法    算法目标:计算给定隐马尔可夫模型和观测序列的概率。    算法步骤:通过递归计算前向概率来实现,其中表示在时刻状态为并且观测到部分序列的概率。初始化在初始时刻,计算所有状态的初始前向概率:,其中,是初始状态概率,是状态生成观测的概率。递归计......
  • 第一章-化学计算基础总结
    字母:\(n:\)物质的量(单位:摩尔\(mol\))\(N:\)微粒数\(N_A:\)阿伏伽德罗常数\(m:\)质量(单位:克\(g\))\(M:\)摩尔质量(单位:克/摩尔\(g/mol\))\(p:\)压强(单位:帕\(Pa\))\(V:\)体积(单位:立方米\(m^3\))\(T:\)温度(单位:开尔文\(K\))\(R:\)气体常数\(x:\)物质的量分数\(c:......
  • 【学术会议征稿】第六届信息与计算机前沿技术国际学术会议(ICFTIC 2024)
    第六届信息与计算机前沿技术国际学术会议(ICFTIC2024)20246th InternationalConferenceonFrontierTechnologiesofInformationandComputer   第六届信息与计算机前沿技术国际学术会议(ICFTIC2024)将在中国青岛举行,会期是2024年11月8-10日,为期三天,本次会议是......
  • 支持多路多算法实时监控与AI计算的智慧能源开源了。
    简介AI视频监控平台,是一款功能强大且简单易用的实时算法视频监控系统。愿景在最底层打通各大芯片厂商相互间的壁垒,省去繁琐重复的适配流程,实现芯片、算法、应用的全流程组合,减少企业级应用约95%的开发成本,用户仅需在界面上简单操作,即可实现全视频的接入及布控。  v:159......
  • 基于SpringBoot的宠物领养系统-07863(免费领源码+开发文档)可做计算机毕业设计JAVA、PHP
    摘 要21世纪的今天,随着社会的不断发展与进步,人们对于信息科学化的认识,已由低层次向高层次发展,由原来的感性认识向理性认识提高,管理工作的重要性已逐渐被人们所认识,科学化的管理,使信息存储达到准确、快速、完善,并能提高工作管理效率,促进其发展。论文主要是对宠物领养系统......