Linux备份服务及rsync企业备份架构(应用场景)
备份服务概述
备份服务:需要使用到脚本,打包备份,定时任务.
备份服务:rsyncd服务,不同主机之间数据传输.
- 特点:
- rsync是个服务也是命令
- 使用方便,具有多种模式
- 传输数据的时候是增量传输
增量与全量:
全量 :无论多少数据全部推送走(scp)
增量:只会把修改新建了的文件传输走(rsync)
把/etc/目录传输到另外一台机器的/tmp/下面
scp -r /etc/sysconfig/ root@192。168.28.131:/tmp/
rsync -avz /etc/sysconfig/ root@192.168.28.131:/mnt/
rsync企业应用场景:
应用场景(业务场景) 应用建议
rsync作为命令使用 临时拉取,推送数据.未来这个需求可以通过scp命令实现.
定时备份:rsync服务+定时任务 定时备份,定期备份案例.(定时任务进行备份+通过rsync传输备份)
实时同步:rsync服务+sersync/lsyncd实现实时同步 解决存储服务单点问题
rsync服务与异地容灾找一个异地的服务器存放备份
注意:单点问题:同一个功能/同一个服务,只有1台节点.
rsync不同的模式
1.1rsync本地模式
rsync -a /etc/ /tmp/
rsync -a /etc /opt/
在rsync对于目录 /etc/ /etc是有区别的
/etc /etc目录+目录的内容
/etc/ /etc/目录下面的内容
1.2远程模式
格式
rsync -a 源文件 目标
推送:rsync /etc/hostname root@192.168.28.131:/tmp
拉取:rsync root@192.168.28.131:/etc/hosts /opt/
#推送/etc/hostname到192.168.28.131的/tmp/目录
rsync -a /etc/hostname root@192.168.28.131:/tmp
#推送/etc目录及目录内容到131的/tmp下面
##推送第1次 全量
rsync -av /etc root@192.168.28.131:/tmp
##推送第2次 发现没有推送
rsync -av /etc root@192.168.28.131:/tmp
##创建文件再次推送
touch /etc/wulin.txt
rsync -av /etc root@192.168.28.131:/tmp
#通过scp推送 /etc目录及目录内容到131的 /opt下面
scp -r /etc/ root@192.168.28.131:/opt/
-r递归传输
1.3守护进程模式
服务使用流程
部署
配置
启动,使用
优化
故障
自动化
(监控,日志,安全,自动部署,容器)
1.3.1检查是否安装
检查安装 更新
yum install -y rsync
检查软件包内容
/etc/rsyncd.conf #配置文件
/usr/bin/rsync #命令
/usr/lib/systemd/system/rsyncd.service #systemctl对应的配置文件
1.3.2进行配置
[root@backup /wulin]# cat/etc/rsyncd.conf
#created by wulin 2024-5-12
##rsyncd.conf start##
fake super =yes
uid = rsync
gid = rsync
use chroot = no
max connections = 2000
timeout = 600
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
ignore errors
read only = false
list = false
#hosts allow = 10.0.0.0/24
#hosts deny = 0.0.0.0/32
auth users = rsync_backup
secrets file = /etc/rsync.password
#####################################
[data]
comment = www by wulin 2024-5-12
path = data
#启动服务
systemctl enable rsyncd
systemctl start rsyncd
#检查进程
ps -ef |grep rsync
#检查端口
ss -lntup |grep rsync
1.3.2后续配置
#1.添加虚拟用户
useradd -s /sbin/nologin -M rsync#2.创建密码文件
密码文件格式:用户名:密码
echo 'rsync_backup:123 ' >/etc/rsync.password
chmod 600 /etc/rsync.password#3.共享目录与权限
mkdir /data/#启动服务
systemctl start rsyncd
systemctl enable rsyncd
#访问测试:
rsync -avz /etc/hosts rsync_backup@192.168.28.41::data
rsync_backup是服务端配置文件中的认证用户
data表示模块名字
本地测试:
[root@backup ~]# rsync -av /etc/hostname
rsync_backup@192.168.28.41::data
Password:
sending incremental file list
hostname
sent 102 bytes
received 43 bytes 41.43 bytes/sec
total size is 7
speedup is 0.05[root@backup ~]# ll /data/
total 4
-rw-r--r-- 1 rsync rsync 17:02 hostname
#客户端测试:
##基本测试
[root@nfs01 ~]# rsync -avz /etc/hosts
rsync_backup@172.16.1.41::data
Password:
sending incremental file list
hosts
sent 214 bytes
received 43 bytes 73.43 bytes/sec
total size is 329 speedup is 1.28
##免密码传输数据到服务器
[root@nfs01 ~]#echo ‘123’ >/etc/rsync.passwords
[root@nfs01 ~]#chmod 600 /etc/rsync.passwords
[root@nfs01 ~]#
[root@nfs01 ~]#rsync -avz /etc/hosts rsync_backup@172.16.1.41::data --password-file=/etc/rsync.passwords
sending incremental file list
sent 47 bytes received 20 bytes 134.00 bytes/sec
total size is 333 speedup is 4.97
传到客户端
[root@nfs01 ~]#rsync -avz /tmp/etc.tar.gz rsync_backup@172.16.1.41::data --password-file=/etc/rsync.passwords
sending incremental file list
etc.tar.gz
1.4守护进程补充
uid,gid与auth user
1.用户执行命令:rsync -avz /tmp/etc.tar.gz rsync_backup@backup::data --passwordfile=/etc/rsync.password
2.服务端收到数据:判断rsync_backup用户,然后等待输入密码
3.把用户名和密码与配置文件里面对比auth user和secretsfile
4.通过后,传输数据
5.数据到达服务器所有者被修改为uid和gid指定的(rsync)
6.数据写入data模块(/data/)目录下面.
免密的方式连接服务端(命令行指定客户端密码文件)
客户端密码文件只存储密码即可
echo 123 >/etc/client.rsync
chmod 600 /etc/client.rsync
rsync -avz /etc/hosts
rsync_backup@172.16.1.41::data --password-
file=/etc/client.rsync
访问控制-安全措施
hosts allow只准许指定的ip或网段访问
hosts deny拒绝.
配置只准许172.16.1.0/24网段访问
2.1rsync选项
-a
- -rlptgoD
- -r递归复制
- -l复制软连接
- -p保持权限不变
- -m保持修改时间不变
- -o所有者不变
- -g用户组不变
- -D --devices --specials设备与特殊文件
-v 显示过程
-z 传输数据时候进行压缩(公网)
-p 显示每rsync -av . root@192.168.28.131:/tmp/ --exclude=04rsync -av . root@192.168.28.131:/mnt --exclude={04,05}个文件传输过程(进度条)断点续传–partial --progress
–bwlimit 限速注意不要与-z一起使用
–exclude、–exclude-from排除
–delete目标目录与源目录保持一致的传输
限速并传输
rsync -aP --bwlimit=500kb /tmp/1g
192.168.28.131:/mnt/传输并排除
rsync -av . root@1192.168.28.1311:/tmp/ --exclude=04
rsync -av .
root@192.168.28.131:/mnt --exclude=
{04,05}通过文件内容进行排除
[root@backup /wulin]# cat /tmp/paichu.txt
03
05
10[root@backup /wulin]# rsync -av .
root@192.168.28.131:~ --exclude-from=/tmp/paichu.txt保持源与目标数据一致
rsync -avP --delete . root@192.168.28.131:/tmp/
故障总结
password mismatch
backup rsyncd[3177]: authfailed on module data from UNKNOWN(10.0.0.41) for rsync_backup: no secretsfile
no secrets file
selinux和防火墙

项目案例
可能来自于老大的一句话:网站数据需要备份,你操作一下
接下来的内容需要你自己规划,备份什么内容?如何备份?如何收集备份(统一存放备份)?保留时间?都是什么系统?什么系统的版本?
-
备份什么?
-
数据(用户数据库)数据库 存储
-
配置文件
-
脚本和代码
-
网站代码
-
日志收集
-
如何备份?
-
如何收集?
rsync服务收集备份(rsync客户端推送备份到rsync服务器)

2.2项目流程:
1)环境准备
1)环境准备
| 角色 主机 运行服务 | ||
|---|---|---|
| 存放备份 backup | rsync服务端 | |
| 生成备份 nfs01 | rsync客户端,其他服务 | |
| 生产备份 web01 | rsync客户端,其他服务 |
-
项目步骤
这里为操作步骤,未来的工作还会有沟通(与其他部门进行商讨)定期汇报
| 步骤说明 详细内容 | |
| ------------------------------------------------------------ | ---- |
| rsync服务端并调试 服务端配置 、back目录 | |
| rsync客户端节点配置脚本(备份) 备份 推送 清理 | |
| 其他节点匹配定时任务 定时运行脚本 | |
| 在备份服务器上检查并发送邮件 在rsync服务端检查备份并发送邮件 | | -
配置与检查rsync服务端与客户端
vim/etc/rsyncd.conf

[root@backup ~]#mkdir -p /backup/ #创键目录chown -R rsync.rsync /backup/ll -d /backup/检查

改完了配置文件进行重启
systemctl restart rsyncd(端口号为873)
ch在客户端测试
rsync -av /etc/hostname rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.passwords
sending incremental file list
hostname
在备份服务器看是否传输过来
ll /backup/
cat /backup/hostname
4)书写备份脚本
书写脚根据企业,任务需求合理高效进行书写脚本,写脚本在多窗口化进行编写边测试(整理这个的需要命令,写成脚本(引用变量名实现脚本万能功能–在相同类型机器上省时间省力气–当然注意整体磁盘空间内存信息,在架构搭建初期各部门进行会议交流))
在nf01这个客户端上vim /server/scripts/bak_conf.sh(写脚本编写脚本边进行测试)[root@nfs01 ~]#hostname -I[root@nfs01 ~]#hostname -I |awk '{print $2}'

在存储服务器上对推送脚本进行测试
mkdir -p /backup/172.16.1.131
tar zcf /backup/172.16.1.131/etc.tar.gz /etc /var/spool/cron/
ll /backup/172.16.1.131/
tree /backup/(企业数量文件内容特别多的时候,可以采用树状结构)
rsync -a /backup/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.passwords
检查服务端是否推送过来
tree /backup/

测试成功,将脚本写入脚本
继续在客户端测试删除旧的客户端备份命令

[root@nfs01 ~]#find /backup/ -type f -name “*.tar.gz”
[root@nfs01 ~]#find /backup/ -type f -name “*.tar.gz” -mtime +7 |xargs rm -f
(这里xargs后不支持别名 ,rm删文件会接提示)

测试成功写入脚本!
整个备份服务器脚本配置文件:

脚本运行完进行测试
rm -fr /backup/
把服务端的ip可以进行删掉,这里如果删除了backup目录,备份服务器会报错

删掉客户端目录并tree

运行脚本并检查服务端是存在backup


未来我们只需要调整脚本备份内容(目录)ip即可
写定时任务:


crontab -e


查看日志tail -f /var/log/cron
date
查看结果(每2秒进行执行)

查看服务端:

(说明测试没有问题,可以在定时任务按照企业时间需求及追加目录进行配置
5)服务端备份脚本调试
检查备份并清除旧的备份脚本
vim /server/scripts/check.sh
find /backup/ -type f -name "*.tar.gz" |xargs ls -lhd
find /backup/ -type f -name "*.tar.gz" |awk '{print $NF,$5}'
find /backup/ -type f -name "*.tar.gz" |awk
-F '[ /]+' '{print $(NF-1),NF,$5}'

让内容多一点将nfs01客户端脚本文件传入到web01服务器上
[root@nfs01~]#scp/server/scripts/bak_conf.sh 192.168.28.7:/server/scripts/

[root@nfs01 ~]#scp /etc/rsync.password 192.168.28.7:/etc
[root@nfs01 ~]#scp /var/spool/cron/root 192.168.28.7:/var/spoo
l/cron/
检查传输到web01服务器内容
[root@web01 ~]#ll /etc/rsync.password
[root@web01~]#ll/etc/rsync.password /server/scripts/bak_conf.sh
[root@web01 ~]#ll /etc/rsync.password /var/spool/cron/root
[root@web01~]#head-30/etc/rsync.password /server/scripts/bak_conf.sh /var/spool/cron/root


在web01服务器运行bak_conf.sh脚本

在备份服务器进行检查如果成功会有172.16.1.7这一行
[root@backup ~]#find /backup/ -type f -name “*.tar.gz” |awk -F ‘[ /]+’ ‘{print $(NF-1),NF,$5}’


测试统计结果命令并写入脚本:
[root@backup ~]#awk -F: ‘BEGIN{print “用户名”,“UID”}{print 1 , 1, 1,3}’ /etc/passwd

完成脚本(清除旧的脚本统计结果并将结果发送到邮件)

[root@backup /backup]#sh /server/scripts/check.sh
如果在邮箱中没有见到信息,在垃圾邮箱查找(被邮箱系统屏蔽掉了)


配置定时任务:
crontab -e

然后观察日志文件及邮箱信息
[root@backup /backup]#tail -f /var/log/cron
最后将结果追加到result.txt

6)增加校验功能
简单理解校验测试(知识理解):
- 检查传输中是否有变化及检查的那个文件md5:





检查多个检验文件(find+md5)
#给/etc/下面所有的文件创建MD5保存到指定文件中
find /etc/ -type f | md5sum >etc-all.md5
#进行校验
md5sum -c etc-all.md5
#修改/etc/下某个文件比如增加个"#"
vim /etc/rsyncd.conf
#进行校验
md5sum -c etc-all.md5
#只显示md5
异常的文件
md5sum --quiet -c etc-all.md5

具体应用:
- 客户端备份的时候生成备份,创建指纹信息
安全防护措施:
给命令和较为固定的配置设置md5,定期校验
作图为清理旧的备份服务端脚本




rsync2022年漏洞
影响的版本:3.2.5版本验证不足情况
检查rsync版本:

检查yum源是否有新的rsync版本,在装yum最新版本之前,我们自己的rsync比它最新的版本很低:

去官网找rsync包:下载 Samba
下载 Sambarsync (samba.org)
https://rsync.samba.org/

二进制别人已经弄好了,我们只需要进行解压使用,但是不一定能打开
添加链接描述
https://download.samba.org/pub/rsync/binaries/

这里的版本还不能进行满足,下载这里最
新的rsync包,看是否还能进行满足:
##下载最新的rsync包
wget https://download.samba.org/pub/rsync/binaries/centos-7.9-x86_64/latest.tar.gz
[root@backup ~]#tar tf latest.tar.gz
[root@backup ~]#tree -F usr/
usr/
└── local/
├── bin/
│ ├── rsync*
│ └── rsync-ssl*
└── share/
├── doc/
│ ├── COPYING
│ ├── NEWS.md
│ └── README.md
└── man/
├── man1/
│ ├── rsync.1
│ ├── rsyncd.conf.5
│ └── rsync-ssl.1
└── man5/

会发现还是满足不了
- yum源不行
- 软件包不行
- 官网二进制也不行
- 我们使用最本制的方式:编译安装(这里有3.2.7的版本)
通过yum update rsync升级,查到的版本还是低,但是升级说不定修复了补丁(说不来)厂商已经发布升级补丁修复漏洞方式(不方便升级版本的时候使用补丁)
还是要进行改源代码–》回到本质还是编译
还可以通过漏洞扫描工具,针对具体漏洞具体处理
相关文章:
Linux备份服务及rsync企业备份架构(应用场景)
备份服务概述 备份服务:需要使用到脚本,打包备份,定时任务. 备份服务:rsyncd服务,不同主机之间数据传输. 特点: rsync是个服务也是命令使用方便,具有多种模式传输数据的时候是增量传输 增量与全量: 全量 :无论多少数据全部推…...
用手机打印需要下载什么软件
在快节奏的现代生活中,打印需求无处不在,无论是工作文件、学习资料还是生活小贴士,都可能需要一纸呈现。然而,传统的打印方式往往受限于时间和地点,让人倍感不便。今天,就为大家推荐一款便捷又省钱的手机打…...
Storm在Java中的应用
Storm在Java中的应用主要体现在构建分布式实时计算系统,用于处理大数据流。以下是一些Storm在Java中的具体应用场景和步骤: 实时数据处理:Storm可以实时地接收、处理和传输数据。对于需要快速响应的应用场景,如在线广告、金融交易…...
Java 面试题日常练习
### 基础知识 1. **什么是 JVM?解释其架构。** - JVM(Java Virtual Machine)是 Java 程序的运行时环境。其架构包括类加载器子系统、运行时数据区(堆、栈、本地方法栈、PC 寄存器、方法区)、执行引擎和本地方法接口…...
卷爆短剧出海:五大关键,由AIGC重构
短剧高温下,谈谈AIGC的助攻路线。 短剧,一个席卷全球的高温赛道。 以往只是踏着霸总题材,如今,内容循着精品化、IP化的自然发展风向,给内容、制作、平台等产业全链都带来新机,也让短剧消费走向文化深处&am…...
LLM实战:当网页爬虫集成gpt3.5
1. 背景 最近本qiang~关注了一个开源项目Scrapegraph-ai,是关于网页爬虫结合LLM的项目,所以想一探究竟,毕竟当下及未来,LLM终将替代以往的方方面面。 这篇文章主要介绍下该项目,并基于此项目实现一个demo页面&#x…...
Flutter底部导航栏和顶部Tab切换完整代码
题记 —— 执剑天涯,从你的点滴积累开始,所及之处,必精益求精,即是折腾每一天。 目前市场上绝大部分App的布局结构基本统一:底部导航顶部导航,底部导航页里嵌套顶部导航栏,顶部导航页里嵌套图文…...
Jupyter 使用手册: 探索交互式计算的无限可能
什么是 Jupyter? Jupyter 是一个开源的 Web 应用程序,可用于创建和共享包含实时代码、可视化和叙述性文本的文档。它最初是作为 IPython 项目的一部分开发的,后来发展成为支持多种编程语言的交互式计算环境。 应用场景 作为一个开源的交互式计算环境,Jupyter 在以下几个领域…...
IP地址显示“不安全”怎么办|已解决
解决IP地址显示“不安全”的问题,通常需要确保网站或服务使用HTTPS协议进行加密通信,可以通过部署SSL证书来解决,以下是具体的解决步骤: 1 申请IP地址SSL证书:网站管理员应向证书颁发机构(CA)申…...
国内安全实用的图纸透明加密软件厂家,靠谱的透明加密软件供应商--安秉信息
设计类图纸安全已经成为企业需要注意的问题,在当前互联网设计行业、汽车制造设计、机械制造行业等相关企业都需要对企业内部图纸的保护需求,现在在互联网中,企业数据泄露的事情已经层出不穷,企业对核心图纸的数据安全工作需要重点…...
【kubernetes】探索k8s集群中kubectl的陈述式资源管理
目录 一、k8s集群资源管理方式分类 1.1陈述式资源管理方式:增删查比较方便,但是改非常不方便 1.2声明式资源管理方式:yaml文件管理 二、陈述式资源管理方法 2.1查看版本信息 2.2查看资源对象简写 2.3配置kubectl自动补全 2.4node节点…...
VUE 创建组件常见的几种方式
在 Vue.js 中,组件的创建和使用通常遵循以下三种方法: 1. 全局组件 全局组件是通过 Vue.component() 方法创建的,注册后的组件可以在任何新创建的 Vue 实例(包括根实例)的模板中使用。 Vue.component(my-component,…...
华为OBS命令行简单使用
华为OBS(Object Storage Service)是一种云存储服务,提供了高可靠、高性能、安全的数据存储能力。通过使用OBS的命令行工具obsutil,用户可以方便地进行文件上传、下载、删除等操作,而无需依赖图形界面。下面,…...
避免超卖!深入解析高并发分布式锁架构
1.引入并发控制的必要性 并发控制是一切分布式系统设计的基石,确保数据一致性、系统稳定性和最终的用户体验。要理解为什么需要并发控制,就必须先探讨并发对系统可能造成的问题。 1.1. 理解并发问题 多线程和分布式环境中,无数的进程和线程…...
latent diffusion 原理+代码
latent diffusion - Github 以下代码来自 作者: 李宝璐 链接: https://libaolu312.github.io/2023/11/27/Latent-Diffusion-Models-原理和代码/ 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处&…...
Unity开发——好用的数值概率公式
1、血量、伤害两个因素作用,击杀目标 正常状态下:hp - attackValue; 特殊状态下:attackValue *2; //伤害翻倍 如飞机/坦克大战中,击杀对方;受到伤害时,装备道具磨损失效; public int…...
微信小程序的自定义组件
一、创建自定义组件 (1)定义: 把页面重复的代码部分封装成为一个自定义组件,以便在不同的页面中重复使用,有助于代码的维护。 (2)组成: 自定义组件的组成:json文件&a…...
【算法刷题day57】Leetcode:739. 每日温度、496.下一个更大元素 I
文章目录 Leetcode 739. 每日温度解题思路代码总结 Leetcode 496.下一个更大元素 I解题思路代码总结 草稿图网站 java的Deque Leetcode 739. 每日温度 题目:739. 每日温度 解析:代码随想录解析 解题思路 维护一个单调栈,当新元素大于栈顶&a…...
【EXCEL_VBA_实战】两组数据比对是否一致(字符串数组)
工作背景:比对两组数据是否一致(位置非一一对应) 思路构建:两组数据转换为两组字符串数组,比对所包含元素是否相同 问题点:A数组的第一个元素不一定与B数组的第一个元素对应,此时无法通过公式…...
寻找峰值 ---- 二分查找
题目链接 题目: 分析: 因为题目中要找的是任意一个峰值即可, 所以和<山脉数组的峰值索引>这道题差不多因为峰值左右都小于峰值, 所以具有"二段性", 可以使用二分查找算法如果nums[mid] < nums[mid 1], mid一定不是峰值, 所以left mid 1如果nums[mid] &…...
内网渗透零基础入门教程!小白也能轻松搞懂内网渗透基础知识点
内网渗透初探 | 小白简单学习内网渗透 0x01 基础知识 内网渗透,从字面上理解便是对目标服务器所在内网进行渗透并最终获取域控权限的一种渗透。内网渗透的前提需要获取一个Webshell,可以是低权限的Webshell,因为可以通过提权获取高权限。 …...
OpenClaw压力测试:Qwen3-32B在RTX4090D上的连续任务稳定性
OpenClaw压力测试:Qwen3-32B在RTX4090D上的连续任务稳定性 1. 测试背景与目标 上周在本地部署了OpenClaw对接Qwen3-32B模型后,我遇到了一个现实问题:当连续执行复杂任务链时,系统会在运行2-3小时后突然崩溃。作为需要724小时运行…...
2026-04-03期 AI最新资讯
2026年4月3日 AI资讯日报 每日精选人工智能领域最新动态,带你快速掌握技术突破、产品发布与行业趋势。🚀 技术突破 Meta 发布 Llama 4 系列开源大模型 Meta 今日正式推出 Llama 4 系列,包含三个版本:Llama 4 Mini、Llama 4 Base 和…...
彻底搞懂ScheduledThreadPoolExecutor
在技术领域,我们常常被那些闪耀的、可见的成果所吸引。今天,这个焦点无疑是大语言模型技术。它们的流畅对话、惊人的创造力,让我们得以一窥未来的轮廓。然而,作为在企业一线构建、部署和维护复杂系统的实践者,我们深知…...
AWS推出新工具简化量子纠错开发流程
谷歌近日将量子计算机实用化时间表提前至2029年,这得益于量子计算机硬件、量子纠错和算法方面的重大改进。2019年,谷歌估计需要2000万个量子比特才能破解RSA加密。到2025年5月,谷歌将这一估计数字下调至100万个。今年2月,澳大利亚…...
单片机驱动MOS管的原理与实战技巧
1. 单片机直接驱动MOS管的原理与风险MOS管作为现代电子设计中最常用的功率开关器件,其控制方式看似简单却暗藏玄机。作为一名经历过多次"炸管"教训的硬件工程师,我想分享一些关于单片机直接驱动MOS管的实战经验。MOS管分为NMOS和PMOS两种类型&…...
DeepSeek R1 本地部署企业级实战(附Ollama及CherryStudio客户端安装包)
1、DeepSeek 双系列定位 DeepSeek 作为国内对标 GPT-4 的顶尖大模型,核心分为两大技术系列,精准覆盖不同业务场景: 系列 定位 核心能力 典型模型 小模型覆盖 R1(推理增强) 深度思考、复杂逻辑 数学、代码、长链推理 R1-671B、R1-32B、R1-7B 1.5B/7B/8B/14B/32B(Ollama 主…...
30美元实现AI视觉革命:OpenGlass开源智能眼镜的平民化方案
30美元实现AI视觉革命:OpenGlass开源智能眼镜的平民化方案 【免费下载链接】OpenGlass Turn any glasses into AI-powered smart glasses 项目地址: https://gitcode.com/GitHub_Trending/op/OpenGlass 当商业智能眼镜以数千元价格将普通用户拒之门外时&…...
2026最新Node.js+NVM全平台安装教程
2026最新Node.jsNVM全平台安装教程 前言 在前端、后端全栈开发中,Node.js 是必不可少的运行环境,而不同项目往往依赖不同的 Node.js 版本,手动安装卸载不仅麻烦还容易冲突。 NVM(Node Version Manager) 作为 Node.j…...
基于陷波滤波器的双惯量伺服系统机械谐振抑制Matlab Simulink仿真模型研究:算法原理...
(传递函数版)伺服系统基于陷波滤波器双惯量伺服系统机械谐振抑制matlab/Simulink仿真 1.模型简介模型为基于陷波滤波器的双惯量伺服系统机械谐振抑制仿真,采用Matlab R2018a/Simulink搭建 仿真模型由传递函数形式搭建,主要包括转速…...
