first commit
This commit is contained in:
Executable
+34
@@ -0,0 +1,34 @@
|
||||
---
|
||||
created: 2025-08-30T10:17
|
||||
updated: 2025-09-09T21:32
|
||||
---
|
||||
8610158842:AAHeHywu8VfyxAUyPdmb7MK46O-tftkmA4g
|
||||
|
||||
## 1 Googl Gemini
|
||||
- 使用指南
|
||||
https://zhuanlan.zhihu.com/p/1929222525176512837
|
||||
摘要:
|
||||
|
||||
**Gemini Pro: Google AI 的终极指南 (2025最新版)**
|
||||
|
||||
全面体验 [Gemini 中文版](https://link.zhihu.com/?target=https%3A//chat.lanjingai.org/),**国内直连,支持 Gemini 2.5 Pro 及中文版功能**
|
||||
|
||||
本指南提供全面的 **Gemini 国内使用指南**,包括国内可用的 [Gemini 官网入口](https://link.zhihu.com/?target=https%3A//xsimplechat.com/)、[Gemini 网页版](https://link.zhihu.com/?target=https%3A//xsimplechat.com/)、[Gemini 国内镜像网站](https://link.zhihu.com/?target=https%3A//chat.lanjingai.org/) 和详细的使用教程,助您快速上手 Gemini~
|
||||
|
||||
**Gemini 中文版入口:**[https://chat.lanjingai.org](https://link.zhihu.com/?target=https%3A//chat.lanjingai.org/) **Gemini 镜像网站:**[https://xsimplechat.com](https://link.zhihu.com/?target=https%3A//xsimplechat.com/)
|
||||
|
||||
- 中文入口
|
||||
|
||||
https://chat.lanjingai.org/
|
||||
|
||||
欢迎使用 [**🎉蓝鲸AI(https://chat.lanjingai.org)**](https://chat.lanjingai.org/) (按 Ctrl + D 收藏本站)
|
||||
**备用网址**: [**https://ai.lanjing.pro**](https://ai.lanjing.pro/)、[**https://gpt.lanjing.pro**](https://gpt.lanjing.pro/) 都保存一下~
|
||||
**电脑客户端**:**[🌟Windows客户端](https://chat.lanjingai.org/file/system/LanJingAI-Windows.zip)**、 **[🌟MacOS客户端](https://chat.lanjingai.org/file/system/LanJingAI-MacOS.zip)** | **手机APP**:**[🌟Android 下载](https://chat.lanjingai.org/file/system/LanJingAI-Android.zip)**
|
||||
**客服QQ群**: **470620736**
|
||||
|
||||
## 2 ObsidianAI插件
|
||||
|
||||

|
||||
|
||||
https://forum-zh.obsidian.md/t/topic/31483
|
||||
|
||||
Executable
+140
@@ -0,0 +1,140 @@
|
||||
---
|
||||
created: 2025-08-30T11:45
|
||||
updated: 2025-09-22T13:27
|
||||
---
|
||||

|
||||
|
||||
[李孟聊人工智能](https://limeng.blog.csdn.net/ "李孟聊人工智能") 
|
||||
已于 2025-03-26 21:12:21 修改
|
||||
|
||||
于 2025-03-26 21:12:01 首次发布
|
||||
|
||||
本文为博主(李孟)原创文章,未经博主允许不得转载。
|
||||
|
||||
谷歌3月25日发布的Gemini 2.5 Pro可能成为AI发展史上的关键转折点。
|
||||
|
||||
尽管企业对其最新模型夸大其词已成常态,但2.5 Pro发布即登顶LMArena排行榜(该榜单由人类评估员根据交互质量和实用性对AI进行排名)的事实表明,这绝非营销噱头。
|
||||
|
||||

|
||||
|
||||
该模型的独特之处在于其架构设计。
|
||||
|
||||
Gemini 2.5 Pro并非简单匹配训练数据模式,而是将谷歌所称的"思考能力"直接融入设计。
|
||||
|
||||
在生成回应前,模型会有意识地将复杂问题分解为逻辑步骤——这一过程比早期模型的统计近似更接近人类推理方式。
|
||||
|
||||
这并非思维链提示(chain-of-thought prompting)的简单重组,而是植根于模型底层的核心机制。
|
||||
|
||||
现在你可以在**Google Colab上免费使用**!
|
||||
|
||||
**特点**
|
||||
------
|
||||
|
||||
谷歌最新AI模型,拥有:
|
||||
|
||||
✔ **100万token上下文窗口**(超长记忆!)
|
||||
|
||||
✔ **推理能力超越GPT-4 Turbo**
|
||||
|
||||
✔ **多模态支持**(文本/图像/代码/音频)
|
||||
|
||||
✔ **比Gemini 1.5 Pro更快更便宜**
|
||||
|
||||

|
||||
|
||||
**性能基准**
|
||||
--------
|
||||
|
||||
• MMLU测试准确率91.4%
|
||||
|
||||
• 复杂推理任务优于GPT-4
|
||||
|
||||
• 可处理超长文档(100万token≈70万单词!)
|
||||
|
||||

|
||||
|
||||
**Colab免费使用指南**
|
||||
---------------
|
||||
|
||||
**步骤1:打开Google Colab**
|
||||
|
||||
👉 [点击此处进入Colab](https://colab.research.google.com/) ([https://colab.research.google.com/](https://colab.research.google.com/))
|
||||
|
||||
**步骤2:安装并导入Gemini**
|
||||
|
||||
```python
|
||||
!pip install google-genai
|
||||
|
||||
|
||||
from google import genai
|
||||
from google.genai import types
|
||||
import os
|
||||
from PIL import Image
|
||||
|
||||
```
|
||||
|
||||
**步骤3:设置API密钥(免费!)**
|
||||
|
||||
```python
|
||||
os.environ["GEMINI_API_KEY"] = "您的API密钥"
|
||||
gemini_client = genai.Client(api_key=os.environ["GEMINI_API_KEY"])
|
||||
|
||||
```
|
||||
|
||||
_注:_[在此获取API密钥](https://ai.google.dev/) ([https://aistudio.google.com/](https://aistudio.google.com/))
|
||||
|
||||
**完整案例:多模态推理(文本+图像)**
|
||||
---------------------
|
||||
|
||||
让Gemini根据路况图片判断卡车能否准时抵达目的地
|
||||
|
||||
📌 **代码实现**
|
||||
|
||||
```python
|
||||
|
||||
from google.colab import files
|
||||
uploaded = files.upload()
|
||||
image_path = next(iter(uploaded.keys()))
|
||||
img = Image.open(image_path)
|
||||
|
||||
|
||||
|
||||
prompt = """
|
||||
我正驾驶卡车行驶在这条路上,现在是中午12点。
|
||||
能否在13点前到达110公里外的目的地?
|
||||
"""
|
||||
|
||||
|
||||
|
||||
response = gemini_client.models.generate_content(
|
||||
model="gemini-2.5-pro-exp-03-25",
|
||||
contents=[prompt, img]
|
||||
)
|
||||
|
||||
|
||||
print(response.text)
|
||||
|
||||
```
|
||||
|
||||
**输入**
|
||||
|
||||

|
||||
|
||||
📸 **预期输出**
|
||||
|
||||
Gemini会分析道路图像(车流、限速等)并给出类似回答:
|
||||
|
||||
> “根据当前路况和卡车平均时速(60公里/小时),1小时内无法行驶110公里。至少需要1小时50分钟。”
|
||||
|
||||
**进阶技巧**
|
||||
--------
|
||||
|
||||
• 使用高清图像提升分析精度
|
||||
|
||||
• 尝试超长上下文提示(上限100万token!)
|
||||
|
||||
• 组合文本+代码+图像进行复杂推理
|
||||
|
||||
**立即尝试并分享你的成果!** **你打算用Gemini 2.5 Pro开发什么?**
|
||||
|
||||
[Gemini 2.5 Pro 使用地址](https://aistudio.google.com/app/prompts/new_chat?model=gemini-2.5-pro-exp-03-25)
|
||||
Executable
+76
@@ -0,0 +1,76 @@
|
||||
---
|
||||
created: 2025-08-30T11:44
|
||||
updated: 2025-09-22T13:26
|
||||
---
|
||||
title: Mac使用docker时,卷默认挂载路径/var/lib/docker/volumes不存在问题\_mac docker 卷默认挂载路径不存在-CSDN博客
|
||||
在Docker中,卷默认挂载在/var/lib/docker/volumes路径下。当尝试访问MacOS的该路径时,可能会遇到路径不存在的问题。原因是Docker在Mac上运行于虚拟机内部。解决方法是通过运行特定命令进入Docker的挂载空间,如使用\`docker run -it --privileged --pid=host debian nsenter -t 1 -m -u -n -i sh\`,然后可以查看和操作卷挂载的实际路径。退出该环境使用\`exit\`命令。
|
||||
keywords: mac docker 卷默认挂载路径不存在
|
||||
|
||||
[blog.csdn.net](https://blog.csdn.net/qq_43758789/article/details/121272433 "Mac使用docker时,卷默认挂载路径/var/lib/docker/volumes不存在问题")
|
||||
|
||||
# Mac使用docker时,卷默认挂载路径/var/lib/docker/volumes不存在问题
|
||||
|
||||
### 卷默认挂载路径
|
||||
|
||||
**当使用匿名挂载或者具名挂载时,卷会被挂载到默认的/var/lib/docker/volumes路径下。**
|
||||
|
||||
1. 以查看一个具名挂载为例,使用 **“docker volume inspect 卷名”** ,查看该卷的详细信息。
|
||||
|
||||
|
||||
yc@localhost ~ % docker volume inspect juming
|
||||
[
|
||||
{
|
||||
"CreatedAt": "2021-11-11T07:24:22Z",
|
||||
"Driver": "local",
|
||||
"Labels": null,
|
||||
"Mountpoint": "/var/lib/docker/volumes/juming/_data",
|
||||
"Name": "juming",
|
||||
"Options": null,
|
||||
"Scope": "local"
|
||||
}
|
||||
]
|
||||
|
||||
|
||||
![][1]
|
||||
|
||||
### Mac OS系统出现路径不存在问题
|
||||
|
||||
1. 在上述操作之后,发现挂载路径是 **“/var/lib/docker/volumes/juming/_data”**,但是在Mac终端进入这个路径时,发现它并不存在
|
||||
|
||||
|
||||
yc@localhost ~ % cd /var/lib/docker/volumes
|
||||
cd: no such file or directory: /var/lib/docker/volumes
|
||||
|
||||
|
||||
|
||||
2. 在网上看了很多教程,说是使用下面的命令后,var下的lib/docker等等路径就显示出来了
|
||||
`screen ~/Library/Containers/com.docker.docker/Data/vms/0/tty`
|
||||
|
||||
3. 但是我的 **/Library/Containers/com.docker.docker/Data/vms/0**目录下,并没有tty,所以显示了下面的 **screen is terminating**
|
||||
|
||||
|
||||
yc@localhost ~ % screen ~/Library/Containers/com.docker.docker/Data/vms/0/tty
|
||||
|
||||
[screen is terminating]
|
||||
|
||||
|
||||
|
||||
### 解决办法
|
||||
|
||||
1. 在终端使用以下命令
|
||||
`docker run -it --privileged --pid=host debian nsenter -t 1 -m -u -n -i sh`
|
||||
|
||||
2. 然后输入 **ls** 查看当前路径下目录信息
|
||||
|
||||
3. 然后 **cd /var/lib/docker/volumes**
|
||||
|
||||
4. 然后 **ls** 可发现此时我们的卷挂载都在这个目录下
|
||||
|
||||

|
||||
|
||||
|
||||
5. 想要退出的话,**exit** 就行
|
||||
|
||||
[1]: https://csdnimg.cn/release/blogv2/dist/pc/img/runCode/icon-arrowwhite.png ""
|
||||
[2]: https://i-blog.csdnimg.cn/blog_migrate/c9781f0e9bb8747227fb65d7834fb827.png
|
||||
|
||||
+821
@@ -0,0 +1,821 @@
|
||||
---
|
||||
created: 2025-08-30T11:45
|
||||
updated: 2025-09-22T13:27
|
||||
---
|
||||
一、Docker是什么
|
||||
-----------
|
||||
|
||||
**Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口。** 它是目前最流行的 Linux 容器解决方案。
|
||||
|
||||
Docker 将应用程序与该程序的依赖,打包在一个image文件里面。
|
||||
|
||||
运行这个文件,就会生成一个虚拟容器。
|
||||
|
||||
程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样。
|
||||
|
||||

|
||||
|
||||
1、**Docker 把应用程序及其依赖,打包在 image 文件里面。** 只有通过这个文件,才能生成 Docker 容器。image 文件可以看作是容器的模板。Docker 根据 image 文件生成容器的实例。同一个 image 文件,可以生成多个同时运行的容器实例。
|
||||
|
||||
2、image 是二进制文件。实际开发中,一个 image 文件往往通过继承另一个 image 文件,加上一些个性化设置而生成。举例来说,你可以在 Ubuntu 的 image 基础上,往里面加入 Apache 服务器,形成你的 image。
|
||||
|
||||
image 文件是通用的,一台机器的 image 文件拷贝到另一台机器,照样可以使用。一般来说,为了节省时间,我们应该尽量使用别人制作好的 image 文件,而不是自己制作。即使要定制,也应该基于别人的 image 文件进行加工,而不是从零开始制作。
|
||||
|
||||
3、为了方便共享,image 文件制作完成后,可以上传到网上的仓库。Docker 的官方仓库 [Docker Hub](https://hub.docker.com/ "Docker Hub") 是最重要、最常用的 image 仓库。此外,出售自己制作的 image 文件也是可以的。
|
||||
|
||||
有了 Docker,就不用担心环境问题。
|
||||
|
||||
总体来说,Docker 的接口相当简单,用户可以方便地创建和使用容器,把自己的应用放入容器。容器还可以进行版本管理、复制、分享、修改,就像管理普通的代码一样。
|
||||
|
||||
二、Docker 的用途
|
||||
------------
|
||||
|
||||
Docker 的主要用途,目前有三大类。
|
||||
|
||||
**(1)提供一次性的环境。** 比如,本地测试他人的软件、持续集成的时候提供单元测试和构建的环境。
|
||||
|
||||
**(2)提供弹性的云服务。** 因为 Docker 容器可以随开随关,很适合动态扩容和缩容。
|
||||
|
||||
**(3)组建微服务架构。** 通过多个容器,一台机器可以跑多个服务,因此在本机就可以模拟出微服务架构。
|
||||
|
||||
三、安装:
|
||||
-----
|
||||
|
||||
### 下载地址:
|
||||
|
||||
[Empowering App Development for Developers | Docker](https://www.docker.com/ "Empowering App Development for Developers | Docker")
|
||||
|
||||
[Get Started with Docker | Docker](https://www.docker.com/get-started "Get Started with Docker | Docker")
|
||||
|
||||
[Install Docker Desktop on Mac | Docker Documentation](https://docs.docker.com/desktop/mac/install/ "Install Docker Desktop on Mac | Docker Documentation")
|
||||
|
||||
### 用户手册:
|
||||
|
||||
[Docker Desktop for Mac user manual | Docker Documentation](https://docs.docker.com/desktop/mac/ "Docker Desktop for Mac user manual | Docker Documentation")
|
||||
|
||||
Docker 是服务器----客户端架构。命令行运行`docker`命令的时候,需要本机有 Docker 服务。如果这项服务没有启动,可以用下面的命令启动
|
||||
|
||||
```null
|
||||
$ sudo service docker start$ sudo systemctl start docker
|
||||
```
|
||||
|
||||
四、配置镜像
|
||||
------
|
||||
|
||||
### 4.1为什么要配置镜像:
|
||||
|
||||
因为docker服务器在国外,基于网速与“和谐墙”的问题,所以我们在国内操作国外镜像可能无法正常拉取,这需要我们为docker设置国内的阿里云镜像加速器。
|
||||
|
||||
### 4.2配置镜像
|
||||
|
||||
Preferences--Docker Engine
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
```null
|
||||
"https://e29lwva9.mirror.aliyuncs.com"
|
||||
```
|
||||
|
||||
然后重启一下
|
||||
|
||||
### 4.3查看是否配置成功
|
||||
|
||||
在终端输入
|
||||
|
||||
```null
|
||||
docker info
|
||||
```
|
||||
|
||||
查看结果
|
||||
|
||||

|
||||
|
||||
镜像配置成功
|
||||
|
||||
六、运行docker程序,实例:hello world
|
||||
---------------------------
|
||||
|
||||
下面,我们通过最简单的 image 文件"[hello world"](https://hub.docker.com/r/library/hello-world/ "hello world""),感受一下 Docker。
|
||||
|
||||
需要说明的是,国内连接 Docker 的官方仓库很慢,还会断线,需要将默认仓库改成国内的镜像网站。
|
||||
|
||||
首先,运行下面的命令,将 image 文件从仓库抓取到本地。
|
||||
|
||||
```null
|
||||
docker image pull library/hello-world
|
||||
```
|
||||
|
||||
上面代码中,`docker image pull`是抓取 image 文件的命令。`library/hello-world`是 image 文件在仓库里面的位置,其中`library`是 image 文件所在的组,`hello-world`是 image 文件的名字。
|
||||
|
||||
由于 Docker 官方提供的 image 文件,都放在[library](https://hub.docker.com/r/library/ "library")组里面,所以它的是默认组,可以省略。因此,上面的命令可以写成下面这样。
|
||||
|
||||
```null
|
||||
docker image pull hello-world
|
||||
```
|
||||
|
||||
抓取成功以后,就可以在本机看到这个 image 文件了。
|
||||
|
||||
```null
|
||||
docker images
|
||||
```
|
||||
|
||||
现在,运行这个 image 文件。
|
||||
|
||||
```null
|
||||
docker container run hello-world
|
||||
```
|
||||
|
||||
`docker container run`命令会从 image 文件,生成一个正在运行的容器实例。
|
||||
|
||||
**注意,`docker container run`命令具有自动抓取 image 文件的功能。**
|
||||
|
||||
**如果发现本地没有指定的 image 文件,就会从仓库自动抓取。**
|
||||
|
||||
因此,前面的`docker image pull`命令并不是必需的步骤。
|
||||
|
||||
如果运行成功,你会在屏幕上读到下面的输出。
|
||||
|
||||
```null
|
||||
a58@58deMacBook-Pro-2 ~ % docker container run hello-worldThis message shows that your installation appears to be working correctly.
|
||||
```
|
||||
|
||||
输出这段提示以后,`hello world`就会停止运行,容器自动终止。
|
||||
|
||||
有些容器不会自动终止,因为提供的是服务。比如,安装运行 Ubuntu 的 image,就可以在命令行体验 Ubuntu 系统。
|
||||
|
||||
> ```null
|
||||
> $ docker container run -it ubuntu bash
|
||||
> ```
|
||||
|
||||
对于那些不会自动终止的容器,必须使用[docker container kill](https://docs.docker.com/engine/reference/commandline/container_kill/ "docker container kill") 命令手动终止。
|
||||
|
||||
> ```null
|
||||
> $ docker container kill [containID]
|
||||
> ```
|
||||
|
||||
### 6.2 第一次运行命令 docker run ubuntu echo hello world
|
||||
|
||||
```null
|
||||
a58@58deMacBook-Pro-2 ~ % docker run ubuntu echo hello worldUnable to find image 'ubuntu:latest' locallydocker: Error response from daemon: pull access denied for cs, repository does not exist or may require 'docker login': denied: requested access to the resource is denied.
|
||||
```
|
||||
|
||||
运行失败,原因:
|
||||
|
||||
docker在运行一个容器之前,会先看本地是否有容器需要的image,如果没有的话会去远端下载。
|
||||
|
||||
运行完成之后,会在本地生成一个名为ubuntu的imge
|
||||
|
||||

|
||||
|
||||
我们再次执行
|
||||
|
||||
```null
|
||||
a58@58deMacBook-Pro-2 ~ % docker run ubuntu echo hello world
|
||||
```
|
||||
|
||||
在 ubuntu这个image里,运行了echo hello world 这个命令,输出了hello world
|
||||
|
||||
### 查看本地所有的images
|
||||
|
||||
docker images
|
||||
|
||||
```null
|
||||
a58@58deMacBook-Pro-2 ~ % docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEdocker/getting-started latest adfdb308d623 3 weeks ago 27.4MBubuntu latest d5ca7a445605 4 months ago 65.6MBhello-world latest 18e5af790473 5 months ago 9.14kB
|
||||
```
|
||||
|
||||
七、容器文件
|
||||
------
|
||||
|
||||
**image 文件生成的容器实例,本身也是一个文件,称为容器文件。** 也就是说,一旦容器生成,就会同时存在两个文件: image 文件和容器文件。而且关闭容器并不会删除容器文件,只是容器停止运行而已。
|
||||
|
||||
```null
|
||||
$ docker container ls --all
|
||||
```
|
||||
|
||||
上面命令的输出结果之中,包括容器的 ID (containerID)。很多地方都需要提供这个 ID,比如上一节终止容器运行的`docker container kill`命令。
|
||||
|
||||
终止运行的容器文件,依然会占据硬盘空间,可以使用[docker container rm](https://docs.docker.com/engine/reference/commandline/container_rm/ "docker container rm")命令删除。
|
||||
|
||||
```null
|
||||
docker container rm [containerID]
|
||||
```
|
||||
|
||||
运行上面的命令之后,再使用`docker container ls --all`命令,就会发现被删除的容器文件已经消失了。
|
||||
|
||||
### **7.2容器与image的关系**
|
||||
|
||||
**image id 是固定不变的。根据同一个image生成的不同容器,容器id containerID 是不同的**
|
||||
|
||||
八、 docker启动nginx容器
|
||||
------------------
|
||||
|
||||
```null
|
||||
a58@58deMacBook-Pro-2 ~ % docker run nginxUnable to find image 'nginx:latest' locally
|
||||
```
|
||||
|
||||
docker run nginx ,执行失败。
|
||||
|
||||
docker在运行一个容器之前,会先看本地是否有容器需要的image,如果没有的话会去远端下载。
|
||||
|
||||
再次运行:
|
||||
|
||||
```null
|
||||
a58@58deMacBook-Pro-2 ~ % docker run -p 8080:80 -d nginx612195861a8cd79ed5202c7eab581a86f78d0284672ab0662450236bebfbf696
|
||||
```
|
||||
|
||||
运行成功
|
||||
|
||||
命令解释:
|
||||
|
||||
```null
|
||||
-p 8080:80 端口映射,将image的80端口,映射到本地8080端口
|
||||
```
|
||||
|
||||
**docker ps 查看我们刚刚启动docker容器的信息**
|
||||
|
||||
```null
|
||||
a58@58deMacBook-Pro-2 ~ % docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES612195861a8c nginx "/docker-entrypoint.…" 5 minutes ago Up 5 minutes 0.0.0.0:8080->80/tcp interesting_allen
|
||||
```
|
||||
|
||||
**容器的id**
|
||||
|
||||
CONTAINER ID :612195861a8c
|
||||
|
||||
**端口映射关系**
|
||||
|
||||
PORTS: 0.0.0.0:8080->80/tcp
|
||||
|
||||
我们在浏览器访问地址:
|
||||
|
||||
```null
|
||||
http://localhost:8080/
|
||||
```
|
||||
|
||||

|
||||
|
||||
我们在当前浏览器启动了一个nginx
|
||||
|
||||
3.3 我们在本地创建一个index.html文件
|
||||
|
||||
index.html
|
||||
|
||||
将index.htm复制到ningx容器中
|
||||
|
||||
```null
|
||||
docker cp index.html 612195861a8c://usr/share/nginx/html
|
||||
```
|
||||
|
||||
612195861a8c 为容器的id。
|
||||
|
||||
我们再次访问
|
||||
|
||||
```null
|
||||
http://localhost:8080/
|
||||
```
|
||||
|
||||

|
||||
|
||||
现在访问的就是我们刚刚复制过去的index.htm文件
|
||||
|
||||
**停止docker容器**
|
||||
|
||||
**docker stop +容器id**
|
||||
|
||||
```null
|
||||
a58@58deMacBook-Pro-2 ~ % docker stop 612195861a8c
|
||||
```
|
||||
|
||||
停止docker容器后,再次访问[ http://localhost:8080/](http://localhost:8080/ " http://localhost:8080/")
|
||||
|
||||
显示无法访问此网站
|
||||
|
||||
再次启动容器 docker run -p 8080:80 -d nginx
|
||||
|
||||
```null
|
||||
a58@58deMacBook-Pro-2 ~ % docker run -p 8080:80 -d nginxb77bac0b212baaa7e33564ea623b09be58b06838a6fda4cf0612c397eaa11dad
|
||||
```
|
||||
|
||||
查看详细信息 docker ps
|
||||
|
||||
```null
|
||||
a58@58deMacBook-Pro-2 ~ % docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESb77bac0b212b nginx "/docker-entrypoint.…" 12 seconds ago Up 10 seconds 0.0.0.0:8080->80/tcp strange_mcnulty
|
||||
```
|
||||
|
||||
发现,容器的id变了。
|
||||
|
||||

|
||||
|
||||
此时访问的地址,展示的是nginx缺省的页面,而不是刚刚我们复制的index.htm页面。
|
||||
|
||||
这是因为在容器的改动,都是暂时的,不会被保存。
|
||||
|
||||
九、如何保存容器内的改动?
|
||||
-------------
|
||||
|
||||
我们再次把index.html,复制到刚刚的容器中
|
||||
|
||||
```null
|
||||
docker cp index.html 384c7a8e8028://usr/share/nginx/html
|
||||
```
|
||||
|
||||
384c7a8e8028是容器id
|
||||
|
||||
访问:
|
||||
|
||||
[http://localhost:8080/](http://localhost:8080/ "http://localhost:8080/")
|
||||
|
||||
### **9.1 使用commit命令来保存**
|
||||
|
||||
```null
|
||||
docker commit -m '增加index' 384c7a8e8028
|
||||
```
|
||||
|
||||
最后面的384c7a8e8028是容器的id
|
||||
|
||||
```null
|
||||
a58@58deMacBook-Pro-2 ~ % docker commit -m '增加index' 384c7a8e8028sha256:14a1e785e7c14821e051c1939b2caeee8bc450a7e710ec959dd1ea085c1bc6c7
|
||||
```
|
||||
|
||||
使用commit提交改动后,会产生一个新的image id。
|
||||
|
||||
查看所有的images
|
||||
|
||||
```null
|
||||
docker images
|
||||
```
|
||||
|
||||

|
||||
|
||||
此时新增了一个image,但是 名字和TAG都是为空(因为我们刚刚commit的时候没有加名字)
|
||||
|
||||
再次重复执行一下刚刚的操作
|
||||
|
||||
```null
|
||||
docker cp index.html 384c7a8e8028://usr/share/nginx/html
|
||||
```
|
||||
|
||||
nginx-fun 是我们给的名字
|
||||
|
||||
```null
|
||||
docker commit -m '增加index' 384c7a8e8028 nginx-fun
|
||||
```
|
||||
|
||||
再次查看所有的image
|
||||
|
||||
```null
|
||||
docker images
|
||||
```
|
||||
|
||||

|
||||
|
||||
### 9.2 删除image
|
||||
|
||||
删除名称为none的image
|
||||
|
||||
```null
|
||||
docker rmi 14a1e785e7c1
|
||||
```
|
||||
|
||||
rmi: remove image 的缩写
|
||||
|
||||
14a1e785e7c1: 要被删除的image的id
|
||||
|
||||

|
||||
|
||||
### 9.3 删除容器
|
||||
|
||||
查看正在运行的docker 容器
|
||||
|
||||
```null
|
||||
docker ps
|
||||
```
|
||||
|
||||
停止正在运行的docker容器
|
||||
|
||||
```null
|
||||
docker stop 384c7a8e8028
|
||||
```
|
||||
|
||||
384c7a8e8028容器id CONTAINER ID
|
||||
|
||||
查看docker所有的容器(运行中的+历史的)
|
||||
|
||||
```null
|
||||
docker ps -a
|
||||
```
|
||||
|
||||
删除
|
||||
|
||||
删除2个
|
||||
|
||||
```null
|
||||
docker rm 3a485ba7386e cb77a4f75e2e
|
||||
```
|
||||
|
||||
再次查看所有
|
||||
|
||||
```null
|
||||
docker ps -a
|
||||
```
|
||||
|
||||
被删除的不在了
|
||||
|
||||
十、docker命令总结
|
||||
------------
|
||||
|
||||
| 命令 | 用途 |
|
||||
| docker pull | 远程拉取image |
|
||||
| docker build | 创建image |
|
||||
| docker images | 列出本地所有的image |
|
||||
| docker run | 运行容器container |
|
||||
| docker ps | 列出当前运行的容器container |
|
||||
| docker rm | 删除已经结束的容器container |
|
||||
| docker cp | 在本地和容器之间拷贝文件 |
|
||||
| docker commit | 保存改动生成新的image |
|
||||
| docker rmi | 删除image |
|
||||
|
||||
十一、Dockerfile 文件,自创镜像
|
||||
---------------------
|
||||
|
||||
学会使用 image 文件以后,接下来的问题就是,如何可以生成 image 文件?如果你要推广自己的软件,势必要自己制作 image 文件。
|
||||
|
||||
这就需要用到 Dockerfile 文件。它是一个文本文件,用来配置 image。Docker 根据 该文件生成二进制的 image 文件。
|
||||
|
||||
下面通过一个实例,演示如何编写 Dockerfile 文件。
|
||||
|
||||
准备一个Dockerfile 文件,文件内容如下(只有三行):
|
||||
|
||||
内容解释:
|
||||
|
||||
FROM alpine:latest 我们创造的新镜像依赖的基础镜像
|
||||
MAINTAINER cs 没有特殊的功能,就是标注作者是cs
|
||||
CMD echo 'hello docker' 运行一个命令
|
||||
|
||||
创建一个目录 d1
|
||||
|
||||
创建Dockerfile文件
|
||||
|
||||
```null
|
||||
touch Dockerfile
|
||||
```
|
||||
|
||||
这里文件名称,约定成俗的是Dockerfile,也可以用其他名字,但是不建议
|
||||
|
||||
编辑文件:
|
||||
|
||||
```null
|
||||
vim Dockerfile
|
||||
```
|
||||
|
||||
### 11.1用docker命令构建新的image
|
||||
|
||||
```null
|
||||
docker build -t hello_docker .
|
||||
```
|
||||
|
||||
命令解释:
|
||||
|
||||
\-t 打标签,标签名称为hell\_docker
|
||||
|
||||
. 点是路径名,将路径内所有的文件都打包进image
|
||||
|
||||
构建成功后,查看我们刚刚创建的image
|
||||
|
||||
```null
|
||||
docker images hello_docker
|
||||
```
|
||||
|
||||

|
||||
|
||||
运行我们的image
|
||||
|
||||
```null
|
||||
docker run hello_docker
|
||||
```
|
||||
|
||||
### 11.2 第二个Dockerfile
|
||||
|
||||
Dockerfile 文件内容:
|
||||
|
||||
```null
|
||||
RUN sed -i 's/archive.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.listRUN apt-get install -y nginxCOPY index.html /var/www/htmlENTRYPOINT ["/usr/sbin/nginx","-g","daemon off;"]
|
||||
```
|
||||
|
||||
FROM ubuntu 基础镜像ubuntu
|
||||
MAINTAINER cs 创作者
|
||||
|
||||
RUN sed -i 's/archive.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
|
||||
|
||||
使用国内镜像,快一点
|
||||
|
||||
|
||||
RUN apt-get update 更新ubuntu的程序库
|
||||
RUN apt-get install -y nginx 安装nginx
|
||||
COPY index.html /var/www/html 拷贝本地index.htm文件到容器 /var/www/html 路径下
|
||||
ENTRYPOINT \["/usr/sbin/nginx","-g","daemon off;"\] 给出一个容器的入口,将nginx作为一个前台程序进行
|
||||
EXPOSE 80 端口号
|
||||
|
||||
```null
|
||||
|
||||
```
|
||||
|
||||
创建index.html
|
||||
|
||||
```null
|
||||
在dockerfiler2目录下,创建index.html文件
|
||||
```
|
||||
|
||||
index.html随便输入一个行内容 大家好
|
||||
|
||||
开始构建
|
||||
|
||||
```null
|
||||
docker build -t cs/hello-nginx .
|
||||
```
|
||||
|
||||
运行刚刚创建的image
|
||||
|
||||
```null
|
||||
docker run -d -p 83:80 cs/hello-nginx
|
||||
```
|
||||
|
||||
\-d 作为守护进程
|
||||
|
||||
\-p 83:80 映射到本地83端口
|
||||
|
||||
访问一下刚刚的容器
|
||||
|
||||
```null
|
||||
a58@58deMacBook-Pro-2 dockerfiler2 % curl http://localhost:83
|
||||
```
|
||||
|
||||
### 11.3Dockerfile语法
|
||||
|
||||
| 命令 | 用途 |
|
||||
| FROM | base image |
|
||||
| RUN | 在容器内执行命令 |
|
||||
| ADD | 往容器内添加文件(可以添加远程文件) |
|
||||
| COPY | 往容器内拷贝文件 |
|
||||
| CMD | 给容器添加一个执行入口 |
|
||||
| EXPOSE | 暴露端口 |
|
||||
| WORKDIR | 指定运行命令的路径 |
|
||||
| MAINTAINER | 维护者 |
|
||||
| ENV | 给容器里面环境设定变量 |
|
||||
| ENTRYOINIT | 设定容器入口 |
|
||||
| USER | 指定执行该命令的用户 |
|
||||
| VOLUME | |
|
||||
|
||||
十二、实例:制作自己的 Docker 容器
|
||||
---------------------
|
||||
|
||||
下面我以 [koa-demos](https://www.ruanyifeng.com/blog/2017/08/koa.html "koa-demos") 项目为例,介绍怎么写 Dockerfile 文件,实现让用户在 Docker 容器里面运行 Koa 框架。
|
||||
|
||||
作为准备工作,请先[下载源码](https://github.com/ruanyf/koa-demos/archive/master.zip "下载源码")。
|
||||
|
||||
```null
|
||||
git clone https://github.com/ruanyf/koa-demos.git
|
||||
```
|
||||
|
||||
### 12.1 编写 Dockerfile 文件
|
||||
|
||||
首先,在项目的根目录下,新建一个文本文件`.dockerignore`,写入下面的[内容](https://github.com/ruanyf/koa-demos/blob/master/.dockerignore "内容")。
|
||||
|
||||
上面代码表示,这三个路径要排除,不要打包进入 image 文件。如果你没有路径要排除,这个文件可以不新建。
|
||||
|
||||
然后,在项目的根目录下,新建一个文本文件 Dockerfile,写入下面的[内容](https://github.com/ruanyf/koa-demos/blob/master/Dockerfile "内容")。
|
||||
|
||||
```null
|
||||
RUN npm install --registry=https://registry.npm.taobao.org
|
||||
```
|
||||
|
||||
上面代码一共五行,含义如下。
|
||||
|
||||
```null
|
||||
FROM node:8.4:该 image 文件继承官方的 node image,冒号表示标签,这里标签是8.4,即8.4版本的 node。COPY . /app:将当前目录下的所有文件(除了.dockerignore排除的路径),都拷贝进入 image 文件的/app目录。WORKDIR /app:指定接下来的工作路径为/app。RUN npm install:在/app目录下,运行npm install命令安装依赖。注意,安装后所有的依赖,都将打包进入 image 文件。EXPOSE 3000:将容器 3000 端口暴露出来, 允许外部连接这个端口。
|
||||
```
|
||||
|
||||
#### 12.2 创建 image 文件
|
||||
|
||||
有了 Dockerfile 文件以后,就可以使用`docker image build`命令创建 image 文件了
|
||||
|
||||
> ```null
|
||||
> $ docker image build -t koa-demo .$ docker image build -t koa-demo:0.0.1 .
|
||||
> ```
|
||||
|
||||

|
||||
|
||||
上面代码中,`-t`参数用来指定 image 文件的名字,后面还可以用冒号指定标签。如果不指定,默认的标签就是`latest`。最后的那个点表示 Dockerfile 文件所在的路径,上例是当前路径,所以是一个点。
|
||||
|
||||
如果运行成功,就可以看到新生成的 image 文件`koa-demo`了。
|
||||
|
||||
```null
|
||||
docker images
|
||||
```
|
||||
|
||||
```null
|
||||
a58@58deMacBook-Pro-2 koa-demos % docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEkoa-demo latest 1dc92a9cbdb2 13 seconds ago 676MBdocker/getting-started latest adfdb308d623 3 weeks ago 27.4MB
|
||||
```
|
||||
|
||||
### 12.3 生成容器
|
||||
|
||||
`docker container run`命令会从 image 文件生成容器。
|
||||
|
||||
> ```null
|
||||
> $ docker container run -p 8000:3000 -it koa-demo /bin/bash$ docker container run -p 8000:3000 -it koa-demo:0.0.1 /bin/bash
|
||||
> ```
|
||||
|
||||
上面命令的各个参数含义如下:
|
||||
|
||||
* `-p`参数:容器的 3000 端口映射到本机的 8000 端口。
|
||||
* `-it`参数:容器的 Shell 映射到当前的 Shell,然后你在本机窗口输入的命令,就会传入容器。
|
||||
* `koa-demo:0.0.1`:image 文件的名字(如果有标签,还需要提供标签,默认是 latest 标签)。
|
||||
* `/bin/bash`:容器启动以后,内部第一个执行的命令。这里是启动 Bash,保证用户可以使用 Shell。
|
||||
|
||||
如果一切正常,运行上面的命令以后,就会返回一个命令行提示符。
|
||||
|
||||
这表示你已经在容器里面了,返回的提示符就是容器内部的 Shell 提示符。执行下面的命令。
|
||||
|
||||
> ```null
|
||||
> root@66d80f4aaf1e:/app# node demos/01.js
|
||||
> ```
|
||||
|
||||
这时,Koa 框架已经运行起来了。打开本机的浏览器,访问 http://127.0.0.1:8000,网页显示"Not Found",这是因为这个 [demo](https://github.com/ruanyf/koa-demos/blob/master/demos/01.js "demo") 没有写路由。
|
||||
|
||||
这个例子中,Node 进程运行在 Docker 容器的虚拟环境里面,进程接触到的文件系统和网络接口都是虚拟的,与本机的文件系统和网络接口是隔离的,因此需要定义容器与物理机的端口映射(map)。
|
||||
|
||||
现在,在容器的命令行,按下 Ctrl + c 停止 Node 进程,然后按下 Ctrl + d (或者输入 exit)退出容器。此外,也可以用`docker container kill`终止容器运行。
|
||||
|
||||
> ```null
|
||||
> $ docker container kill [containerID]
|
||||
> ```
|
||||
|
||||
容器停止运行之后,并不会消失,用下面的命令删除容器文件。
|
||||
|
||||
> ```null
|
||||
> $ docker container ls --all$ docker container rm [containerID]
|
||||
> ```
|
||||
|
||||
也可以使用`docker container run`命令的`--rm`参数,在容器终止运行后自动删除容器文件。
|
||||
|
||||
> ```null
|
||||
> $ docker container run --rm -p 8000:3000 -it koa-demo /bin/bash
|
||||
> ```
|
||||
|
||||
#### 12.4 CMD 命令
|
||||
|
||||
上一节的例子里面,容器启动以后,需要手动输入命令`node demos/01.js`。我们可以把这个命令写在 Dockerfile 里面,这样容器启动以后,这个命令就已经执行了,不用再手动输入了。
|
||||
|
||||
> ```null
|
||||
> RUN npm install --registry=https://registry.npm.taobao.org
|
||||
> ```
|
||||
|
||||
上面的 Dockerfile 里面,多了最后一行`CMD node demos/01.js`,它表示容器启动后自动执行`node demos/01.js`。
|
||||
|
||||
你可能会问,`RUN`命令与`CMD`命令的区别在哪里?简单说,`RUN`命令在 image 文件的构建阶段执行,执行结果都会打包进入 image 文件;`CMD`命令则是在容器启动后执行。另外,一个 Dockerfile 可以包含多个`RUN`命令,但是只能有一个`CMD`命令。
|
||||
|
||||
注意,指定了`CMD`命令以后,`docker container run`命令就不能附加命令了(比如前面的`/bin/bash`),否则它会覆盖`CMD`命令。现在,启动容器可以使用下面的命令。
|
||||
|
||||
> ```null
|
||||
> $ docker container run --rm -p 8000:3000 -it koa-demo:0.0.1
|
||||
> ```
|
||||
|
||||
#### 12.5 发布 image 文件
|
||||
|
||||
容器运行成功后,就确认了 image 文件的有效性。这时,我们就可以考虑把 image 文件分享到网上,让其他人使用。
|
||||
|
||||
首先,去 [hub.docker.com](https://hub.docker.com/ "hub.docker.com") 或 [cloud.docker.com](https://cloud.docker.com/ "cloud.docker.com") 注册一个账户。然后,用下面的命令登录。
|
||||
|
||||
接着,为本地的 image 标注用户名和版本。
|
||||
|
||||
> ```null
|
||||
> $ docker image tag [imageName] [username]/[repository]:[tag]$ docker image tag koa-demos:0.0.1 ruanyf/koa-demos:0.0.1
|
||||
> ```
|
||||
|
||||
也可以不标注用户名,重新构建一下 image 文件。
|
||||
|
||||
> ```null
|
||||
> $ docker image build -t [username]/[repository]:[tag] .
|
||||
> ```
|
||||
|
||||
最后,发布 image 文件。
|
||||
|
||||
> ```null
|
||||
> $ docker image push [username]/[repository]:[tag]
|
||||
> ```
|
||||
|
||||
发布成功以后,登录 hub.docker.com,就可以看到已经发布的 image 文件。
|
||||
|
||||
十四、其他有用的命令
|
||||
----------
|
||||
|
||||
docker 的主要用法就是上面这些,此外还有几个命令,也非常有用。
|
||||
|
||||
**(1)docker container start**
|
||||
|
||||
前面的`docker container run`命令是新建容器,每运行一次,就会新建一个容器。同样的命令运行两次,就会生成两个一模一样的容器文件。如果希望重复使用容器,就要使用`docker container start`命令,它用来启动已经生成、已经停止运行的容器文件。
|
||||
|
||||
> ```null
|
||||
> $ docker container start [containerID]
|
||||
> ```
|
||||
|
||||
**(2)docker container stop**
|
||||
|
||||
前面的`docker container kill`命令终止容器运行,相当于向容器里面的主进程发出 SIGKILL 信号。而`docker container stop`命令也是用来终止容器运行,相当于向容器里面的主进程发出 SIGTERM 信号,然后过一段时间再发出 SIGKILL 信号。
|
||||
|
||||
> ```null
|
||||
> $ docker container stop [containerID]
|
||||
> ```
|
||||
|
||||
这两个信号的差别是,应用程序收到 SIGTERM 信号以后,可以自行进行收尾清理工作,但也可以不理会这个信号。如果收到 SIGKILL 信号,就会强行立即终止,那些正在进行中的操作会全部丢失。
|
||||
|
||||
**(3)docker container logs**
|
||||
|
||||
`docker container logs`命令用来查看 docker 容器的输出,即容器里面 Shell 的标准输出。如果`docker run`命令运行容器的时候,没有使用`-it`参数,就要用这个命令查看输出。
|
||||
|
||||
> ```null
|
||||
> $ docker container logs [containerID]
|
||||
> ```
|
||||
|
||||
**(4)docker container exec**
|
||||
|
||||
`docker container exec`命令用于进入一个正在运行的 docker 容器。如果`docker run`命令运行容器的时候,没有使用`-it`参数,就要用这个命令进入容器。一旦进入了容器,就可以在容器的 Shell 执行命令了。
|
||||
|
||||
> ```null
|
||||
> $ docker container exec -it [containerID] /bin/bash
|
||||
> ```
|
||||
|
||||
**(5)docker container cp**
|
||||
|
||||
`docker container cp`命令用于从正在运行的 Docker 容器里面,将文件拷贝到本机。下面是拷贝到当前目录的写法。
|
||||
|
||||
> ```null
|
||||
> $ docker container cp [containID]:[/path/to/file] .
|
||||
> ```
|
||||
|
||||
十五、镜像分层
|
||||
-------
|
||||
|
||||
镜像是分层被存储的,而不是作为整个文件被存储的。
|
||||
|
||||
Dockerfile中的每一行都产生一个新增
|
||||
|
||||

|
||||
|
||||
已经存在image里面的层,是只读的
|
||||
|
||||

|
||||
|
||||
当image被容器运行,会产生一个新层 容器层container layer ,这一层是可读可写的。
|
||||
|
||||
**分层的好处:**
|
||||
|
||||
A image 有10层,B image有7层,其中5层是共享的,节省了空间。
|
||||
|
||||
十六、Volume docker的存储技术
|
||||
----------------------
|
||||
|
||||
提供**独立**于容器之外的**持久化**存储
|
||||
|
||||
在容器中的改动,是不会被保存的。Volume提供了一个比较方便的,持久化的。
|
||||
|
||||
比如运行一个数据库容器的操作,数据库的数据应该是被持久化的。Volume就可以做这些,并且可以提供给容器之间的共享数据。
|
||||
|
||||
### 16.1 Volume
|
||||
|
||||
Volume
|
||||
|
||||
方式一 通过-v命令
|
||||
|
||||
```null
|
||||
docker run -d --name nginx -v /usr/share/nginx/html nginx
|
||||
```
|
||||
|
||||
\--name nginx 给他命名为nginx
|
||||
|
||||
查看容器的所有信息
|
||||
|
||||
```null
|
||||
docker inspect nginx
|
||||
```
|
||||
|
||||

|
||||
|
||||
宿主机的这个路径 "Source": "/var/lib/....挂载到了 容器的内部这个地址/usr/share/nginx/html
|
||||
|
||||
在终端查看 “/var/lib/docker/volumes/7597264b02449c89e469f00198fa48a803883a7c6cf403c97e005a5d747c3326/\_data’ 这个地址
|
||||
|
||||
```null
|
||||
ls /var/lib/docker/volumes/7597264b02449c89e469f00198fa48a803883a7c6cf403c97e005a5d747c3326/_data
|
||||
```
|
||||
|
||||
提示No such file or directory,
|
||||
|
||||
参考博客:
|
||||
|
||||
[mac docker配置镜像的方式\_峰会路转的博客-CSDN博客\_docker mac 设置镜像](https://blog.csdn.net/qq_27702739/article/details/107707689 "mac docker配置镜像的方式_峰会路转的博客-CSDN博客_docker mac 设置镜像")
|
||||
|
||||
[Mac 下如何切换 Docker 容器镜像?(更改阿里镜像)\_hedeqiang-CSDN博客](https://blog.csdn.net/hedeqiang9436/article/details/106498597 "Mac 下如何切换 Docker 容器镜像?(更改阿里镜像)_hedeqiang-CSDN博客")
|
||||
|
||||
[Docker 入门教程 - 阮一峰的网络日志](https://www.ruanyifeng.com/blog/2018/02/docker-tutorial.html "Docker 入门教程 - 阮一峰的网络日志")
|
||||
+85
@@ -0,0 +1,85 @@
|
||||
---
|
||||
created: 2025-08-30T11:45
|
||||
updated: 2025-09-22T13:27
|
||||
---
|
||||

|
||||
|
||||
曾梦想执剑走天涯,我是程序猿【AK】
|
||||
|
||||
`提示:添加投票!!!`
|
||||
|
||||
简述概要
|
||||
----
|
||||
|
||||
如何在Docker中,修改已经挂载的卷(Volume)
|
||||
|
||||
知识图谱
|
||||
----
|
||||
|
||||
在Docker中,修改已经挂载的卷(Volume)的挂载路径通常涉及到两个主要步骤:停止容器和修改容器的配置。以下是详细的过程:
|
||||
|
||||
1. **停止容器**:
|
||||
|
||||
* 使用 `docker stop` 命令停止你想要修改挂载路径的容器。例如:
|
||||
|
||||
```bash
|
||||
docker stop <container_name_or_id>
|
||||
|
||||
```
|
||||
|
||||
2. **修改容器配置**:
|
||||
|
||||
* Docker容器的配置文件位于 `/var/lib/docker/containers/<container_id>/` 目录下。你需要找到对应的容器ID,然后进入该目录。
|
||||
* 在容器的目录下,你会找到 `config.v2.json` 和 `hostconfig.json` 文件。这两个文件包含了容器的配置信息,包括挂载卷的信息。
|
||||
* 你需要编辑 `hostconfig.json` 文件,找到 `"Binds"` 或 `"Mounts"` 部分(取决于Docker版本),然后修改挂载路径。例如,将 `"/old/path:/container/path"` 改为 `"/new/path:/container/path"`。
|
||||
* 确保在编辑文件时保持JSON格式的正确性。
|
||||
3. **重启容器**:
|
||||
|
||||
* 修改配置文件后,重启容器以应用新的挂载路径。使用 `docker start` 命令启动容器:
|
||||
|
||||
```bash
|
||||
docker start <container_name_or_id>
|
||||
|
||||
```
|
||||
|
||||
4. **验证挂载路径**:
|
||||
|
||||
* 使用 `docker inspect` 命令来验证挂载路径是否已经更新:
|
||||
|
||||
```bash
|
||||
docker inspect <container_name_or_id>
|
||||
|
||||
```
|
||||
|
||||
* 查看输出中的 `"Mounts"` 部分,确认挂载路径已经更改。
|
||||
|
||||
请注意,直接修改Docker容器的配置文件并不是官方推荐的做法,因为这可能会导致数据丢失或其他问题。更安全的方法是在创建容器时就指定正确的挂载路径。如果你需要更改挂载路径,最好是创建一个新的容器,并在创建时指定新的路径。
|
||||
|
||||
在某些情况下,如果你只是想更改Docker的默认存储路径(例如,将所有容器和镜像的存储路径从 `/var/lib/docker` 更改到其他位置),你可以在Docker的配置文件中设置 `graph` 选项,或者在Docker的守护进程配置文件中设置 `--graph` 参数。这通常在 `/etc/docker/daemon.json` 文件中设置,或者在 `/etc/docker/docker.conf` 文件中(取决于你的Docker版本和操作系统)。例如:
|
||||
|
||||
```json
|
||||
{
|
||||
|
||||
|
||||
"graph": "/path/to/new/directory"
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
在修改配置文件后,你需要重启Docker服务以使更改生效。在Linux上,你可以使用以下命令:
|
||||
|
||||
```bash
|
||||
sudo systemctl restart docker
|
||||
|
||||
```
|
||||
|
||||
或者在某些系统中,你可能需要使用 `service` 命令:
|
||||
|
||||
```bash
|
||||
sudo service docker restart
|
||||
|
||||
```
|
||||
|
||||
请确保在进行这些更改之前备份你的数据,以防万一出现问题。
|
||||
|
||||

|
||||
@@ -0,0 +1,29 @@
|
||||
|
||||
- Gis
|
||||
软件:google earth pro、gpxSee、QGIS、ArcGIS
|
||||
OB插件:chinese map view/map-view、leaflet
|
||||
https://www.lddgo.net/convert/position
|
||||
https://www.mapchaxun.cn/Regeo/
|
||||
https://jingweidu.bmcx.com/
|
||||
https://qgis.org/
|
||||
https://zhuanlan.zhihu.com/p/265023839
|
||||
https://github.com/tmcw/awesome-geojson
|
||||
|
||||
|
||||
教程:
|
||||
https://zhuanlan.zhihu.com/p/1956993404236969144
|
||||
https://www.bilibili.com/opus/1035446259233587200
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
gpxSee可以打开geojson文件
|
||||
含map-view插件的md文件转换html后,插件显示错误!
|
||||
考虑:将md文件转换成html,其中的geo等插件能正常运行!
|
||||
|
||||
|
||||
|
||||
geojson与gpx可以相互转换
|
||||
https://products.groupdocs.app/zh/conversion/geojson-to-gpx
|
||||
https://glandnav.com/zh/tools/geojson-to-gpx
|
||||
@@ -0,0 +1,64 @@
|
||||
|
||||
## [群晖 sudo 免密码配置](https://blog.csdn.net/e891377/article/details/132848703)
|
||||
https://blog.csdn.net/e891377/article/details/132848703
|
||||
https://www.cnblogs.com/ourener/p/19067474
|
||||
|
||||
在群晖 NAS 上配置 **sudo 免密码**,可以避免每次执行需要管理员权限的命令时输入密码,从而提升运维效率。以下步骤基于 SSH 登录和 _sudoers_ 配置完成。
|
||||
|
||||
步骤 1:开启 SSH 并获取 root 权限
|
||||
|
||||
- 登录群晖 **控制面板 → 终端机和 SNMP**,勾选 **启动 SSH 功能**。
|
||||
|
||||
- 使用 SSH 工具(如 FinalShell、PuTTY)连接群晖:
|
||||
ssh 用户名@群晖IP
|
||||

|
||||
|
||||
- 切换到 root:
|
||||
|
||||
|
||||
sudo -i
|
||||

|
||||
|
||||
步骤 2:编辑 sudoers 文件
|
||||
|
||||
- 打开 _sudoers_ 配置:
|
||||
visudo
|
||||

|
||||
|
||||
- 在文件末尾添加:
|
||||
用户名 ALL=(ALL) NOPASSWD: ALL
|
||||

|
||||
步骤 3:保存并退出
|
||||
- 在 _visudo_ 中按 **ESC** → 输入 _:wq_ 保存退出。
|
||||
步骤 4:验证免密码效果
|
||||
|
||||
执行:
|
||||
sudo ls /root
|
||||

|
||||
如果不再提示输入密码,则配置成功。
|
||||
|
||||
💡 **最佳实践与注意事项**
|
||||
|
||||
- 建议结合 **SSH 公钥免密登录**,进一步减少输入密码的次数。
|
||||
- 修改 _/etc/ssh/sshd_config_ 确保启用:
|
||||
|
||||
RSAAuthentication yes
|
||||
PubkeyAuthentication yes
|
||||
AuthorizedKeysFile .ssh/authorized_keys
|
||||

|
||||
|
||||
- 权限必须正确,否则免密无效:
|
||||
chmod 700 ~/.ssh
|
||||
chmod 600 ~/.ssh/authorized_keys
|
||||

|
||||
|
||||
- 出于安全考虑,仅对可信用户开启 _NOPASSWD_,并限制外网访问 SSH。
|
||||
|
||||
这样配置后,你在群晖上执行 _sudo_ 命令将无需输入密码,同时配合 SSH 公钥可实现全程免密管理。
|
||||
|
||||
验证:
|
||||
使用某个用户登录后输入:
|
||||
sudo -n true
|
||||
没有提示就成功了,是:sudo: a password is required 没有成功
|
||||
|
||||
https://zhuanlan.zhihu.com/p/632737024
|
||||
Executable
+80
@@ -0,0 +1,80 @@
|
||||
---
|
||||
created: 2025-07-15T07:20
|
||||
updated: 2025-08-30T11:45
|
||||
---
|
||||
|
||||
## 1. Self-hosted LiveSync
|
||||
|
||||
- 参考文档
|
||||
官网 :https://github.com/vrtmrz/obsidian-livesync/blob/main/README_cn.md
|
||||
|
||||
## 2.Translaste
|
||||
不支持自我搭建的API对接
|
||||
|
||||
|
||||
## 3. Memos-AI-Sync
|
||||
|
||||
通过Ollama可以调用DeepSeek模型
|
||||
|
||||
## 4.we-mp-rss
|
||||
|
||||
## 5. Clipper
|
||||
## 6. Readwise
|
||||
|
||||
|
||||
http://himan.picp.net:8001
|
||||
admin/Mayi19b8
|
||||
暂未调试WebHook
|
||||
|
||||
## 7.mermaid
|
||||
|
||||
- 甘特图
|
||||
https://github.com/huterguier/obsidian-mehrmaid
|
||||
|
||||
https://github.com/dartungar/obsidian-mermaid
|
||||
|
||||
|
||||
## 8.时间轴
|
||||
|
||||
https://github.com/seanlowe/obsidian-timelines
|
||||
https://github.com/George-debug/obsidian-timeline/tree/master/src/style/snippet
|
||||
https://post.smzdm.com/p/a0xerdd8/
|
||||
https://github.com/Shanshuimei/obsidian-generate-timeline?tab=readme-ov-file
|
||||
https://kivgf4fnsy5.feishu.cn/docx/NDLBd4lpUoI9gCxFuT1clsD7nmG
|
||||
|
||||
## 9. obsidian-md发布工具
|
||||
https://github.com/frontend-engineering/Invio
|
||||
https://ababtools.com/?post=1569
|
||||
https://github.com/songxingguo/obsidian-note-publish
|
||||
https://zhuanlan.zhihu.com/p/1910670352276763440
|
||||
https://notes.oldwinter.top/obsidian-%E7%9B%AE%E5%89%8D%E6%9C%80%E5%AE%8C%E7%BE%8E%E7%9A%84%E5%85%8D%E8%B4%B9%E5%8F%91%E5%B8%83%E6%96%B9%E6%A1%88-%E6%B8%90%E8%BF%9B%E5%BC%8F%E6%95%99%E7%A8%8B
|
||||
|
||||
Note.sx netlify 飞书 语雀 mp 数字花园
|
||||
share note
|
||||
noteshare
|
||||
note to mp
|
||||
md2quartz.pro
|
||||
https://www.md2wechat.cn/
|
||||
|
||||
10.计算器
|
||||
|
||||
<font color="#00b050">Meld Calc</font>
|
||||
Numerals
|
||||
<font color="#00b050">Calculite</font>
|
||||
|
||||
https://github.com/5anthosh/fcal
|
||||
|
||||
# 10. OB学习资源
|
||||
|
||||
https://zhuanlan.zhihu.com/p/619960525
|
||||
|
||||
# 11.思维导图
|
||||
mindmap/enhancing mindmap/smm mindmap/mxmind/mindmap nextgen/lovely mindmap(配合白板)
|
||||
目前只打开了enhancing mindmap+smm mindmap
|
||||
https://www.bilibili.com/video/BV1e4421D7Ec/?vd_source=5b569287589b7d792efbc98bede5d260
|
||||
|
||||
|
||||
|
||||
# 参考链接
|
||||
https://garden.oldwinter.top/%F0%9F%8D%80-%E8%8A%B1%E5%9B%AD%E5%AF%BC%E8%A7%88/%F0%9F%A7%B0-%E6%9C%AC%E5%BA%93%E6%8C%87%E5%8D%97/obsidian/obsidian%E7%9B%B8%E5%85%B3%E7%AC%94%E8%AE%B0/%E5%86%99%E7%BB%99%E5%A4%A7%E5%AE%B6%E7%9A%842025-obsidian%E6%8F%92%E4%BB%B6%E6%8E%A8%E8%8D%90%E6%8C%87%E5%8D%97
|
||||
https://zhuanlan.zhihu.com/p/1914284536906363586
|
||||
Executable
+240
@@ -0,0 +1,240 @@
|
||||
---
|
||||
created: 2025-08-31T10:26
|
||||
updated: 2025-08-31T10:47
|
||||
---
|
||||
以下是 **OnlyOffice Docs** 的 Docker 安装教程(社区版),支持文档在线编辑和协作:
|
||||
|
||||
---
|
||||
|
||||
### **1. 环境准备**
|
||||
- **系统要求**:Linux/Windows/macOS(推荐 Linux)
|
||||
- **Docker**:已安装 [Docker Engine](https://docs.docker.com/engine/install/) 和 [Docker Compose](https://docs.docker.com/compose/install/)
|
||||
- **端口开放**:确保 `80`、`443`(或自定义端口)未被占用
|
||||
|
||||
---
|
||||
|
||||
### **2. 快速安装(单容器)**
|
||||
#### **命令部署**
|
||||
```bash
|
||||
docker run -i -t -d -p 8080:80 --restart=always \
|
||||
-e JWT_ENABLED=false \ # 禁用JWT验证(测试用)
|
||||
-e JWT_SECRET=mysecretkey \ # 自定义JWT密钥(生产环境必设)
|
||||
--name onlyoffice-docs \
|
||||
onlyoffice/documentserver
|
||||
```
|
||||
> **参数说明**:
|
||||
> - `-p 8080:80`:将容器80端口映射到主机8080
|
||||
> - `JWT_ENABLED=false`:关闭API验证(仅测试环境使用)
|
||||
> - `JWT_SECRET`:生产环境必须设置复杂密钥
|
||||
|
||||
---
|
||||
|
||||
### **3. 生产环境推荐(Docker Compose)**
|
||||
创建 `docker-compose.yml` 文件:
|
||||
```yaml
|
||||
version: '3'
|
||||
services:
|
||||
onlyoffice:
|
||||
image: onlyoffice/documentserver
|
||||
container_name: onlyoffice
|
||||
restart: always
|
||||
ports:
|
||||
- "443:443"
|
||||
volumes:
|
||||
- ./onlyoffice/data:/var/www/onlyoffice/Data # 数据持久化
|
||||
- ./onlyoffice/logs:/var/log/onlyoffice # 日志持久化
|
||||
environment:
|
||||
- JWT_SECRET=your_strong_password_here
|
||||
```
|
||||
|
||||
启动服务:
|
||||
```bash
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### **4. 验证安装**
|
||||
1. 访问 `http://服务器IP:8080`(或HTTPS端口)
|
||||
2. 出现 **"ONLYOFFICE Docs is running"** 即成功
|
||||
3. 测试文档编辑:点击页面中的 **"Create New"** 按钮
|
||||
|
||||
---
|
||||
|
||||
### **5. 配置Nginx反向代理(可选)**
|
||||
```nginx
|
||||
server {
|
||||
listen 80;
|
||||
server_name office.yourdomain.com;
|
||||
|
||||
location / {
|
||||
proxy_pass http://localhost:8080;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
}
|
||||
}
|
||||
```
|
||||
> 建议配置HTTPS证书(Let's Encrypt)
|
||||
|
||||
---
|
||||
|
||||
### **6. 常见问题**
|
||||
| 问题 | 解决方案 |
|
||||
|------|----------|
|
||||
| 启动失败 | 检查端口冲突:`netstat -tulnp \| grep 8080` |
|
||||
| 文档无法保存 | 确保 `/var/www/onlyoffice/Data` 目录有写入权限 |
|
||||
| 连接超时 | 防火墙放行端口:`sudo ufw allow 8080` |
|
||||
|
||||
---
|
||||
|
||||
### **7. 集成到Nextcloud/OwnCloud**
|
||||
在Nextcloud设置中:
|
||||
1. 安装 **"ONLYOFFICE"** 插件
|
||||
2. 填写地址:`http://your-office-server:8080`
|
||||
3. 输入 `JWT_SECRET`(需与Docker环境变量一致)
|
||||
|
||||
---
|
||||
|
||||
### **8. 升级/卸载**
|
||||
- **升级**:`docker pull onlyoffice/documentserver` 后重启容器
|
||||
- **卸载**:`docker rm -f onlyoffice-docs` + 删除挂载卷
|
||||
|
||||
---
|
||||
|
||||
如果需要更详细的配置(如MySQL存储、集群部署),可以参考官方文档:
|
||||
[ONLYOFFICE Docker Documentation](https://helpcenter.onlyoffice.com/installation/docs-community-install-docker.aspx)
|
||||
|
||||
建议将配置保存为笔记:
|
||||
```markdown
|
||||
# [[OnlyOffice部署记录]]
|
||||
- 安装时间:<% tp.date.now("YYYY-MM-DD") %>
|
||||
- 访问地址:http://your-server-ip:8080
|
||||
- JWT密钥:||加密存储||
|
||||
```
|
||||
|
||||
|
||||
【第二次结果】
|
||||
|
||||
以下是 **ONLYOFFICE Docs Docker 安装教程**(最新社区版),包含常见问题解决方案:
|
||||
|
||||
---
|
||||
|
||||
### **1. 基础安装**
|
||||
#### 最低系统要求
|
||||
- 2核CPU / 4GB内存 / 20GB硬盘
|
||||
- Docker Engine 20.10+ 和 Docker Compose
|
||||
|
||||
#### 快速启动命令
|
||||
```bash
|
||||
docker run -i -t -d -p 8080:80 --restart=always \
|
||||
-v /app/onlyoffice/DocumentServer/logs:/var/log/onlyoffice \
|
||||
-v /app/onlyoffice/DocumentServer/data:/var/www/onlyoffice/Data \
|
||||
-v /app/onlyoffice/DocumentServer/lib:/var/lib/onlyoffice \
|
||||
--name onlyoffice-docs \
|
||||
onlyoffice/documentserver:7.4
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### **2. 生产环境配置**
|
||||
#### docker-compose.yml 示例
|
||||
```yaml
|
||||
version: '3'
|
||||
services:
|
||||
onlyoffice:
|
||||
image: onlyoffice/documentserver:7.4
|
||||
container_name: onlyoffice
|
||||
restart: always
|
||||
ports:
|
||||
- "8443:443"
|
||||
volumes:
|
||||
- ./data:/var/www/onlyoffice/Data
|
||||
- ./logs:/var/log/onlyoffice
|
||||
- ./lib:/var/lib/onlyoffice
|
||||
environment:
|
||||
- JWT_ENABLED=true
|
||||
- JWT_SECRET=your_strong_password
|
||||
```
|
||||
|
||||
#### 关键参数说明
|
||||
| 参数 | 作用 | 示例值 |
|
||||
|------|------|--------|
|
||||
| `JWT_ENABLED` | 启用API安全验证 | `true` |
|
||||
| `JWT_SECRET` | 签名密钥(至少16字符) | `MySuperSecretKey123!` |
|
||||
| `DB_TYPE` | 数据库类型(默认SQLite) | `postgres` |
|
||||
|
||||
---
|
||||
|
||||
### **3. 初始化配置**
|
||||
1. **访问控制台**
|
||||
安装完成后访问:
|
||||
`http://服务器IP:8080/welcome/`
|
||||
(HTTPS需配置SSL证书)
|
||||
|
||||
2. **验证服务状态**
|
||||
```bash
|
||||
docker exec onlyoffice-docs supervisorctl status
|
||||
```
|
||||
正常应显示:
|
||||
`docservice: RUNNING`
|
||||
`converter: RUNNING`
|
||||
`proxy: RUNNING`
|
||||
|
||||
---
|
||||
|
||||
### **4. 常见问题解决**
|
||||
#### 🔴 端口冲突
|
||||
错误表现:
|
||||
`Address already in use`
|
||||
解决方案:
|
||||
```bash
|
||||
# 查看占用进程
|
||||
sudo lsof -i :8080
|
||||
# 修改映射端口(如改为8090)
|
||||
docker run ... -p 8090:80 ...
|
||||
```
|
||||
|
||||
#### 🟡 字体缺失
|
||||
中文显示异常时:
|
||||
```bash
|
||||
# 进入容器安装字体
|
||||
docker exec -it onlyoffice-docs bash
|
||||
apt update && apt install -y fonts-wqy-microhei
|
||||
```
|
||||
|
||||
#### 🟢 性能优化
|
||||
```yaml
|
||||
# 在docker-compose.yml中添加资源限制
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
cpus: '2'
|
||||
memory: 4G
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### **5. 进阶功能**
|
||||
#### 集成Nextcloud/OwnCloud
|
||||
1. 安装ONLYOFFICE插件
|
||||
2. 配置连接地址:
|
||||
`https://your-server:8080/web-apps/apps/api/documents/api.js`
|
||||
|
||||
#### 备份策略
|
||||
```bash
|
||||
# 定期备份数据卷
|
||||
tar -czvf onlyoffice_backup_$(date +%F).tar.gz /app/onlyoffice
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
> 💡 **提示**:
|
||||
> - 如需HTTPS访问,推荐使用Nginx反向代理+Let's Encrypt证书
|
||||
> - 企业版需替换镜像为`onlyoffice/documentserver-ee`
|
||||
|
||||
需要更详细的Nginx配置或集群部署方案吗?
|
||||
|
||||
#### Sources:
|
||||
|
||||
- [[ONLYOFFICE 协作空间 3.0 新功能详解 - 知乎]]
|
||||
- [[docker 日志清除命令 - 搜索]]
|
||||
@@ -0,0 +1,281 @@
|
||||
# Postgresql
|
||||
|
||||
- 进入postgresql
|
||||
docker ps | grep postgresql
|
||||
|
||||
docker exec -it container_id bash
|
||||
|
||||
psql -U moviepilot
|
||||
|
||||
|
||||
# Syncthing
|
||||
|
||||
Syncthing遇到权限问题,解决办法:
|
||||
https://zhuanlan.zhihu.com/p/29836885447
|
||||
https://www.orcy.net.cn/1636.html
|
||||
|
||||
# airconnect
|
||||
|
||||
```
|
||||
services:
|
||||
airconnect:
|
||||
network_mode: host
|
||||
image: 1activegeek/airconnect
|
||||
```
|
||||
|
||||
群晖上也有airconnect套件
|
||||
原理:提供airserver,类似airserver
|
||||
安装airconnect,就是一台airplay server,使用iPhone或者支持airplay的客户端在内网就能找到这些设备播放!
|
||||
https://github.com/philippe44/AirConnect
|
||||
https://gitcode.com/gh_mirrors/ai/AirConnect
|
||||
https://post.smzdm.com/p/awovpkgm/
|
||||
https://github.com/eizedev/AirConnect-Synology
|
||||
https://hin.cool/posts/airconnect.html
|
||||
https://sspai.com/post/65136
|
||||
|
||||
|
||||
|
||||
# Openlist
|
||||
|
||||
- 飞牛权限
|
||||
https://club.fnnas.com/forum.php?mod=viewthread&tid=34775
|
||||
|
||||
|
||||
# Openwrt
|
||||
|
||||
设置桥接方式:
|
||||
|
||||
删除或者停止WAN接口
|
||||
进入LAN设置,选静态地址->br-lan
|
||||
填写IPV4地址
|
||||
进入DHCP,勾选忽略此接口
|
||||
|
||||
将上游网线插入三个LAN之一,不能插入WAN(靠近电源)口
|
||||
无线接口只要选中网络为LAN即可,保存应用,重启路由器OK!
|
||||
|
||||
|
||||
# 网络相关
|
||||
## 本地IP
|
||||
|
||||
curl https://myip.ipip.net
|
||||
https://ddns.oray.com/checkip, https://ip.3322.net, https://4.ipw.cn, https://v4.yinghualuo.cn/bejson
|
||||
|
||||
## iftop
|
||||
|
||||
https://blog.meow.page/archives/find-which-process-eat-my-bandwidth-on-synology/
|
||||
|
||||
[[`iftop` 是一个实时网络流量监控工具,类似 `top`]]
|
||||
|
||||
|
||||
|
||||
# 数据同步迁移
|
||||
|
||||
## rsync
|
||||
群晖(Synology)与飞牛(FeiNiu,国产私有云NAS)之间**原生不支持双向实时同步**,因二者分属不同生态,无官方互通协议(如Synology的Synology Drive Server与飞牛的“飞牛云”未开放标准WebDAV/Resilio Sync/Nextcloud兼容接口)。用户常误以为启用双方的“文件同步”功能即可自动双向实时同步,实则面临:① 协议不兼容导致连接失败;② 即便通过WebDAV挂载实现单向同步,也无法触发删除、重命名等元数据的双向传播;③ 实时性依赖轮询(如每5–30分钟),非真正inotify级实时;④ 权限、硬链接、扩展属性(xattr)及AFP/SMB特殊语义丢失。此外,跨平台ACL映射缺失易引发权限混乱,而飞牛对SMB3多通道或群晖Btrfs快照的兼容性亦未验证。若强行用rsync+inotify或第三方工具(如FreeFileSync+WatchService),将牺牲原子性、断点续传与冲突自动处理能力——这正是双向实时同步落地的最大障碍。
|
||||
|
||||
- 飞牛数据备份和恢复
|
||||
停止docker服务
|
||||
卸载存储2
|
||||
lsblk -fp 查看未挂载设备ID
|
||||
只读挂载到存储空间2
|
||||
mount -t btrfs -o ro,usebackuproot,rescue=all /dev/mapper/trim_7db5153a_b22d_43bc_a516_5041e3e504f7-0 /vol2
|
||||
|
||||
如果是ext4 文件系统:
|
||||
mount -t ext4 -o ro /dev/mapper/trim_7db5153a_b22d_43bc_a516_5041e3e504f7-0 /vol2
|
||||
|
||||
|
||||
将磁盘盒接入飞牛,第一次清除磁盘,格式化成btrfs,
|
||||
nohup rsync -avz /source/path user@remote:/destination/path > rsync.log 2>&1 &
|
||||
tail -f rsync.log
|
||||
|
||||
简化:
|
||||
rsync -av --numeric-ids --delete /vol2 /vol5 &
|
||||
同一个服务器可以简化成:
|
||||
rsync -av --delete /vol2 /vol5 &
|
||||
|
||||
报错:
|
||||
rsync: [receiver] mkstemp failed: Operation not permitted (1)
|
||||
|
||||
chmod -R 700 /vol5
|
||||
mkdir -p /vol5/vol2
|
||||
chmod -R 755 /vol5/vol2
|
||||
rsync -av /vol2 /vol5
|
||||
|
||||
由于上述问题,手工在飞牛界面卸载了存储空间5,怀疑是存储空间5挂载方式问题,手工输入同样的命令,rsync没有报上述错误,然后手动将外接磁盘挂载到:
|
||||
当然先要准备:
|
||||
mkdir -p /vol4/DataBackup
|
||||
chmod -R 755 /vol4/DataBackup
|
||||
|
||||
mount -t btrfs -o rw /dev/mapper/trim_9bdcaad4_ea98_4d60_8602_7999eb18868c-0 /vol4/DataBackup
|
||||
|
||||
开始打算挂载到/vol5结果不成功,提示没有vol5这个存储空间,在飞牛界面去创建存储空间5,报没有可用的磁盘,只好采用上述办法,命令行少了:usebackuproot,rescue=all
|
||||
|
||||
|
||||
mount -t btrfs -o rw /dev/mapper/trim_9bdcaad4_ea98_4d60_8602_7999eb18868c-0 /vol4/DataBackup ✅
|
||||
|
||||
rsync -av /vol2/1000/Photos /vol4/DataBackup
|
||||
|
||||
测试OK!
|
||||
清理/vol4/DataBackup
|
||||
|
||||
|
||||
rsync -av /vol2 /vol4/DataBackup &
|
||||
|
||||
按单个目录来复制:
|
||||
rsync -av /vol2/@appconf /vol4/DataBackup/vol2
|
||||
|
||||
还是老问题!
|
||||
|
||||
???
|
||||
|
||||
为什么下面的命令可以执行?
|
||||
rsync -av /vol2 /vol3/1000/20260601 --exclude={‘all.mp4’,’config.mp4’,’115.mp4’,’pikpak.mp4’}
|
||||
|
||||
|
||||
而
|
||||
rsync -av /vol2 /vol5/
|
||||
rsync -av /vol2 /vol4/DataBackup
|
||||
|
||||
/DataBackup是mount挂载的另一个盘,= /vol5
|
||||
/vol5和/vol3、/vol4 本质上都是外接USB盘,前者不行,后2者可以?
|
||||
|
||||
网上很多这种提问,是目标目录或者目标服务器的文件系统权限不一致,可是:
|
||||
我现在的这种同步或者备份方式,都是为了保存原来的数据和权限,-a ,而且为避免跨服务器权限问题,在同一台服务器上使用不同的磁盘备份数据。
|
||||
|
||||
rsync -av /vol2/@appconf /vol4/DataBackup/vol2 ❌
|
||||
rsync -av /vol2/@appconf /vol4/1000/DataBackup ✅
|
||||
|
||||
说明和分析:
|
||||
上面 /vol2/@appconf是root:root 复制到/vol4/DataBackup root:root权限
|
||||
下面 /vol2/@appconf是root:root 复制到/vol4/1000DataBackup fnAdmin:root权限
|
||||
|
||||
使用的root用户操作,将root文件复制到root权限不行,
|
||||
将root权限复制到fnAdmin权限就可以?
|
||||
就是说root目标目录下不能保存非root权限的文件?ACL限制?!
|
||||
|
||||
|
||||
解决方案:
|
||||
|
||||
- 重启系统后先挂载新磁盘,目标盘为存储空间2,btrfs
|
||||
- 再挂载原先的磁盘(原来的存储空间2),挂载后变成存储空间5
|
||||
- 以root身份SSH到fn,创建一个脚本/root/rsync-5-2.sh
|
||||
|
||||
```
|
||||
#rsync -av /vol4/1000/Temp/vol2/1000/Photos /vol2/1000 rsync -av /vol4/1000/Temp/vol2/1000/docker /vol2/1000
|
||||
rsync -av /vol4/1000/Temp/vol2/1000/downloads /vol2/1000
|
||||
rsync -av /vol4/1000/Temp/vol2/@appcenter /vol2
|
||||
rsync -av /vol4/1000/Temp/vol2/@appconf /vol2
|
||||
rsync -av /vol4/1000/Temp/vol2/@apphome /vol2
|
||||
rsync -av /vol4/1000/Temp/vol2/@appdata /vol2
|
||||
rsync -av /vol4/1000/Temp/vol2/@appmeta /vol2
|
||||
rsync -av /vol4/1000/Temp/vol2/@appshare /vol2
|
||||
|
||||
#rsync -av /vol4/1000/Temp/vol2/@apptemp /vol2
|
||||
rsync -av /vol4/1000/Temp/vol2/docker /vol2
|
||||
rsync -av /vol4/1000/Temp/vol2/@sysappmeta /vol2
|
||||
rsync -av /vol4/1000/Temp/vol2/appcenter-downloads /vol2
|
||||
rsync -av /vol4/1000/Temp/vol2/.cache.trim-sysrestore /vol2
|
||||
rsync -av /vol4/1000/Temp/vol2/mediasrv.transcode /vol2
|
||||
```
|
||||
|
||||
|
||||
先手工使用
|
||||
rsync -av /vol4/1000/Temp/vol2/1000/Photos /vol2/1000
|
||||
rsync -av /vol4/1000/Temp/vol2/@apptemp /vol2
|
||||
测试通过!
|
||||
没有报上述错误的原因是什么呢:
|
||||
没有想明白。。。
|
||||
至少这种方式rync在创建mkstemp没有权限问题了!
|
||||
|
||||
然后开始运行脚本!
|
||||
这种方式也是直接替换某个飞牛数据盘的方法:
|
||||
先卸载需要替换的磁盘,使用磁盘盒接入新盘
|
||||
重启系统
|
||||
挂载新盘为存储空间2,在挂载原来的磁盘为存储空间5
|
||||
cd /root
|
||||
./rsync-5-2.sh &
|
||||
注意有2个目录先期做了测试,注释了!
|
||||
|
||||
当然还是先做好备份再用这个方法保险!
|
||||
|
||||
|
||||
【20260603】
|
||||
昨天用256G SSD替代了原来的128G SSD
|
||||
方法:
|
||||
先将原来的SSD做了一个全盘克隆 Windows下DG
|
||||
然后还是用DG将SSD克隆到256G的SSD上,按扇区原样,主要是因为有引导分区,保持原来的分区1大小,系统分区,大约54G
|
||||
先保存存储空间,尽管没有什么数据,
|
||||
删除分区2,trim分区,就是存储空间1
|
||||
lsblk
|
||||
parted /dev/sdX
|
||||
rm 2
|
||||
q
|
||||
重启系统,进入存储空间管理,添加存储空间。。。选上面的分区->basic->格式化
|
||||
|
||||
cd /vol1
|
||||
rsync -av /vol3/1000/20260601/vol2/docker /vol1
|
||||
将docker迁移到存储空间1,以便获得更快的运行速度
|
||||
|
||||
重启系统,正常
|
||||
过了一会,好像没多久,突然发现存储空间2变成只读了!
|
||||
|
||||
然后又开始折腾,寻找各种办法,
|
||||
重启后依然不能挂载存储空间2,用之前的命令
|
||||
mount -t btrfs -o rw 不行,改为
|
||||
mount -t btrfs -o ro,usebackuproot,rescue=all /dev/mapper/trim_7db5153a_b22d_43bc_a516_5041e3e504f7-0 /vol2
|
||||
|
||||
由于已有备份,这次就没有rsync备份
|
||||
|
||||
btrfs scrub
|
||||
btrfs check --repair
|
||||
|
||||
各种失败,只好放弃,打算umount,结果不让unmount
|
||||
|
||||
fuser -mv /vol2
|
||||
kill -9 xx
|
||||
失败!
|
||||
只好重启,存储空间2依然没有挂载
|
||||
只好格式化:
|
||||
mkfs.btrfs /dev/mapper/xxx 注意不能mkfs.btrfs /dev/sda
|
||||
进入存储空间管理挂载,成功!
|
||||
|
||||
rsync -av /vol3/1000/20260601/vol2/1000/docker /vol2/1000
|
||||
|
||||
将docker数据恢复到存储空间2,开启docker,正常!
|
||||
但是有几个容器或者compose不能启动camkeep/t3fap/owncloud,发现是路径是<font color="#c0504d">/vol1/</font>overlay...
|
||||
需要删除镜像,再重新拉取镜像构建。
|
||||
owncloud是使用volumes,通过
|
||||
docker volumes inspect 卷名
|
||||
在备份的文件中找到/vol2/docker/volumes/owncloud_mysql/_ Data目录,cp -r 就恢复了!
|
||||
|
||||
xiaoya不能正常运行,原因未知,天园没有这个问题,可能是/vol2/docker文件还在,没有删除,一旦移走,估计会像东玺门一样不能运行,需要重新卸载->安装,上午一直安装xiaoya不成功,只要是aliyunTVToken获取程序有问题,程序员可能在调试。。。
|
||||
中午安装成功了!
|
||||
|
||||
|
||||
|
||||
将/vol2应用进行恢复
|
||||
|
||||
rsync -av /vol3/1000/20260601/vol2/@appcenter /vol2
|
||||
。。。
|
||||
|
||||
现在情况是2个节点都已经更换了系统盘
|
||||
备份机制:
|
||||
每天零点自动做快照
|
||||
定期(初步计划是每周)做一个rsync同步,在本机的其他磁盘上
|
||||
每周9161负责将docker数据文件备份到9161上
|
||||
两边节点的原来系统盘(120G)全部保存,以防万一。
|
||||
|
||||
|
||||
|
||||
几个需要关注的问题:
|
||||
1、东玺门存储空间2磁盘,每天系统重启后报错,需要经常关注下是否到了很严重的地步(昨天就不能挂载了,今天更换了!不能偷懒!)
|
||||
2、感觉天园飞牛重启系统恢复正常很慢,至少10分钟以上?
|
||||
|
||||
|
||||
|
||||
|
||||
# 远程文件夹装载
|
||||
|
||||

|
||||
|
||||
|
||||
@@ -0,0 +1,162 @@
|
||||
---
|
||||
title: `iftop` 是一个实时网络流量监控工具,类似 `top`
|
||||
created: 2026-05-31
|
||||
source: Cherry Studio
|
||||
tags:
|
||||
---
|
||||
`iftop` 是一个实时网络流量监控工具,类似 `top` 命令,但专注于显示 **网络接口的带宽使用情况**,常用于排查服务器带宽占用过高的问题。
|
||||
|
||||
---
|
||||
|
||||
## **1\. 安装 iftop**
|
||||
|
||||
### **Debian/Ubuntu**
|
||||
|
||||
```bash
|
||||
sudo apt install iftop
|
||||
```
|
||||
|
||||
### **RHEL/CentOS**
|
||||
|
||||
```bash
|
||||
sudo yum install epel-release # 确保EPEL仓库可用
|
||||
sudo yum install iftop
|
||||
```
|
||||
|
||||
### **Arch Linux**
|
||||
|
||||
```bash
|
||||
sudo pacman -S iftop
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## **2\. 基本使用方法**
|
||||
|
||||
### **直接运行(默认监控所有网卡)**
|
||||
|
||||
```bash
|
||||
sudo iftop
|
||||
```
|
||||
|
||||
(需要 `root` 权限,因为要抓取网络数据包)
|
||||
|
||||
### **指定网卡(如 eth0、ens3)**
|
||||
|
||||
```bash
|
||||
sudo iftop -i eth0
|
||||
```
|
||||
|
||||
### **按目标 IP 排序(**`-n` **不解析主机名)**
|
||||
|
||||
```bash
|
||||
sudo iftop -n
|
||||
```
|
||||
|
||||
(避免DNS查询,加快显示)
|
||||
|
||||
---
|
||||
|
||||
## **3\. 界面交互操作**
|
||||
|
||||
`iftop` **运行时,可以使用以下快捷键调整显示方式:**
|
||||
|
||||
| 按键 | 功能 |
|
||||
| --- | --- |
|
||||
| `h` | 显示帮助 |
|
||||
| `n` | 打开/关闭主机名解析(DNS) |
|
||||
| `s` | 显示源IP(默认显示目标IP) |
|
||||
| `d` | 显示目标IP(切换) |
|
||||
| `t` | 切换流量显示模式(单行/两行/合计) |
|
||||
| `N` | 切换端口显示(开启/关闭) |
|
||||
| `p` | 显示/隐藏端口号 |
|
||||
| `P` | 暂停流量刷新 |
|
||||
| `q` | 退出 iftop |
|
||||
|
||||
---
|
||||
|
||||
## **4\. 常用高级参数**
|
||||
|
||||
### **显示特定网段的流量(如 192.168.1.0/24)**
|
||||
|
||||
```bash
|
||||
sudo iftop -F 192.168.1.0/24
|
||||
```
|
||||
|
||||
### **按带宽排序**
|
||||
|
||||
```bash
|
||||
sudo iftop -B
|
||||
```
|
||||
|
||||
(默认单位为bit/s,可加 `-B` 改 bytes/s)
|
||||
|
||||
### **显示端口**
|
||||
|
||||
```bash
|
||||
sudo iftop -P
|
||||
```
|
||||
|
||||
(显示哪些TCP/UDP端口在使用带宽)
|
||||
|
||||
### **过滤特定流量(如只显示HTTP)**
|
||||
|
||||
```bash
|
||||
sudo iftop -f "port 80"
|
||||
```
|
||||
|
||||
(支持 `tcpdump` 语法,如 `host 1.1.1.1`)
|
||||
|
||||
---
|
||||
|
||||
## **5\. 示例使用场景**
|
||||
|
||||
### **① 检查哪个 IP 占用带宽最高**
|
||||
|
||||
```bash
|
||||
sudo iftop -n -i eth0
|
||||
```
|
||||
|
||||
👉 **观察** `=>` **和** `<=` **方向流量,找到占用最高的 IP** (按 `<` 和 `>` 可切换排序)
|
||||
|
||||
### **② 分析网站访问流量**
|
||||
|
||||
```bash
|
||||
sudo iftop -n -P -i eth0 -f "port 80 or port 443"
|
||||
```
|
||||
|
||||
👉 查看Web请求(HTTP/HTTPS)的流量分布
|
||||
|
||||
### **③ 监控某台服务器的流量**
|
||||
|
||||
```bash
|
||||
sudo iftop -n -i eth0 host 192.168.1.100
|
||||
```
|
||||
|
||||
👉 只显示与 `192.168.1.100` 通信的流量
|
||||
|
||||
---
|
||||
|
||||
## **6\. 注意事项**
|
||||
|
||||
- `iftop` **不记录历史流量**,如果需要长期日志,可以用 `nethogs` 或 `vnstat`。
|
||||
|
||||
- **高流量环境下**可能导致显示不流畅,可尝试 `-N` 关闭端口解析优化性能。
|
||||
|
||||
- **远程服务器监控** 可能需要工具如 `nload` 或 `bmon`(iftop 更适合本地实时监控)。
|
||||
|
||||
|
||||
---
|
||||
|
||||
### **替代工具**
|
||||
|
||||
| 工具 | 特点 |
|
||||
| --- | --- |
|
||||
| **nethogs** | 按进程查看流量(类似 `top`) |
|
||||
| **vnstat** | 每天/每月流量统计(长期记录) |
|
||||
| **bmon** | 更美观的终端带宽监控 |
|
||||
| **iptraf** | 更详细的流量分析 |
|
||||
|
||||
---
|
||||
|
||||
通过 `iftop` 可以快速定位 **谁在占用** 网络带宽,适合运维排查高负载问题 🚀。
|
||||
Executable
+141
@@ -0,0 +1,141 @@
|
||||
---
|
||||
created: 2025-08-31T10:37
|
||||
updated: 2025-08-31T10:47
|
||||
---
|
||||
以下是 **MinIO(S3兼容存储)的Docker部署教程**,支持私有化部署和API兼容AWS S3:
|
||||
|
||||
---
|
||||
|
||||
### **1. 快速启动(单机版)**
|
||||
#### 基础命令
|
||||
```bash
|
||||
docker run -d \
|
||||
-p 9000:9000 -p 9001:9001 \
|
||||
-v /mnt/data:/data \
|
||||
-e "MINIO_ROOT_USER=admin" \
|
||||
-e "MINIO_ROOT_PASSWORD=your_strong_password" \
|
||||
--name minio \
|
||||
quay.io/minio/minio server /data --console-address ":9001"
|
||||
```
|
||||
- **访问控制台**:`http://服务器IP:9001`
|
||||
- **API端点**:`http://服务器IP:9000`
|
||||
- 默认账号:`admin` / 密码:`your_strong_password`
|
||||
|
||||
---
|
||||
|
||||
### **2. 生产环境配置(docker-compose.yml)**
|
||||
```yaml
|
||||
version: '3.7'
|
||||
services:
|
||||
minio:
|
||||
image: quay.io/minio/minio
|
||||
command: server /data --console-address ":9001"
|
||||
ports:
|
||||
- "9000:9000" # API端口
|
||||
- "9001:9001" # 控制台端口
|
||||
volumes:
|
||||
- ./minio-data:/data
|
||||
environment:
|
||||
MINIO_ROOT_USER: admin
|
||||
MINIO_ROOT_PASSWORD: your_strong_password
|
||||
restart: unless-stopped
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
|
||||
interval: 30s
|
||||
timeout: 20s
|
||||
retries: 3
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### **3. 分布式部署(4节点示例)**
|
||||
```bash
|
||||
# 每个节点执行(修改对应IP和目录)
|
||||
docker run -d \
|
||||
--net=host \
|
||||
-v /mnt/disk1:/data1 \
|
||||
-v /mnt/disk2:/data2 \
|
||||
quay.io/minio/minio server \
|
||||
http://node{1...4}/data{1...2} \
|
||||
--console-address ":9001"
|
||||
```
|
||||
> 📌 要求:
|
||||
> - 至少4个节点
|
||||
> - 每个节点2块磁盘
|
||||
> - 同一内网互通
|
||||
|
||||
---
|
||||
|
||||
### **4. 客户端连接配置**
|
||||
#### AWS CLI配置
|
||||
```bash
|
||||
aws configure set aws_access_key_id admin
|
||||
aws configure set aws_secret_access_key your_strong_password
|
||||
aws configure set default.region us-east-1
|
||||
aws --endpoint-url http://localhost:9000 s3 ls
|
||||
```
|
||||
|
||||
#### Python示例
|
||||
```python
|
||||
import boto3
|
||||
s3 = boto3.client('s3',
|
||||
endpoint_url='http://localhost:9000',
|
||||
aws_access_key_id='admin',
|
||||
aws_secret_access_key='your_strong_password')
|
||||
s3.create_bucket(Bucket='my-bucket')
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### **5. 常见问题解决**
|
||||
#### 🔴 存储权限问题
|
||||
```bash
|
||||
# 修改数据卷权限
|
||||
chown -R 1001:1001 /mnt/data
|
||||
```
|
||||
|
||||
#### 🟡 控制台无法访问
|
||||
检查防火墙规则:
|
||||
```bash
|
||||
sudo ufw allow 9000/tcp
|
||||
sudo ufw allow 9001/tcp
|
||||
```
|
||||
|
||||
#### 🟢 数据备份
|
||||
```bash
|
||||
# 使用mc客户端同步
|
||||
docker run -it --entrypoint=/bin/sh minio/mc
|
||||
mc mirror local/ minio/backup-bucket/
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### **6. 监控与运维**
|
||||
#### 启用Prometheus监控
|
||||
```yaml
|
||||
# 在docker-compose.yml中添加环境变量
|
||||
environment:
|
||||
MINIO_PROMETHEUS_AUTH_TYPE: "public"
|
||||
MINIO_PROMETHEUS_URL: "http://prometheus:9090"
|
||||
```
|
||||
|
||||
#### 日志查看
|
||||
```bash
|
||||
docker logs --tail 100 -f minio
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### **7. 进阶功能**
|
||||
| 功能 | 配置方法 |
|
||||
|--------------------|---------------------------------------|
|
||||
| **SSL证书** | 挂载证书到`/root/.minio/certs`目录 |
|
||||
| **版本控制** | `mc version enable my-bucket` |
|
||||
| **生命周期管理** | 通过控制台配置自动删除规则 |
|
||||
| **多租户** | 使用`mc admin policy`创建独立用户权限 |
|
||||
|
||||
> 💡 推荐工具:
|
||||
> - 管理客户端:[`mc`命令行工具](https://min.io/docs/minio/linux/reference/minio-mc.html)
|
||||
> - 可视化工具:[MinIO Console](http://localhost:9001)
|
||||
|
||||
需要更详细的HTTPS配置或性能优化参数吗?
|
||||
@@ -0,0 +1,76 @@
|
||||
## [
|
||||
云服务器搭建网站](https://developer.aliyun.com/article/771224)
|
||||
|
||||
[1](https://developer.aliyun.com/article/771224)[2](https://blog.csdn.net/weixin_74009030/article/details/131200303)[3](https://cloud.tencent.com/document/product/213/39130)
|
||||
|
||||
[
|
||||
|
||||
](https://developer.aliyun.com/article/771224)
|
||||
|
||||
[
|
||||
|
||||
](https://blog.csdn.net/weixin_74009030/article/details/131200303)
|
||||
|
||||
[
|
||||
|
||||
](https://cloud.tencent.com/document/product/213/39130)
|
||||
|
||||
在云服务器上搭建网站是一个常见的任务,以下是详细步骤,帮助您快速完成网站部署。
|
||||
|
||||
1. 购买域名和云服务器
|
||||
|
||||
- **域名**:选择常见后缀(如 _.com_、_.net_),并完成实名认证。
|
||||
|
||||
- **云服务器**:推荐选择阿里云或腾讯云的轻量应用服务器,适合个人或小型网站。购买时注意选择合适的地域(如香港,无需备案)。
|
||||
|
||||
|
||||
2. 配置云服务器
|
||||
|
||||
- **设置密码**:登录云服务商控制台,修改默认密码。
|
||||
|
||||
- **开放端口**:在防火墙或安全组中开放必要端口: 80(HTTP)、443(HTTPS)、22(SSH)、8888(宝塔面板)。
|
||||
|
||||
- **远程连接**:使用工具如 XShell 或 Workbench 连接服务器。
|
||||
|
||||
|
||||
3. 安装宝塔面板
|
||||
|
||||
宝塔面板简化了服务器管理和网站搭建流程。
|
||||
|
||||
- 在终端输入以下命令安装宝塔:
|
||||
|
||||
|
||||
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh
|
||||
|
||||

|
||||
|
||||
- 安装完成后,记录面板地址、账号和密码。
|
||||
|
||||
|
||||
- 在浏览器中访问面板地址,登录并安装 LNMP 或 LAMP 环境。
|
||||
|
||||
|
||||
4. 上传网站程序
|
||||
|
||||
- **博客程序**:如 WordPress、Typecho。
|
||||
|
||||
- **论坛程序**:如 Discuz!。
|
||||
|
||||
- **自定义代码**:将代码压缩后上传至宝塔文件管理器并解压。
|
||||
|
||||
|
||||
5. 配置域名解析
|
||||
|
||||
- 在域名管理平台添加解析记录: 主机记录为 www 或 @,记录值为服务器 IP。
|
||||
|
||||
- 确保解析生效后可通过域名访问网站。
|
||||
|
||||
|
||||
6. 测试与优化
|
||||
|
||||
- 测试网站功能是否正常运行。
|
||||
|
||||
- 根据流量需求调整服务器配置。
|
||||
|
||||
|
||||
通过以上步骤,您可以快速在云服务器上搭建属于自己的网站!
|
||||
@@ -0,0 +1,114 @@
|
||||
---
|
||||
title: # 修复 Btrfs 文件系统错误并恢复 Docker 运行
|
||||
created: 2026-05-31
|
||||
source: Cherry Studio
|
||||
tags:
|
||||
---
|
||||
# 修复 Btrfs 文件系统错误并恢复 Docker 运行(飞牛系统)
|
||||
|
||||
当 Btrfs 文件系统因断电变为只读时,您需要按照以下步骤修复:
|
||||
|
||||
## 1\. 卸载文件系统(如果已挂载)
|
||||
|
||||
```bash
|
||||
sudo umount /path/to/存储空间2
|
||||
```
|
||||
|
||||
## 2\. 运行 Btrfs 文件系统修复
|
||||
|
||||
### 基本修复(尝试正常恢复)
|
||||
|
||||
```bash
|
||||
sudo btrfs check --readonly /dev/sdX2 # 先只读检查,替换为实际设备名
|
||||
```
|
||||
|
||||
### 如果发现错误需要修复
|
||||
|
||||
```bash
|
||||
sudo btrfs check --repair /dev/sdX2
|
||||
```
|
||||
|
||||
**注意**:`--repair` 选项有一定风险,建议先备份重要数据。它会尝试自动修复文件系统结构错误。
|
||||
|
||||
## 3\. 高级修复选项(如果基本修复无效)
|
||||
|
||||
### 重置日志(log tree)
|
||||
|
||||
```bash
|
||||
sudo btrfs rescue zero-log /dev/sdX2
|
||||
```
|
||||
|
||||
### 清除损坏的树(谨慎使用)
|
||||
|
||||
```bash
|
||||
sudo btrfs rescue clear-ino-cache /dev/sdX2
|
||||
sudo btrfs rescue fix-device-size /dev/sdX2
|
||||
```
|
||||
|
||||
## 4\. 重新挂载文件系统
|
||||
|
||||
```bash
|
||||
sudo mount -t btrfs -o compress-force=zstd,noatime,space_cache=v2 /dev/sdX2 /path/to/存储空间2
|
||||
```
|
||||
|
||||
## 5\. 恢复 Docker 服务
|
||||
|
||||
```bash
|
||||
sudo systemctl restart docker
|
||||
```
|
||||
|
||||
### 检查容器状态
|
||||
|
||||
```bash
|
||||
docker ps -a
|
||||
```
|
||||
|
||||
### 尝试启动容器
|
||||
|
||||
```bash
|
||||
docker start $(docker ps -aq)
|
||||
```
|
||||
|
||||
## 6\. 如果仍有问题
|
||||
|
||||
### 重建 Btrfs 空间缓存
|
||||
|
||||
```bash
|
||||
sudo btrfs filesystem resize max /path/to/存储空间2
|
||||
```
|
||||
|
||||
### 检查并修复子卷
|
||||
|
||||
```bash
|
||||
sudo btrfs subvolume list /path/to/存储空间2
|
||||
sudo btrfs subvolume sync /path/to/存储空间2
|
||||
```
|
||||
|
||||
## 7\. 预防措施
|
||||
|
||||
1. **启用 Btrfs 异步写入**: 在`/etc/fstab`中添加`async`选项
|
||||
|
||||
2. **定期检查与平衡**:
|
||||
|
||||
|
||||
```bash
|
||||
sudo btrfs scrub start /path/to/存储空间2
|
||||
sudo btrfs balance start -dusage=50 -musage=50 /path/to/存储空间2
|
||||
```
|
||||
|
||||
3. **考虑使用 RAID1**:
|
||||
|
||||
|
||||
```bash
|
||||
sudo btrfs device add /dev/sdY /path/to/存储空间2
|
||||
sudo btrfs balance start -dconvert=raid1 -mconvert=raid1 /path/to/存储空间2
|
||||
```
|
||||
|
||||
4. **启用 COW 禁用**: 对 Docker 存储目录禁用写入时复制:
|
||||
|
||||
|
||||
```bash
|
||||
sudo chattr +C /path/to/存储空间2/docker
|
||||
```
|
||||
|
||||
如果上述方法仍无法修复,您可能需要考虑从备份恢复数据或联系专业数据恢复服务。
|
||||
Executable
+273
@@ -0,0 +1,273 @@
|
||||
---
|
||||
createDate: <% tp.file.creation_date("YYYY-MM-DD HH:mm")%>: 星期五, 七月 11日 2025, 8:50:05 早上
|
||||
date modified: 星期六, 八月 2日 2025, 12:25:07 中午
|
||||
createDate: <% tp.file.creation_date("YYYY-MM-DD HH:mm")%>: 星期五, 七月 11日 2025, 8:50:05 早上
|
||||
---
|
||||
## 1. RSS是什么
|
||||
|
||||
网页以RSS的形式为其内容提供一个通过URL获得的提要。RSS提要文件包含大量离散的新闻项,每一个RSS文件包含一个频道(Channel)。一个频道必须至少具备以下元素:Title(标题),在Description(描述)中对频道的简单介绍;Link(链接相应的目标网页);Language(频道语言)。每个频道由若干个Item(项)组成,每个项包含了一个URL,一个标题和一个摘要。RSS技术主要包含两个重要组件, RSS 提要(Feed)和RSS阅读器。
|
||||
|
||||
比如某个博客(Blog)的入口,其基本语法如下:
|
||||
|
||||
```
|
||||
<channel>
|
||||
|
||||
<title><!-- channel 的标题 --></title>
|
||||
|
||||
<description><!-- 简要描述 --></description>
|
||||
|
||||
<link><!-- channel 的 URL --></link>
|
||||
|
||||
<!-- 可选/可扩展元素 -->
|
||||
|
||||
<item>
|
||||
|
||||
<title><!-- 项标题 --></title>
|
||||
|
||||
<link><!-- 项 URL --></link>
|
||||
|
||||
<description><!-- 简要描述 --></description>
|
||||
|
||||
<!-- 可选的/可扩展的元素 -->
|
||||
|
||||
</item>
|
||||
|
||||
</channel>
|
||||
```
|
||||
|
||||
## 2. RSS文件结构
|
||||
|
||||
|
||||
RSS是两级结构,第一级结构是channel,相当于blog系统中某人的blog,第二级结构是item,相当于blog中的文章。属性中最重要的是title、description和link,title是标题,description是介绍,link是与其相关的url。
|
||||
|
||||
```
|
||||
1. <?xml version="1.0" encoding="gb2312" ?>
|
||||
2. <rss version="2.0">
|
||||
3. <channel>
|
||||
4. <title>我的Blog</title> //channel的标题
|
||||
5. <description>与我自己的技术Blog相关联</description> //channel的介绍
|
||||
6. <link>http://counter.csdn.net/pv.aspx?id=72</link> //channel的url
|
||||
7. <item>
|
||||
8. <title><!-- 项标题 --></title> //item的标题
|
||||
9. <link><!-- 项 URL --></link> //item的url
|
||||
10. <description><!-- 简要描述 --></description> //item的介绍
|
||||
11. <!-- 可选的/可扩展的元素 --> //item的其他属性,比如更新时间
|
||||
12. </item>
|
||||
13. <item>
|
||||
14. <!-- 可多个<item>项目--> //一个channel有多个item
|
||||
15. </item>
|
||||
16. </channel>
|
||||
17. </rss>
|
||||
## 3. RSS制作
|
||||
```
|
||||
|
||||
烧制网页 RSS 源,主要有 **FEED43** 和 **Huginn** 两种方法:
|
||||
|
||||
- FEED43:简单免费,六小时抓取一次,每次抓取 20 条静态页面。
|
||||
- Huginn:自由度高,能自定义**抓取频率、内容结构、js 结果、输出样式**等;需要搭建服务器,学习 Huginn 抓取规则。
|
||||
|
||||
[Huginn](http://github.com/huginn/huginn)
|
||||
|
||||
! [Huginn]([https://github.com/yourname/huginn](https://github.com/yourname/huginn))
|
||||
## 3. 工作机制
|
||||
|
||||
内容提供者在其网站上添加RSS的链接,以提供RSS订阅功能,当打开这个链接时,传送过去了一些频道信息,比如:blog的作者名。
|
||||
|
||||
一种做法是,RSS链接URL指向的是一个空内容的页面,该页面后台程序通过传过来的频道信息访问数据库,获取频道列表,用Response.Write向该空页面写出XML格式的文件。
|
||||
|
||||
另一种做法是,RSS链接URL指向的是一个xml文件,该文件由服务器的程序事先生成好的,放在服务器上,访问时静态获取,服务器在作者每添加一个频道列表时自动更新该xml文件。
|
||||
|
||||
第一种做法的优点是管理方便,因为不需要为每个频道生成xml文件,所有的RSS请求都由一个后台页面处理,接口统一,但每次访问RSS链接时,都要动态地写出RSS频道列表,访问效率相对较低,第二种做法的优点是访问时,只是返回一个静态的xml文件,不需要访问数据库来临时生成,所以访问效率相对较高,但每更新一次频道列表中的项时,就要自动地重新生成xml文件以保证RSS文件的最新,这样就降低了更新的效率。
|
||||
|
||||
## 4. RSSHub
|
||||
|
||||
一个开源易扩展的rss生成器,简单来说:让万物皆可rss。
|
||||
本质上是一个爬虫路由及解析服务。开发者可以通过got、cheerio等库,来抓取网页数据,交由rsshub生成rss源。
|
||||
RSSHub是GitHub上的一款开源RSS聚合软件。凭借良好的可拓展性和富有活力的社区,它现在已经可以将大部分常用网站的文章转化为RSS形式,让你可以在一个RSS阅读器上聚合阅读所有网站的内容。
|
||||
|
||||
作者:DIYGod 博客网址:https://diygog.cc
|
||||
设计初衷:解决RSS订阅,需要梯子的RSS源和没有RSS源的信息订阅
|
||||
|
||||
当我们进入一个新页面时,RSSHub Radar 开始检测当前页面的 RSS 和 RSSHub
|
||||
|
||||
### **当前页面自带的 RSS**
|
||||
|
||||
分析页面中的每个链接显然是不现实的,好在标准中指定了一种特殊 MIME 类型的 link 标签来指明 RSS 链接,`link[type="application/rss+xml"]` 和 `link[type="application/atom+xml"]`,RSSHub Radar 正是通过这个标签来检测页面是否有自带 RSS,具体实现在[这里](https://link.zhihu.com/?target=https%3A//github.com/DIYgod/RSSHub-Radar/blob/master/src/js/content/utils.js%23L14)
|
||||
|
||||
### **适用于当前页面的 RSSHub**
|
||||
|
||||
使用[给定规则](https://link.zhihu.com/?target=https%3A//github.com/DIYgod/RSSHub/blob/master/assets/radar-rules.js),根据当前页面的 URL 或 DOM 来获取 RSSHub 链接,规则各个字段的具体含义见[文档](https://link.zhihu.com/?target=https%3A//docs.rsshub.app/joinus/%23%25E6%258F%2590%25E4%25BA%25A4%25E6%2596%25B0%25E7%259A%2584-rsshub-radar-%25E8%25A7%2584%25E5%2588%2599),具体实现在[这里](https://link.zhihu.com/?target=https%3A//github.com/DIYgod/RSSHub-Radar/blob/master/src/js/background/utils.js%23L111)
|
||||
|
||||
每隔 5 个小时从 GitHub 远程更新一次规则
|
||||
- RSSHub/RSSHub Radar/TTRS
|
||||
RSSHub顾名思义RSS集散地,可以集中订阅各种Rss源,而且可以创建Rss源,以供订阅。
|
||||
由于网络问题,
|
||||
RSSHub Radar也是DIYGod编写的,一个浏览器插件,作用有三个:发现网页RSS;匹配是否存在已知规则,如果是,则显示自建RSSHub的完整RSS订阅链接;同时提供推送到订阅平台或者阅读器快捷方式
|
||||
[Tiny Tiny RSS](https://link.zhihu.com/?target=https%3A//tt-rss.org/)作为RSS服务器,[RSSHub](https://link.zhihu.com/?target=https%3A//docs.rsshub.app/)作为RSSfeed的生成器
|
||||
|
||||
|
||||
## 5. RSS阅读器
|
||||
- Mac:Reeder、fluent reader、feeder、feedflow、ReadKit
|
||||
- Windows:irreader、fluent reader、
|
||||
- iOS:Unread、reeder5 、feedly、fluent reader
|
||||
- Andriod:
|
||||
- RSS服务平台:feedly.com、innoreader.com、qireader.com
|
||||
- 自建RSS平台:TTRSS、FreshRSS、Miniflux
|
||||
|
||||
### 5.1 RSS的订阅
|
||||
|
||||
有的网站提供了RSS自动发现机制,可以很方便地把RSS的URL添加到RSS阅读器中。如果没有自动发现,那么可以手动把RSS链接的URL添加到RSS阅读器中,这样就加入了一个用户订阅的频道。在RSS阅读器中可以更新频道列表或点击一个item链接打开该item的页面。
|
||||
浏览器中订阅:两个浏览器插件
|
||||
RSSHubRadar、油猴脚本
|
||||
客户端中输入订阅URL即可完成订阅。
|
||||
由于 RSSHub 支持自建,很多网友都建了一份,并且分享了出来,我们可以叫这些网站为 RSSHub 的镜像网站。如果你不想动手,则完全搭其他网友的“**便车**”。
|
||||
|
||||
### 5.2 RSSHub镜像站点
|
||||
https://rsshub.rssforever.com
|
||||
https://i.scnu.edu.cn/sub
|
||||
https://rsshub.anyant.xyz
|
||||
https://rss.injahow.cn
|
||||
https://rss.shab.fun
|
||||
https://rss.injahow.cn
|
||||
http://himan.picp.net:1202
|
||||
|
||||
## 5.3 微信公众号RSS
|
||||
### 5.3.1 搭建教程,私有化部署
|
||||
https://github.com/ttttmr/wechat2rss?tab=readme-ov-file
|
||||
https://wechat2rss.xlab.app/deploy/
|
||||
https://github.com/ellipse42/wxrss
|
||||
收费!
|
||||
### 5.3.2 推荐收录公众号
|
||||
https://github.com/ttttmr/wechat2rss/issues
|
||||
|
||||
- 以下是几个可以寻找 RSS 订阅的网站
|
||||
|
||||
- [微文库](https://link.zhihu.com/?target=https%3A//www.wxwenku.com/): 微信公众号的 RSS 订阅,只有部分。
|
||||
- [Feeddd](https://link.zhihu.com/?target=https%3A//feeddd.org/): 微信公众号的 RSS 订阅。
|
||||
- [wxrss](https://link.zhihu.com/?target=https%3A//github.com/ellipse42/wxrss): 微信公众号的 RSS 订阅。
|
||||
- 已知公众号免费RSS
|
||||
https://wechat2rss.xlab.app/list/all
|
||||
- WeWe-RSS 免费
|
||||
WeWe RSS是一款开源的微信公众号订阅工具,它能够将微信公众号的内容转化为RSS格式,让用户可以通过[RSS阅读器](https://zhida.zhihu.com/search?content_id=252105679&content_type=Article&match_order=1&q=RSS%E9%98%85%E8%AF%BB%E5%99%A8&zhida_source=entity)来订阅和阅读微信文章。它支持全文内容输出,自动更新内容,并且支持私有化部署,满足对数据隐私有高要求的用户。
|
||||
采用sqlite方式,帐号经常失效,免费!
|
||||
docker-compose.yml:
|
||||
```
|
||||
|
||||
version: '3.9'
|
||||
|
||||
services:
|
||||
app:
|
||||
image: cooderl/wewe-rss-sqlite:latest
|
||||
ports:
|
||||
- 4000:4000
|
||||
environment:
|
||||
# 数据库连接地址
|
||||
# - DATABASE_URL=file:../data/wewe-rss.db
|
||||
- DATABASE_TYPE=sqlite
|
||||
# 服务接口请求授权码
|
||||
- AUTH_CODE=true
|
||||
# 提取全文内容模式
|
||||
# - FEED_MODE=fulltext
|
||||
# 定时更新订阅源Cron表达式
|
||||
# - CRON_EXPRESSION=35 5,17 * * *
|
||||
# 服务接口请求限制,每分钟请求次数
|
||||
# - MAX_REQUEST_PER_MINUTE=60
|
||||
# 外网访问时,需设置为服务器的公网 IP 或者域名地址
|
||||
- SERVER_ORIGIN_URL=http://himan.picp.net:4000
|
||||
|
||||
volumes:
|
||||
# 映射数据库文件存储位置,容器重启后不丢失
|
||||
- ./data:/app/data
|
||||
|
||||
|
||||
```
|
||||
扩展管理组件:
|
||||
https://github.com/wyn-ying/wewe-rss-extensions
|
||||
### 5.3.3 一个成熟的订阅助手
|
||||
https://github.com/rachelos/we-mp-rss
|
||||
基于官方接口开发的,docker-cli:
|
||||
```
|
||||
docker run -d \ --name we-mp-rss \ -p 4001:8001 \ -e DB=mysql+pymysql://<username>:<password>@<host>/<database> \ -e USERNAME:admin \ -e PASSWORD:admin@123 \ -e DINGDING_WEBHOOK=https://oapi.dingtalk.com/robot/send?access_token=admin8466 \ -v $(pwd)/data:/app/data \ ghcr.io/rachelos/we-mp-rss:latest
|
||||
```
|
||||
|
||||
|
||||
## 6. 自建RSS源
|
||||
|
||||
- 重要参考链接:
|
||||
https://zhuanlan.zhihu.com/p/680291195
|
||||
TTRSS搭建
|
||||
https://blog.naibabiji.com/tutorial/tiny-tiny-rss.html
|
||||
TTRSS-Mobile
|
||||
https://github.com/mboinet/ttrss-mobile
|
||||
https://blognas.hwb0307.com/linux/docker/788
|
||||
我的TTRSS网址:
|
||||
http://himan.picp.net:1810
|
||||
|
||||
|
||||
Reeder客户端目前只支持3种自建HostedServer:
|
||||

|
||||
TTRSS安装fever插件Fever API可以支持!
|
||||
|
||||
关于FreshRSS见下一节介绍。
|
||||
|
||||
自建RSS服务比较:
|
||||
|
||||
| 产品 | 优点 | 缺点 |
|
||||
| ------------- | ---------------------- | ------------- |
|
||||
| Tiny Tiny RSS | 功能和插件最丰富 | 资源占用多,更新缓慢 |
|
||||
| FreshRSS | 支持 XPath 抓取不支持 RSS 的网站 | 资源占用也不小 |
|
||||
| Miniflux | 资源占用小,功能够用 | 无法为每个源自定义抓取间隔 |
|
||||
| wewerss | | |
|
||||
注:都是我自己用下来的感觉,不一定准确 如果你要使用 TTRSS,不建议使用官方原版,用 [🐋 Awesome TTRSS](https://ttrss.henry.wang/zh/)
|
||||
- miniflux搭建教程如下:
|
||||
https://yfi.moe/post/rsshub-miniflux/
|
||||
## 7.RSS客户端
|
||||
|
||||
- PC
|
||||
unread、reeder、netnewwire
|
||||
- 移动端
|
||||
unread、netnewwire
|
||||
- 浏览器
|
||||
feedpro
|
||||
|
||||
## 8. 成果和后续计划
|
||||
|
||||
### 8.1 微信转发
|
||||
- http://himan.picp.net:4000 使用微信读书帐号进行抓取,但是不能连续,有封号风险
|
||||
- http://himan.picp.net:8001 使用官网API接口,比较稳定
|
||||
## 8.2 TTRSS
|
||||
- http://himan.picp.net:1810 导入外部opml,订阅了大量RSS,安装了插件,可以在网站或者使用Mobile阅读app如:unread,可以在网页上通过rsshub或脚本直接订阅RSS!
|
||||
## 8.3 RSSHub
|
||||
|
||||
- http://himan.picp.net:1202 可以使用别人已经做好的路由进行订阅;也可以自行进行各种RSS转换好订阅,待学习!
|
||||
-
|
||||
|
||||
## 9. 参考链接
|
||||
- 网站RSS feed查找工具汇总
|
||||
https://zhuanlan.zhihu.com/p/719753010
|
||||
- FreshRSS
|
||||
https://www.1itao.com/freshrss-localhost.html
|
||||
https://www.freshrss.org/
|
||||
- wewerss搭建教程
|
||||
https://github.com/cooderl/wewe-rss
|
||||
https://zhuanlan.zhihu.com/p/15414931059
|
||||
https://blog.csdn.net/wbsu2004/article/details/137666657
|
||||
https://peterjxl.blog.csdn.net/article/details/141345162?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ECtr-1-141345162-blog-137666657.235%5Ev43%5Epc_blog_bottom_relevance_base9&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ECtr-1-141345162-blog-137666657.235%5Ev43%5Epc_blog_bottom_relevance_base9&utm_relevant_index=2
|
||||
|
||||
https://blog.csdn.net/wbsu2004/article/details/137666657
|
||||
|
||||
已搭建成功:
|
||||
http://himan.picp.net:4000/feeds/MP_WXS_3255413770.atom
|
||||
|
||||
AuthCode=true
|
||||
http://himan.picp.net:4000
|
||||
微信读书:hii
|
||||
|
||||
|
||||
-为什么说 FreshRSS 是我心目中最好的 RSS 阅读器。
|
||||
|
||||
1. 免费、无订阅源数量限制、支持全文搜索,常规 RSS 阅读器该有的功能它都有
|
||||
|
||||
2. 支持 HTML+XPath(Web 抓取)方式订阅,可以订阅不提供 RSS 的网站内容,搭配 RSSHub 等工具,真正实现“订阅一切”
|
||||
|
||||
3. 相对于其他本地 RSS 阅读器,FreshRSS 可做到全平台支持;而相对于其他自建 RSS 阅读器,FreshRSS 的界面更美观,而且搭建更容易
|
||||
@@ -0,0 +1,198 @@
|
||||
---
|
||||
title: 在 __飞牛OS(或其他 Linux 系统)__ 中
|
||||
created: 2026-07-02
|
||||
source: Cherry Studio
|
||||
tags:
|
||||
---
|
||||
在 **飞牛OS(或其他 Linux 系统)** 中,如果某个 **服务进程** 需要在启动时依赖其他前置服务(如数据库、网络等),可以通过以下方法找到并配置这些依赖关系:
|
||||
|
||||
---
|
||||
|
||||
## **1\. 查看现有服务的依赖(systemd 方式)**
|
||||
|
||||
飞牛OS 通常基于 `systemd` 管理服务,可以通过以下命令查看服务的依赖关系:
|
||||
|
||||
### **✅ 方法 1:使用** `systemctl list-dependencies`
|
||||
|
||||
```bash
|
||||
# 查看某个服务的依赖树(例如 nginx)
|
||||
systemctl list-dependencies nginx.service
|
||||
```
|
||||
|
||||
**输出示例:**
|
||||
|
||||
```text
|
||||
nginx.service
|
||||
● ├─system.slice
|
||||
● ├─basic.target
|
||||
● │ ├─paths.target
|
||||
● │ ├─sockets.target
|
||||
● │ ├─sysinit.target
|
||||
● │ └─timers.target
|
||||
● └─network-online.target
|
||||
```
|
||||
|
||||
- `network-online.target` 表示 `nginx` 依赖网络就绪后才启动。
|
||||
|
||||
|
||||
---
|
||||
|
||||
### **✅ 方法 2:使用** `systemctl show`
|
||||
|
||||
```bash
|
||||
# 查看服务的详细依赖信息(包括 Before/After/Wants/Requires)
|
||||
systemctl show nginx.service --property="Requires,Wants,After,Before"
|
||||
```
|
||||
|
||||
**输出示例:**
|
||||
|
||||
```text
|
||||
Requires=basic.target
|
||||
Wants=network-online.target
|
||||
After=network.target basic.target
|
||||
Before=multi-user.target
|
||||
```
|
||||
|
||||
- `Requires`:强依赖(如果该服务启动失败,当前服务也会失败)。
|
||||
|
||||
- `Wants`:弱依赖(即使依赖服务失败,当前服务仍会尝试启动)。
|
||||
|
||||
- `After`:确保该服务在 `network.target` 之后启动。
|
||||
|
||||
- `Before`:确保该服务在 `multi-user.target` 之前启动。
|
||||
|
||||
|
||||
---
|
||||
|
||||
## **2\. 分析日志排查启动顺序**
|
||||
|
||||
如果服务启动异常(如依赖未满足),可以查看 `systemd` 日志:
|
||||
|
||||
```bash
|
||||
# 查看所有服务的启动日志(按时间排序)
|
||||
journalctl -b
|
||||
|
||||
# 仅查看某个服务的日志(如 mysql)
|
||||
journalctl -u mysql.service -b
|
||||
```
|
||||
|
||||
**示例问题:**
|
||||
|
||||
```text
|
||||
nginx.service: Failed with result 'dependency'.
|
||||
```
|
||||
|
||||
- 这表明 `nginx` 因依赖项未满足而启动失败。
|
||||
|
||||
|
||||
---
|
||||
|
||||
## **3\. 手动设置服务依赖(修改** `.service` **文件)**
|
||||
|
||||
如果发现某个服务 **缺少依赖**(如 `app.service` 需要在 `mysql.service` 之后启动):
|
||||
|
||||
### **步骤 1:编辑服务文件**
|
||||
|
||||
```bash
|
||||
sudo nano /etc/systemd/system/app.service
|
||||
```
|
||||
|
||||
### **步骤 2:添加依赖关系**
|
||||
|
||||
在 `[Unit]` 部分修改或添加:
|
||||
|
||||
```ini
|
||||
[Unit]
|
||||
Description=My Application
|
||||
Requires=mysql.service # 强依赖 MySQL
|
||||
After=mysql.service # 确保 MySQL 启动后再启动本服务
|
||||
```
|
||||
|
||||
### **步骤 3:重载配置并重启**
|
||||
|
||||
```bash
|
||||
sudo systemctl daemon-reload
|
||||
sudo systemctl restart app.service
|
||||
sudo systemctl status app.service # 检查状态
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## **4\. 特殊依赖管理(如** `network-online.target`**)**
|
||||
|
||||
某些服务需要 **网络完全就绪** 后才启动(否则可能因 DNS/路由未生效而失败):
|
||||
|
||||
```ini
|
||||
[Unit]
|
||||
Description=My Web Service
|
||||
After=network-online.target # 确保网络完全可用(而不仅是 network.target)
|
||||
Wants=network-online.target # 弱依赖网络
|
||||
Requires=mysql.service # 强依赖 MySQL
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## **5\. 图形化管理(飞牛OS 可能适用)**
|
||||
|
||||
如果飞牛OS 提供 **任务计划或服务管理 GUI**,可以:
|
||||
|
||||
1. 进入 **控制面板 → 服务管理**(或类似路径)。
|
||||
|
||||
2. 查找目标服务(如 `Web Server`),检查其 **依赖项** 或 **启动顺序**。
|
||||
|
||||
3. 手动调整启动优先级(类似 `systemd` 的 `Before/After`)。
|
||||
|
||||
|
||||
---
|
||||
|
||||
## **6\. 案例:分析飞牛OS 内置服务**
|
||||
|
||||
#### **示例:飞牛NAS 的 Samba 服务依赖**
|
||||
|
||||
```bash
|
||||
# 查看 Samba 的依赖项
|
||||
systemctl show smbd.service --property="After,Requires"
|
||||
```
|
||||
|
||||
**可能输出:**
|
||||
|
||||
```text
|
||||
After=network.target nmbd.service
|
||||
Requires=nmbd.service
|
||||
```
|
||||
|
||||
- 说明 `smbd` 依赖 `nmbd`(NetBIOS 服务)和网络(`network.target`)先启动。
|
||||
|
||||
|
||||
#### **解决方案:**
|
||||
|
||||
如果想 **自定义前置任务**(如挂载存储后再启动 Samba):
|
||||
|
||||
```ini
|
||||
[Unit]
|
||||
Description=My Custom Samba Service
|
||||
After=network.target storage-mount.service # 新增存储挂载依赖
|
||||
Requires=nmbd.service storage-mount.service # 强依赖存储挂载
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## **总结**
|
||||
|
||||
| **问题** | **排查方法** | **解决方案** |
|
||||
| --- | --- | --- |
|
||||
| 服务启动失败,提示依赖缺失 | `systemctl list-dependencies` | 修改 `.service` 文件的 `After/Requires` |
|
||||
| 需要等待网络完全就绪 | `After=network-online.target` | 添加 `network-online.target` 依赖 |
|
||||
| 服务启动顺序不符合预期 | `journalctl -b -u 服务名` | 调整 `Before/After` 顺序或依赖链 |
|
||||
| 飞牛OS GUI 管理依赖 | 控制面板 → 任务计划 | 手动调整启动顺序或添加触发脚本 |
|
||||
|
||||
**关键命令备忘:**
|
||||
|
||||
```bash
|
||||
systemctl list-dependencies <服务名> # 查看依赖树
|
||||
systemctl show <服务名> --property=After # 查看 After 依赖
|
||||
sudo systemctl edit <服务名> # 临时修改服务配置
|
||||
journalctl -b -u <服务名> # 查看启动日志
|
||||
```
|
||||
|
||||
这样就能精准定位并管理飞牛OS 中的 **服务依赖关系**,避免因启动顺序问题导致服务异常!
|
||||
@@ -0,0 +1,155 @@
|
||||
---
|
||||
title: 在 macOS下NVR(网络视频录像机)
|
||||
created: 2026-05-06
|
||||
source: Cherry Studio
|
||||
tags: NVR
|
||||
---
|
||||
在 **macOS** 下搭建 **NVR(网络视频录像机)** 系统,可以选择 **本地软件方案** 或 **云/混合方案**,具体取决于摄像头类型(如ONVIF、RTSP/IP摄像头)、存储需求和功能偏好。以下是详细的解决方案:
|
||||
|
||||
---
|
||||
|
||||
### **1\. 本地NVR软件(macOS原生支持)**
|
||||
|
||||
适合希望用Mac直接管理和存储监控视频的用户。
|
||||
|
||||
#### **① SecuritySpy(推荐)**
|
||||
|
||||
- **特点**:
|
||||
|
||||
- 专为macOS设计,支持多路摄像头(ONVIF/RTSP/IP/USB)。
|
||||
|
||||
- 支持 **AI人形/车辆检测**、时间轴回放、移动警报(邮件/推送)。
|
||||
|
||||
- 支持H.265、4K分辨率,可导出MP4/AVI格式。
|
||||
|
||||
- **适用场景**:家用、中小型企业监控。
|
||||
|
||||
- **官网**:[https://www.bensoftware.com/securityspy/](https://www.bensoftware.com/securityspy/)
|
||||
|
||||
- **价格**:免费试用,完整版 $99起。
|
||||
|
||||
|
||||
#### **② iSpy(开源方案)**
|
||||
|
||||
- **特点**:
|
||||
|
||||
- 跨平台(macOS需通过Mono运行),支持 **RTSP/ONVIF** 协议。
|
||||
|
||||
- 支持运动检测、远程访问、云存储(需配置)。
|
||||
|
||||
- **缺点**:界面较旧,依赖Mono环境。
|
||||
|
||||
- **官网**:[https://www.ispyconnect.com/](https://www.ispyconnect.com/)
|
||||
|
||||
- **价格**:免费(高级功能需订阅)。
|
||||
|
||||
|
||||
#### **③ Blue Iris(通过虚拟机运行)**
|
||||
|
||||
- **特点**:
|
||||
|
||||
- Windows平台知名NVR软件,功能强大(支持500+摄像头品牌)。
|
||||
|
||||
- macOS可通过 **Parallels Desktop/VirtualBox** 运行Windows虚拟机安装。
|
||||
|
||||
- **缺点**:性能开销大,需付费虚拟机软件。
|
||||
|
||||
- **官网**:[https://blueirissoftware.com/](https://blueirissoftware.com/)
|
||||
|
||||
- **价格**:$70(需额外购买Windows虚拟机)。
|
||||
|
||||
|
||||
---
|
||||
|
||||
### **2\. 云端/混合NVR方案**
|
||||
|
||||
适合远程访问、无需本地存储或Mac长期开机的用户。
|
||||
|
||||
#### **① Synology Surveillance Station(需NAS)**
|
||||
|
||||
- **特点**:
|
||||
|
||||
- 通过 **Synology NAS**(如DS720+)运行NVR,macOS通过网页端管理。
|
||||
|
||||
- 支持AI分析、许可证免费2路摄像头(更多需购买授权)。
|
||||
|
||||
- **缺点**:需额外购买NAS设备。
|
||||
|
||||
- **官网**:[https://www.synology.com/surveillance](https://www.synology.com/surveillance)
|
||||
|
||||
|
||||
#### **② Milestone XProtect(企业级)**
|
||||
|
||||
- **特点**:
|
||||
|
||||
- 专业级NVR,提供macOS客户端(服务器需Windows/Linux)。
|
||||
|
||||
- 支持 **无限摄像头**(免费版限8路)、高级分析和多用户管理。
|
||||
|
||||
- **官网**:[https://www.milestonesys.com/](https://www.milestonesys.com/)
|
||||
|
||||
|
||||
#### **③ Reolink/萤石云(摄像头自带NVR)**
|
||||
|
||||
- **特点**:
|
||||
|
||||
- 部分摄像头(如Reolink Argus 3)支持 **SD卡存储+云端备份**,通过官方App(macOS/手机)查看。
|
||||
|
||||
- **缺点**:依赖厂商服务,功能受限。
|
||||
|
||||
|
||||
---
|
||||
|
||||
### **3\. 自建NVR(开发者/技术用户)**
|
||||
|
||||
#### **① FFmpeg + 脚本**
|
||||
|
||||
- **方案**:
|
||||
|
||||
- 用FFmpeg录制RTSP流到本地:
|
||||
|
||||
|
||||
```bash
|
||||
ffmpeg -i rtsp://摄像头IP -c copy -f segment -strftime 1 "recordings/%Y-%m-%d_%H-%M-%S.mp4"
|
||||
```
|
||||
|
||||
- 配合`cron`定时任务或Python脚本管理存储。
|
||||
|
||||
|
||||
#### **② Shinobi、ZoneMinder(Docker部署)**
|
||||
|
||||
- **特点**:
|
||||
|
||||
- 开源NVR,可通过 **Docker for Mac** 运行(需x86 Mac)。
|
||||
|
||||
- **部署命令**:
|
||||
|
||||
|
||||
```bash
|
||||
docker run -d -p 8080:8080 -v /path/to/storage:/opt/shinobi/videos shinobisystems/shinobi
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### **4\. 选择建议**
|
||||
|
||||
| **需求** | **推荐方案** |
|
||||
| --- | --- |
|
||||
| 简单家用,macOS原生 | SecuritySpy |
|
||||
| 免费开源 | iSpy 或 Docker(Shinobi) |
|
||||
| 企业级多摄像头 | Synology NAS 或 Milestone |
|
||||
| 远程访问+云存储 | Reolink/萤石云摄像头 |
|
||||
| 技术用户自定义 | FFmpeg + 脚本 或 Docker自建NVR |
|
||||
|
||||
---
|
||||
|
||||
### **注意事项**
|
||||
|
||||
- **摄像头兼容性**:优先选择支持 **ONVIF** 或 **RTSP** 协议的摄像头(如海康威视、大华、Amcrest)。
|
||||
|
||||
- **存储规划**:视频文件占用空间大(如1080P摄像头约1GB/小时),建议外接硬盘或NAS。
|
||||
|
||||
- **Mac长期开机**:NVR需24/7运行,建议关闭Mac睡眠模式(`系统设置 > 电池 > 电源适配器`)。
|
||||
|
||||
|
||||
如果需要具体型号推荐或部署帮助,可以进一步说明需求(如摄像头数量、预算等)!
|
||||
Executable
+9
@@ -0,0 +1,9 @@
|
||||
|
||||
|
||||
- api.note.sx
|
||||
token:ae2dcd41012548ce5cd384142db6bec0
|
||||
url:api.note.sx
|
||||
purpose: share note over note.sx
|
||||
|
||||
|
||||
|
||||
Executable
+145
@@ -0,0 +1,145 @@
|
||||
---
|
||||
createDate: <% tp.file.creation_date("YYYY-MM-DD HH:mm")%>: 星期二, 七月 22日 2025, 1:32:52 下午
|
||||
date modified: 星期日, 七月 27日 2025, 6:04:28 晚上
|
||||
---
|
||||
创建日期:[[../80-数据归档/91-日记归档/910-工作日记/202507/2025-07-03]]
|
||||
|
||||
现有笔记软件非常多,各有特点,总结一下:
|
||||
|
||||
## 笔记软件
|
||||
|
||||
### Obsidian
|
||||
记录每天工作和学习
|
||||
- 移动端设置需要使用Remotely Save插件-WebDav,关键点:==仓库名称要和电脑端的Obsidian的仓库名一致!!==再点击Greate,进入插件市场安装Remotely Save设置远程Vault对应的url(WebDav)
|
||||
- iOS移动端git插件:同步忽略.git等文件。
|
||||
### DayOne
|
||||
- 记录每天的心情
|
||||
### 手记
|
||||
- 记录旅游-(iOS)
|
||||
### 语雀
|
||||
- 记录技术和工作,适合编写专业性知识库
|
||||
### Joplin
|
||||
- 编写/修改博客-/语雀,导入/导出比较方便,配合网页裁剪,作为网络资源入口
|
||||
### MWebPro
|
||||
- 博客发布
|
||||
导入从Joplin抓取的文章,进行修整,图床选择,再发布到阿里云ECS
|
||||
|
||||
逐步被OB取代!
|
||||
### Memos
|
||||
- 替代DayOne
|
||||
- Mac客户端 1.0 基本不可用
|
||||
|
||||
### CuboX
|
||||
- 移动端收集各类文章信息,自动同步到OB
|
||||
-
|
||||
### DevonThink
|
||||
|
||||
- 配合OB,成为OB资料入口
|
||||
- 各类导入、资源的汇集
|
||||
-
|
||||
## 使用介绍
|
||||
|
||||
### Joplin问题
|
||||
|
||||
- Joplin 导出格式:JEX 、RAW 如何选择?
|
||||
|
||||
|
||||
**JEX 格式**:生成一个包含所有笔记、笔记本、标签和资源的单一压缩文件,适合备份和在 Joplin 内部恢复
|
||||
|
||||
**RAW 格式**:导出为包含所有笔记和资源的文件夹和文件结构,方便在 Joplin 之外访问或编辑笔记
|
||||
|
||||
选择取决于你的需求:如果你需要完整备份和恢复,请导出 JEX;如果你需要直接访问笔记文件,请导出 RAW
|
||||
|
||||
如果需要更换Joplin位置,先导出为一个JEX文件,然后在客户端新建一个配置,设置好基本目录和同步文件夹,再导入JEX文件即可。
|
||||
RAW导出主要是为了方便其他MD软件访问。
|
||||
|
||||
- IOS连接不上
|
||||
需要iOS设备安装证书使用https才能成功!详见下面的链接:
|
||||
https://zhuanlan.zhihu.com/p/622510323
|
||||
|
||||
https://k.sina.cn/article_5953190046_162d6789e06701u6e4.html?from=tech&sinawapsharesource=newsapp&wm=3200_0025
|
||||
|
||||
|
||||
|
||||
### Devonthink
|
||||
|
||||
- bonjour connection
|
||||
需要一些条件:
|
||||
```
|
||||
为了帮助阐明使用 Bonjour 的条件,并展示设置此类同步的简单步骤,以下是注意事项和要遵循的步骤。
|
||||
|
||||
要求
|
||||
Bonjour 可用于在设备之间同步,如果:
|
||||
|
||||
这些设备位于同一网络上,请注意它无法通过 VPN 运行。
|
||||
该网络是专用网络或允许 Bonjour 连接或非标准端口的网络。(公共和公司 WiFi 有时不允许这些。
|
||||
您的防火墙或 Little Snitch 等应用程序已关闭或为 DEVONthink 的流量添加了例外。
|
||||
我们的应用程序必须具有 Apple 强制要求的本地网络访问权限。
|
||||
在 macOS Sequoia 上,您必须在“系统设置”>“隐私和安全”>“本地网络”中启用 DEVONthink。
|
||||
在 iOS/iPadOS 上,在“设置”>“隐私和安全”>“本地网络”中启用 DEVONthink。
|
||||
两台设备都处于打开状态并运行 DEVONthink / DEVONthink To Go(并且 DEVONthink To Go 必须处于活动状态,无论同步方法如何)。
|
||||
注意:在可能不允许 Bonjour 流量的情况下,您可以通过标准 Lightning 数据线将 iOS 设备连接到 Mac,以创建用于 Bonjour 同步的临时网络。
|
||||
|
||||
如果您要使用 Mac 作为 Bonjour 服务器......
|
||||
在服务器上 Mac...
|
||||
在 DEVONthink......
|
||||
|
||||
首选项>同步> Bonjour 选项...
|
||||
选中启用传入连接。
|
||||
将端口留空,除非您有要分配的已知端口。
|
||||
输入用于对连接设备进行身份验证的强制密码。
|
||||
让 DEVONthink 运行。
|
||||
在客户端 Mac 上...
|
||||
在 DEVONthink...
|
||||
|
||||
在首选项>同步中,您应该会看到服务器 Mac 可用。
|
||||
选中复选框以启用连接并输入您在服务器上指定的 Bonjour 密码 Mac。
|
||||
在两台 Mac 上打开的数据库将显示在“本地”部分中。启用要合并和同步的那些。
|
||||
未打开或可导入的数据库显示在“远程”部分中。双击数据库以导入它们,并将它们保存到主目录中的 ~/Databases 文件夹中。
|
||||
在移动设备上...
|
||||
在 DEVONthink To Go...
|
||||
|
||||
进入“设置”>“同步:位置”,然后按“编辑”链接(如果您已经启用了同步位置)。
|
||||
您应该会看到 Mac 的同步位置。单击它旁边的绿色加号按钮。
|
||||
根据您的选择设置选项,然后触摸保存。
|
||||
输入您在 Mac 上输入的 Bonjour 密码。
|
||||
连接后,触摸同步位置以显示数据库列表,然后拨动要导入的数据库旁边的开关。
|
||||
上述情况是使用 Mac 和移动设备时最常见的情况。
|
||||
|
||||
如果您仅使用 iOS 或打算使用 DEVONthink To Go 作为 Bonjour 服务器......
|
||||
在 DEVONthink To Go...
|
||||
|
||||
进入设置> Bonjour。
|
||||
输入用于对连接设备进行身份验证的强制密码。
|
||||
将端口留空,让 DEVONthink To Go 自行分配一个。
|
||||
打开启用传入连接的开关。
|
||||
然后,针对您使用的客户端类型(Mac 或移动设备)按照上述相应步骤作。
|
||||
|
||||
注意:虽然可以同时启用 DEVONthink 和 DEVONthink To Go 作为 Bonjour 服务器,但您不应将两者设置为同一数据库的服务器。
|
||||
|
||||
故障 排除
|
||||
如果您在 Bonjour 同步时遇到问题,请按以下顺序检查这些内容......
|
||||
|
||||
检查窗口>登录 DEVONthink,并在 DEVONthink To Go 底部工具栏的同步图标上查找一个三角形。这些表示警告或错误。
|
||||
如果没有报告任何问题,请重新检查本文开头的要求。不要理所当然地认为“什么都没有改变”。
|
||||
如果这些内容得到验证,请尝试退出并在客户端和服务器设备上重新启动应用程序。
|
||||
如果这不能解决问题,请尝试在充当 Bonjour 服务器的设备上更改 Bonjour 密码。然后点击客户端设备上的同步位置,查看系统是否提示您输入新密码。
|
||||
如果这不能解决问题,请从客户端中删除同步位置。然后在服务器和客户端设备上退出并重新启动我们的应用程序。最后,在客户端设备上再次添加同步位置。
|
||||
```
|
||||
https://discourse.devontechnologies.com/t/switching-sync-method-to-bonjour/68950/4
|
||||
|
||||
设置好后,同步的双方都要打开enable bonjour,在Locations中就可以看到对方的标识,选中后再选需要下载的数据库,同样的,对方想要本方的数据库,也可以如上操作!
|
||||
同步条件必须是双方都要开打enable设置,完成彼此的密码验证!
|
||||
|
||||
- webdav
|
||||
|
||||
这个地方有个坑:如果路径中有汉字,肯定OK按钮不能点击
|
||||
另外,我的设备开了Clash代理,如果输入域名,webdav不能连通,关掉Clash,就可以正常完成webdav同步!
|
||||
|
||||
- Devonthink数据库概念
|
||||
Inboxes全局:
|
||||
每个设备都包含至少一个Inbox默认数据库,
|
||||
Inbox+DB1+DB2
|
||||
OB与DT双链非常方便本机阅读,如果同步到远端DT后,在远端DT是不能看到OB笔记内容的,只是一个链接,不同过去的是索引数据!
|
||||
这种情况就没有必要做类似的OB的同步到另一台DT上阅读!
|
||||
【😀提示】我新建的一个临时数据库,同步到远端mini后,如果用的还是OB的目录链接,在远端也是看不到的,在远端新建一个群和一个文本文件后,就正常看到内容了!
|
||||
Executable
BIN
Binary file not shown.
Executable
BIN
Binary file not shown.
Executable
BIN
Binary file not shown.
Executable
BIN
Binary file not shown.
Executable
BIN
Binary file not shown.
Executable
BIN
Binary file not shown.
Executable
BIN
Binary file not shown.
@@ -0,0 +1,203 @@
|
||||
---
|
||||
title: "CentOS7安装TCP BBR加速_tcp加速脚本-CSDN博客"
|
||||
source: "https://blog.csdn.net/weixin_41292299/article/details/112299913?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-1-112299913-blog-131889056.235^v43^pc_blog_bottom_relevance_base9&spm=1001.2101.3001.4242.2&utm_relevant_index=4"
|
||||
author:
|
||||
- "[[成就一亿技术人!]]"
|
||||
- "[[hope_wisdom 发出的红包]]"
|
||||
published:
|
||||
created: 2025-12-01
|
||||
description: "文章浏览阅读1.1k次。本文指导如何在CentOS 7系统中安装并启用Google的BBR拥塞控制算法,以优化服务器吞吐量和降低延迟,包括版本检查、脚本安装、验证设置和启动过程。"
|
||||
tags:
|
||||
- "clippings"
|
||||
---
|
||||
AI 搜索
|
||||
|
||||
## CentOS7安装TCP BBR加速
|
||||
|
||||
最新推荐文章于 2025-09-09 10:36:04 发布
|
||||
|
||||
原创 于 2021-01-06 23:16:33 发布 · 1.1k 阅读 · 2 ·
|
||||
|
||||
CC 4.0 BY-SA版权
|
||||
|
||||
版权声明:本文为博主原创文章,遵循 [CC 4.0 BY-SA](http://creativecommons.org/licenses/by-sa/4.0/) 版权协议,转载请附上原文出处链接和本声明。
|
||||
|
||||
文章标签:
|
||||
|
||||
[#linux](https://so.csdn.net/so/search/s.do?q=linux&t=all&o=vip&s=&l=&f=&viparticle=&from_tracking_code=tag_word&from_code=app_blog_art)
|
||||
|
||||
本文指导如何在CentOS 7系统中安装并启用Google的BBR拥塞控制算法,以优化服务器吞吐量和降低延迟,包括版本检查、脚本安装、验证设置和启动过程。
|
||||
|
||||
### CentOS7安装TCP BBR加速
|
||||
|
||||
BBR(Bottleneck Bandwidth and Round-trip propagation time)是 Google 提出的一种新型拥塞控制算法,可以使Linux服务器显著地提高 [吞吐量](https://so.csdn.net/so/search?q=%E5%90%9E%E5%90%90%E9%87%8F&spm=1001.2101.3001.7020) 和减少TCP连接的延迟。Google已经开源了该算法,并提交到了Linux内核,从4.9开始,Linux内核已经用上了该算法。
|
||||
|
||||
#### 查看当前Centos的版本
|
||||
|
||||
cat /etc/ [redhat](https://so.csdn.net/so/search?q=redhat&spm=1001.2101.3001.7020) -release
|
||||
|
||||
大于7.3即可
|
||||
|
||||
#### 执行一键安装脚本
|
||||
|
||||
[wget](https://so.csdn.net/so/search?q=wget&spm=1001.2101.3001.7020) --no- check -certificate https://github.com/teddysun/across/raw/master/bbr.sh && chmod +x bbr.sh &&./bbr.sh
|
||||
|
||||
耐心等待安装完毕
|
||||
|
||||
#### 安装完成后会提示重启系统
|
||||
|
||||
立即重启,输入:y ,等待重启完毕
|
||||
|
||||

|
||||
|
||||
#### 验证当前的TCP算法
|
||||
|
||||
\[root@hwsrv-781523 ~\]# sysctl net.ipv4.tcp\_available\_congestion\_control
|
||||
net.ipv4.tcp\_available\_congestion\_control = bbr cubic reno
|
||||
|
||||
输出结果包含了:bbr 表示成功
|
||||
|
||||
#### 查看BBR是否启动
|
||||
|
||||
\[root@hwsrv-781523 ~\]# sysctl net.ipv4.tcp\_congestion\_control
|
||||
net.ipv4.tcp\_congestion\_control = bbr
|
||||
|
||||
#### 查看BBR是否已经载入了系统模块
|
||||
|
||||
\[root@hwsrv-781523 ~\]# lsmod | grep bbr
|
||||
tcp\_bbr 20480 32 [*Linux* 系统部署 *BBR* 服务器 *加速* 软件](https://blog.csdn.net/wangzongyu/article/details/131029859)
|
||||
|
||||
[背锅神童的博客](https://blog.csdn.net/wangzongyu)
|
||||
|
||||
06-29 4218[*BBR* *加速* 是种解决 *TCP* 拥堵的算法,由Google团队2016年推出,简单来说就是 *加速* 网络 *TCP* 传输协议的新算法,通过算法优化传输速度,避免路由堵塞现象的产生, *BBR* 利用瓶颈带宽和往返传播时间,被认为是迄今为止跨越不同路由发送数据的最快方法,当数据路由拥挤时,能够更有效地处理流量](https://blog.csdn.net/wangzongyu/article/details/131029859)[*centos* *7* 开启 *BBR* *加速*](https://blog.csdn.net/m0_57490668/article/details/115967076)
|
||||
|
||||
[SRE运维 网络 系统 安全](https://blog.csdn.net/m0_57490668)
|
||||
|
||||
04-21 903[*BBR* 主要解决两个问题 1、再有一定丢包率的网络链路上充分利用带宽。非常适合高延迟,高带宽的网络链路。 2、降低网络链路上的buffer占用率,从而降低延迟。非常适合慢速接入网络的用户。 项目地址:https://github.com/google/ *bbr* 1、升级内核: 开启 *BBR* 要求 4.10 以上版本 *Linux* 内核,查看当前内核版本: \[root@localhost ~\]# uname -r 3.10.0-514.el *7*.x86\_64 2、当前内核版本低于 4.10,可使用](https://blog.csdn.net/m0_57490668/article/details/115967076)[给服务器 *安装* *BBR* *加速* 网络传输速度\_ *bbr* *加速* *脚本*](https://blog.csdn.net/qq_60548077/article/details/130486634)
|
||||
|
||||
11-27[推荐使用以下 *安装* *脚本*,*安装* 内核并开启 *加速* 即可。 一、推荐 *脚本* bash<(curl -Lso- https://git.io/kernel.sh) 二、千影 *脚本* wget -N --no-check-certificate "https://raw.githubusercontent.com/chiakge/ *Linux* -NetSpeed/master/ *tcp*.sh" chmod +x *tcp*.sh./ *tcp*.sh 提示:*安装* 内核后需要重启,重启前记得看看...](https://blog.csdn.net/qq_60548077/article/details/130486634)[...内核 *TCP* *加速* 算法 *BBR* Lotserver魔改版-一键 *安装* *脚本* 工具-支持...](https://download.csdn.net/download/weixin_43880734/90984923)
|
||||
|
||||
11-24[在这一背景下,出现了针对 *Linux* 内核 *TCP* *加速* 算法 *BBR* 的魔改版— *BBR* Lotserver。 *BBR* Lotserver的魔改版旨在进一步提高网络性能,特别是针对特定的操作系统版本,如 *Centos* 6、Debian *7* 和Ubuntu14等。这种魔改版可能会包含针对特定硬件和软件环境优化的代码,以实现更佳的网络性能。 为了简化 *BBR* Lotserver魔改版的 *安装* 和使用过程,开发出了...](https://download.csdn.net/download/weixin_43880734/90984923)[*linux* 开启 *bbr* *加速*](https://blog.csdn.net/yurisa_chan/article/details/151354773)
|
||||
|
||||
[
|
||||
|
||||
最新发布
|
||||
|
||||
](https://blog.csdn.net/yurisa_chan/article/details/151354773)
|
||||
|
||||
[yurisa\_chan的博客](https://blog.csdn.net/yurisa_chan)
|
||||
|
||||
09-09 151[*BBR* 要求 *Linux* 。2、临时开启,重启后失效。临时开启运行以下两个命令。](https://blog.csdn.net/yurisa_chan/article/details/151354773)[...*TCP* 拥塞控制技术 *TCP* - *BBR* 一键 *安装* *脚本* \_debian *安装* *bbr* 程序-CSDN博...](https://blog.csdn.net/wsyzxss/article/details/78740149)
|
||||
|
||||
10-31[本文提供了一键 *安装* *脚本*,适用于Debian/Ubuntu系统,帮助用户轻松 *安装* *TCP* - *BBR* 拥塞控制技术。 *脚本* 支持自定义内核版本,并包含详细的 *安装* 步骤与注意事项。 https://www.bbaaz.com/thread-22-1-1.html 注意:*TCP* - *BBR* 和锐速一样,不支持Openvz,查看本教程之前,请先确定你的VPS的虚拟化技术!](https://blog.csdn.net/wsyzxss/article/details/78740149)[防御SYN洪水攻击](https://blog.csdn.net/zkaipmoo/article/details/51967059)
|
||||
|
||||
11-28[本文介绍如何通过调整系统参数来有效防御SYN洪水攻击,包括将 *tcp* \_synack\_retries设置为0以 *加速* 回收半连接,并增大 *tcp* \_max\_syn\_backlog以容纳更多的连接请求。 调整系统参数挡攻击 第一个参数 *tcp* \_synack\_retries = 0是关键,表示回应第二个握手包(SYN+ACK包)给客户端IP后,如果收不到第三次握手包(ACK包)后,不进行...](https://blog.csdn.net/zkaipmoo/article/details/51967059)[*安装* *BBR* 教程,来 *加速* VPS](https://blog.csdn.net/u012241616/article/details/136606703)
|
||||
|
||||
[云博客\_资源宝分享](https://blog.csdn.net/u012241616)
|
||||
|
||||
03-10 3024[*安装* *BBR* 教程,来 *加速* VPS](https://blog.csdn.net/u012241616/article/details/136606703)[*CentOS* *7* 上 *安装* *BBR* *加速*](https://blog.csdn.net/wwwcomcn123/article/details/104475816)
|
||||
|
||||
[wwwcomcn123的专栏](https://blog.csdn.net/wwwcomcn123)
|
||||
|
||||
02-24 865[*CentOS* *7* 上 *安装* *BBR* *加速* 原文地址: *CentOS* *7* 上 *安装* *BBR* *加速*](https://blog.csdn.net/wwwcomcn123/article/details/104475816)[udpspeeder网络 *加速* 工具源码\_udpspeeder资源](https://download.csdn.net/download/mrtos001/10593874)
|
||||
|
||||
11-15[该代理插件支持 *Tcp* 、Udp通讯协议,支持市面所有游戏及进程代理 *加速* 支持WinXP至Win10所有Windows系统,兼容性超级好 格式:zip资源大小:1.3MB 宇宙 *加速* 器VC源代码(含驱动代码) 浏览:42 4星 · 用户满意度95% 用过宇宙 *加速* 器的人,应该知道这个是什么东西。 驱动技术很高深。 宇宙 *加速* 器VC源代码(含驱动代码)...](https://download.csdn.net/download/mrtos001/10593874)[*TCP* -TIMEOUT.rar\_ *tcp* timeo\_CFG *TCP* /IPTIMEOUT\_ *TCP* 超时\_超时三次...](https://download.csdn.net/download/weixin_42656416/86637845)
|
||||
|
||||
11-28[...理解\` *tcp* \_recvmsg\`的内部实现有助于更深入地掌握 *TCP* /IP协议栈的工作原理及其实现细节。 格式:doc资源大小:*7* 2.5KB页数:11 date-timeout-interval:一个简单的npm计时包。 https 浏览:151 *安装* 方式运行npm install --save date-timeout-interval用法将该库导入到您的 *脚本* 中,如下所示: const {Timeout, Interval...](https://download.csdn.net/download/weixin_42656416/86637845)[*Linux* 手动 *安装* *BBR* *加速* 器( *TCP* *加速* 器)](https://blog.csdn.net/weixin_44082342/article/details/126624911)
|
||||
|
||||
[柠木的博客](https://blog.csdn.net/weixin_44082342)
|
||||
|
||||
09-05 4294[*Linux* 手动 *安装* *BBR* *加速* 器( *TCP* *加速* 器)](https://blog.csdn.net/weixin_44082342/article/details/126624911)[*CentOS* *7* *安装* *BBR* 教程](https://blog.csdn.net/qq_43550613/article/details/83512518)
|
||||
|
||||
[
|
||||
|
||||
热门推荐
|
||||
|
||||
](https://blog.csdn.net/qq_43550613/article/details/83512518)
|
||||
|
||||
[ronikimi的博客](https://blog.csdn.net/qq_43550613)
|
||||
|
||||
10-30 1万+[自Google于2016年9月宣布将 *BBR* 开源起,世界各国的极客们就开始研究了,对于常年受制于特殊网络环境下的我国民众,长期都在寻找各种提速的方法。对于 *bbr* 而言,通俗来讲就是对 *Linux* 内核 *TCP* 协议的优化从而达到提速的目的。但是注意的是,1) *bbr* 不能改变地理位置的限制,也就是说他不会改变网络的线路,该绕还是绕;2) *安装* 和开启 *bbr* 往往要更新内核,因此对于VPS而言,推荐选择KVM构架。本文将...](https://blog.csdn.net/qq_43550613/article/details/83512518)[*centos* *7* 开启 *bbr* *加速* 黑科技](https://blog.csdn.net/wyongqing/article/details/84476230)
|
||||
|
||||
[妙音](https://blog.csdn.net/wyongqing)
|
||||
|
||||
11-25 1577[*BBR* 通过优化和控制 *TCP* 的拥塞,充分利用带宽并降低延迟,起到神奇的 *加速* 效果。 测试环境 *centos* *7*.5 *加速* 效果,没有那么跨张,但是下载从50K *加速* 到400K 下载更换内核 rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org rpm -Uvh http://www.elrepo.org/elrepo-release- *7*...](https://blog.csdn.net/wyongqing/article/details/84476230)[*CentOS* *7* 开启 *BBR* *加速*](https://blog.csdn.net/NOOBYY/article/details/90903200)
|
||||
|
||||
[NOOBYY的博客](https://blog.csdn.net/NOOBYY)
|
||||
|
||||
06-05 9956[Google *BBR* 是一款免费开源的 *TCP* 拥塞控制传输控制协议, 可以使 *Linux* 服务器显著提高吞吐量和减少 *TCP* 连接的延迟。 Step1: 1、yum系统更新 yum update 2、查看系统版本 cat /etc/redhat-release 输出如下则表示已升级到 *7*.6 *CentOS* *Linux* release *7*.6.1810 (Core) 3、 *安装* elrepo并升级内核 r...](https://blog.csdn.net/NOOBYY/article/details/90903200)[*centos* *7* *安装* *bbr* *加速*](https://wenku.csdn.net/answer/21hwozta93)
|
||||
|
||||
03-19[在 *CentOS* *7* 中,首先需要验证内核版本是否支持 *TCP* *BBR* 。通过运行以下命令检查当前系统的内核版本: \`\`\`bash uname -r \`\`\` 如果内核版本低于 \`4.9\`,则不支持原生的 *TCP* *BBR* 功能\[^1\]。 #### 开启模块加载 为了...](https://wenku.csdn.net/answer/21hwozta93)[给服务器 *安装* *BBR* *加速* 网络传输速度](https://devpress.csdn.net/v1/article/detail/130486634)
|
||||
|
||||
[qq\_60548077的博客](https://blog.csdn.net/qq_60548077)
|
||||
|
||||
05-04 1610[*BBR* 是Google开源的一种 *TCP* 网络拥塞优化算法,开启 *BBR* 可以对你网站访问速度起到一定的优化。提示: *安装* 内核后需要重启,重启前记得看看内核是否已经 *安装* 上了,重启后再执行一次 *脚本* 开启 *加速* 。可前往Github、Gitee等获取,个人不建议使用百度上面的 *脚本* 。推荐使用以下 *安装* *脚本* , *安装* 内核并开启 *加速* 即可。](https://devpress.csdn.net/v1/article/detail/130486634)[什么是 *BBR*](https://blog.csdn.net/cwtxyi/article/details/120113229)
|
||||
|
||||
[地推日记](https://blog.csdn.net/cwtxyi)
|
||||
|
||||
09-05 3531[谷歌开发出了一种 *加速* 网络传输协议 *TCP* 的新算法,这种算法通过优化传输速度,避免路由堵塞现象的产生。 *BBR* 利用瓶颈带宽和往返传播时间,被认为是迄今为止跨越不同路由发送数据的最快方法,当数据路由拥挤时,能够更有效地处理流量。目前 Google 已经将 *BBR* 投入 YouTube 使用。有消息透露, *BBR* 通过优化使 YouTube 流量平均增长了 4%,在其他一些方面则达到了 14%。 Google *BBR* *TCP* 拥堵算法 什么是 *TCP* ? *TCP* 始于 19 *7* 0 年,作为协议套件的一部分, TC](https://blog.csdn.net/cwtxyi/article/details/120113229)[*BBR* *加速*](https://blog.csdn.net/qq_35081500/article/details/107718700)
|
||||
|
||||
[Lv骚年](https://blog.csdn.net/qq_35081500)
|
||||
|
||||
07-31 1308[依次执行如下三行代码,下载一键 *安装* *脚本* ->赋予执行权限->执行 *脚本* : wget -N --no-check-certificate "https://raw.githubusercontent.com/chiakge/ *Linux* -NetSpeed/master/ *tcp*.sh" chmod +x *tcp*.sh./ *tcp*.sh 选择 *7*](https://blog.csdn.net/qq_35081500/article/details/107718700)[国外 *centos* 服务器 *安装* *BBR* /锐速一键 *加速* *脚本*](https://devpress.csdn.net/v1/article/detail/143024894)
|
||||
|
||||
[2401\_85199215的博客](https://blog.csdn.net/2401_85199215)
|
||||
|
||||
10-17 1273[*BBR* 目的是要尽量跑满带宽,并且尽量不要有排队的情况。如果如上图显示:-bash: wget: command not found 请先执行一下代码 *安装* wegt后再执行 *脚本* 。一直到出现重启提示,输入字母:y,然后回车,等待服务器重启完成后,再执行本教程顶部的 *脚本* 。这里推荐 *安装* *BBR* plus内核,输入数字键:2,然后回车,等待命令执行。开启 *BBR* *加速* 也非常简单,这边提供了可用的一键 *安装* *脚本* 。最后会显示 *BBR* plus启动成功的字样,即可正常使用了。输入数字键: *7* ,然后回车,等待命令执行。](https://devpress.csdn.net/v1/article/detail/143024894)[介绍在 *CentOS* *7* 上部署 *BBR* 的详细过程](https://blog.csdn.net/desertworm/article/details/116759380)
|
||||
|
||||
[伊森日志](https://blog.csdn.net/desertworm)
|
||||
|
||||
05-14 1490[介绍在 *CentOS* *7* 上部署 *BBR* 的详细过程 *BBR* 简介:(Bottleneck Bandwidth and RTT)是一种新的拥塞控制算法,由Google开发。有了 *BBR* , *Linux* 服务器可以显着提高吞吐量并减少连接延迟 ROOT登陆后,终端执行以下命令 1.查看当前内核版本 uname -r 显示当前内核为3.10.0,因此我们需要更新内核 2.使用ELRepo RPM仓库升级内核 rpm --import https://www.elrepo.org/RPM-GPG-KEY-...](https://blog.csdn.net/desertworm/article/details/116759380)[*TCP* *BBR* - 如何 *安装* 、启动、停止 *BBR* !](https://blog.csdn.net/weixin_30920597/article/details/94787201)
|
||||
|
||||
[weixin\_30920597的博客](https://blog.csdn.net/weixin_30920597)
|
||||
|
||||
08-23 529[*TCP* *BBR* 从 *Linux* 4.9 内核开始,就作为它内核的一部分存在了,如果想使用 *BBR* ,那么首先就是判断内核版本是否大于4.9,如果符合版本标准,那么直接启动 *BBR* 就可以了,如果低于4.9,升级内核之后启动就行了。 一,使用一键 *脚本* *安装* 和启动 *BBR* 。 推荐使用秋水逸冰的一键 *脚本* ,具体可以参考: https://www.cnblogs.com/sunylat/p...](https://blog.csdn.net/weixin_30920597/article/details/94787201)[揭秘 *BBR* *加速* ,以及如何在服务器上 *安装* *BBR* 以优化访问速度](https://devpress.csdn.net/v1/article/detail/131889056)
|
||||
|
||||
[技术博客](https://blog.csdn.net/yangxiao_hui)
|
||||
|
||||
07-24 9081[本文介绍了 *BBR* *加速* ,一项由Google团队开发的 *TCP* 拥塞控制技术。我们了解了 *BBR* *加速* 的重要性以及其在提高网站响应速度和网络传输效率方面的优势。针对Ubuntu系统,我们提供了 *安装* *BBR* *加速* 的简明步骤,并强调了注意事项。如果您想提升网站的用户体验和网络传输性能, *BBR* *加速* 是一个值得尝试的有效技术。](https://devpress.csdn.net/v1/article/detail/131889056)
|
||||
|
||||
评论
|
||||
|
||||
被折叠的 0 条评论 [为什么被折叠?](https://blogdev.blog.csdn.net/article/details/122245662)[到【灌水乐园】发言](https://bbs.csdn.net/forums/FreeZone)
|
||||
|
||||
添加红包
|
||||
|
||||
实付 元
|
||||
|
||||
[使用余额支付](https://blog.csdn.net/weixin_41292299/article/details/)
|
||||
|
||||
点击重新获取
|
||||
|
||||
扫码支付
|
||||
|
||||
钱包余额 0
|
||||
|
||||
抵扣说明:
|
||||
|
||||
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
|
||||
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。
|
||||
|
||||
[余额充值](https://i.csdn.net/#/wallet/balance/recharge)
|
||||
|
||||
举报
|
||||
|
||||
[](https://mall.csdn.net/vip?utm_source=25618_vip_blogrighticon)
|
||||
|
||||
[AI 搜索](https://ai.csdn.net/chat/?utm_source=cknow_pc_blog_right_hover) [智能体](https://ai.csdn.net/chat/cmd?utm_source=cknow_pc_blog_right_hover) [AI 编程](https://ai.csdn.net/chat/coding?utm_source=cknow_pc_blog_right_hover) [AI 作业助手](https://ai.csdn.net/chat/homework?utm_source=cknow_pc_blog_right_hover)
|
||||
|
||||
隐藏侧栏 
|
||||
|
||||
程序员都在用的中文IT技术交流社区
|
||||
|
||||

|
||||
|
||||
专业的中文 IT 技术社区,与千万技术人共成长
|
||||
|
||||

|
||||
|
||||
关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!
|
||||
|
||||
客服 返回顶部
|
||||
|
||||

|
||||
@@ -0,0 +1,149 @@
|
||||
---
|
||||
title: "networkQuality:macOS 中隐藏的网络测试工具(命令行)"
|
||||
source: "https://www.sysgeek.cn/macos-networkquality/"
|
||||
author:
|
||||
- "[[海猴子]]"
|
||||
published: 2023-12-18
|
||||
created: 2025-12-02
|
||||
description: "掌握 macOS 中隐藏的 networkQuality 命令,优化你的网络连接,提升连接速度。详解网络性能测试和诊断。"
|
||||
tags:
|
||||
- "clippings"
|
||||
---
|
||||

|
||||
|
||||

|
||||
|
||||
这里,我们有一个有趣而强大的工具,即 macOS 12 Monterey 及其更新版本中引入的 `networkQuality` 命令。它被用于评估网络质量和诊断潜在的网络问题,主要关注上传下载速度以及网络的响应能力。
|
||||
|
||||
## 运行默认测试
|
||||
|
||||
如果你想利用 Network Quality 工具进行测试,只需打开 macOS 中的「终端」应用程序并输入以下命令:
|
||||
|
||||
** 复制 ** 复制 ** 复制 ** 复制 ** 复制 ** 复制
|
||||
|
||||
** 复制
|
||||
```
|
||||
networkQuality -v
|
||||
```
|
||||
|
||||
执行此命令将触发一系列默认测试,并将结果直观地展示在「终端」窗口中。
|
||||
|
||||

|
||||
|
||||
networkQuality 测试结果
|
||||
|
||||
| 指标 | 单位 | 说明 |
|
||||
| --- | --- | --- |
|
||||
| Plink capacity | Mbps | 上行速度 |
|
||||
| Downlink capacity | Mbps | 下行速度 |
|
||||
| Uplink bytes transferred | 字节 | 上行传输的字节数 |
|
||||
| Downlink bytes transferred | 字节 | 下行传输的字节数 |
|
||||
| Uplink Flow count | 次 | 上行流量计数 |
|
||||
| Downlink Flow count | 次 | 下行流量计数 |
|
||||
| Idle Latency | 毫秒 | 空闲延迟 |
|
||||
| Responsiveness | RPM | 响应数 |
|
||||
|
||||
RPM 表示每分钟往返次数。响应数越高,表示网络的响应能力越好。
|
||||
|
||||
## Private Relay 测试
|
||||
|
||||
除了基本功能外,Network Quality 工具还为 Apple 的 Private Relay 提供支持。Private Relay 是一项功能强大的服务,通过两个独立的服务器对所有网络流量进行加密和路由,以提供额外的隐私和安全性。要在工具中启用 Private Relay,只需在命令中添加 `-p` 开关:
|
||||
|
||||
** 复制 ** 复制 ** 复制 ** 复制 ** 复制
|
||||
|
||||
** 复制
|
||||
```
|
||||
networkQuality -v -p
|
||||
```
|
||||
|
||||
## 自定义配置
|
||||
|
||||
为了满足个性化需求,你可以根据具体情况自定义 Network Quality 工具的配置。默认情况下,工具通过 `https://mensura.cdn-apple.com/api/v1/gm/config` 从 Apple 获取配置文件。但你可以通过使用 `-C` 参数指定不同的配置 URL 来进行自定义。
|
||||
|
||||
Apple 的默认配置如下:
|
||||
|
||||
** 复制 ** 复制 ** 复制 ** 复制
|
||||
|
||||
** 复制
|
||||
```
|
||||
{ "version": 1,
|
||||
"test_endpoint": "hkhkg3-edge-bx-014.aaplimg.com",
|
||||
"urls": {
|
||||
"small_https_download_url": "https://mensura.cdn-apple.com/api/v1/gm/small",
|
||||
"large_https_download_url": "https://mensura.cdn-apple.com/api/v1/gm/large",
|
||||
"https_upload_url": "https://mensura.cdn-apple.com/api/v1/gm/slurp",
|
||||
"small_download_url": "https://mensura.cdn-apple.com/api/v1/gm/small",
|
||||
"large_download_url": "https://mensura.cdn-apple.com/api/v1/gm/large",
|
||||
"upload_url": "https://mensura.cdn-apple.com/api/v1/gm/slurp"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
需要注意的是,Apple 的 `test_endpoint` 在请求时可能会变更,会选择一个就近的(不同)服务器,从而减少延迟并分散服务器负载。
|
||||
|
||||
比如,如果你有一个位于 `https://networkquality.example.com/config` 的自定义配置文件,可以通过以下命令运行 Network Quality 工具,来使用自定义配置:
|
||||
|
||||
** 复制 ** 复制 ** 复制
|
||||
|
||||
** 复制
|
||||
```
|
||||
networkQuality -v -C https://networkquality.example.com/config
|
||||
```
|
||||
|
||||
通过这个命令,工具将按照自定义配置文件中指定的设置执行测试。要为 Network Quality 工具建立自己的测试服务器,可以在项目的 [GitHub 页面](https://github.com/network-quality/goserver) 上找到详细的文档。
|
||||
|
||||
## networkQuality 命令参数
|
||||
|
||||
** 复制 ** 复制
|
||||
|
||||
** 复制
|
||||
```
|
||||
USAGE: networkQuality [-C <configuration_url>] [-c] [-d] [-f <comma-separated list>] [-h] [-I <network interface name>] [-k] [-p] [-r host] [-S <port>] [-s] [-u] [-v]
|
||||
-C: Override Configuration URL or path (with scheme file://)
|
||||
-c: Produce computer-readable output
|
||||
-d: Do not run a download test (implies -s)
|
||||
-f: <comma-separated list>: Enforce Protocol selections. Available options:
|
||||
h1: Force-enable HTTP/1.1
|
||||
h2: Force-enable HTTP/2
|
||||
h3: Force-enable HTTP/3 (QUIC)
|
||||
L4S: Force-enable L4S
|
||||
noL4S: Force-disable L4S
|
||||
-h: Show help (this message)
|
||||
-I: Bind test to interface (e.g., en0, pdp_ip0,...)
|
||||
-k: Disable certificate validation
|
||||
-p: Use iCloud Private Relay
|
||||
-r: Connect to host or IP, overriding DNS for initial config request
|
||||
-S: Start and run server on specified port. Other specified options ignored
|
||||
-s: Run tests sequentially instead of parallel upload/download
|
||||
-u: Do not run an upload test (implies -s)
|
||||
-v: Verbose output
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
macOS 中的 `networkQuality` 工具是一款强大的命令行实用程序,专注于测量网络连接性能。它不仅可以用于常规网络测试,还支持通过 Apple Private Relay 进行测试而无需购买 iCloud+ 服务,这是一个很方便的功能。
|
||||
|
||||
相关资源:
|
||||
|
||||
- [networkQuality Wiki](https://github.com/network-quality/community/wiki)
|
||||
- [PPM 响应性草案 RFC](https://www.ietf.org/archive/id/draft-cpaasch-ippm-responsiveness-00.html)
|
||||
|
||||
[** 赞(1)](https://www.sysgeek.cn/macos-networkquality/)
|
||||
|
||||
分享到 [**](https://www.sysgeek.cn/macos-networkquality/ "分享到微信") **
|
||||
|
||||
### 相关推荐
|
||||
|
||||
- [](https://www.sysgeek.cn/macos-tahoe-26-1/) [macOS Tahoe 26.1 发布:新增「液态玻璃」色调模式](https://www.sysgeek.cn/macos-tahoe-26-1/)
|
||||
- [](https://www.sysgeek.cn/macos-tahoe-26-0-1/) [macOS Tahoe 26.0.1 发布,修复 M3 Ultra 无法安装的问题](https://www.sysgeek.cn/macos-tahoe-26-0-1/)
|
||||
- [](https://www.sysgeek.cn/macos-tahoe-26-new-settings/) [10+ macOS Tahoe 26 全新设置,值得你的关注与调校](https://www.sysgeek.cn/macos-tahoe-26-new-settings/)
|
||||
- [](https://www.sysgeek.cn/macos-sequoia-15-6-1/) [macOS Sequoia 15.6.1 发布,修复已被利用的高危漏洞](https://www.sysgeek.cn/macos-sequoia-15-6-1/)
|
||||
- [](https://www.sysgeek.cn/macos-sequoia-15-6/) [macOS Sequoia 15.6 发布,修复 81 项安全问题](https://www.sysgeek.cn/macos-sequoia-15-6/)
|
||||
- [](https://www.sysgeek.cn/apple-container/) [Apple Container:苹果容器化框架简介](https://www.sysgeek.cn/apple-container/)
|
||||
- [](https://www.sysgeek.cn/macos-tahoe-wallpaper/) [macOS 26 Tahoe 桌面壁纸下载(4K/6K 高清官方壁纸)](https://www.sysgeek.cn/macos-tahoe-wallpaper/)
|
||||
- [](https://www.sysgeek.cn/ios-26-ipados-26-macos-26-compatibility-list/) [iOS、iPadOS 和 macOS 26 支持机型列表:哪些设备可以升级?](https://www.sysgeek.cn/ios-26-ipados-26-macos-26-compatibility-list/)
|
||||
|
||||
- [首页](https://www.sysgeek.cn/)
|
||||
- [新闻](https://www.sysgeek.cn/news/)
|
||||
- [macOS](https://www.sysgeek.cn/macos/)
|
||||
- [专题](https://www.sysgeek.cn/topic/)
|
||||
@@ -0,0 +1,277 @@
|
||||
---
|
||||
title: "搬瓦工VPS开通后安装BBR教程,服务器开启加速网络优化 - 搬瓦工中文版"
|
||||
source: "https://www.bwger.com/article/56.html"
|
||||
author:
|
||||
published:
|
||||
created: 2025-12-01
|
||||
description: "搬瓦工VPS开通后安装BBR教程,服务器开启加速网络优化"
|
||||
tags:
|
||||
- "clippings"
|
||||
---
|
||||
### 当前位置:首页 > 技术教程 » 正文
|
||||
|
||||
BBR(Bottleneck Bandwidth and Round-trip propagation time)是 Google 提供的一种新型拥塞控制算法。它能显著提高 Linux 服务器的网络吞吐量,同时有效降低 TCP 连接延迟,从而大幅度改善网络传输性能。
|
||||
|
||||
目前主流的 Linux 系统,如 CentOS 8、Debian、Ubuntu 等新版系统,通常已经内置 BBR,只需简单配置即可开启。而部分较早的系统版本则需要手动升级内核后再启用。下面将分步骤介绍不同系统下的开启方法。
|
||||
|
||||
**一、CentOS 8 / Debian / Ubuntu 开启 BBR:**
|
||||
|
||||
这类系统的默认内核版本通常高于 4.9,因此无需额外升级内核,只需执行以下命令即可启用:
|
||||
```bash
|
||||
echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
|
||||
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
|
||||
sysctl -p
|
||||
```
|
||||
执行完毕后,通过以下命令验证是否启用成功:
|
||||
```perl
|
||||
lsmod | grep bbr
|
||||
```
|
||||
如果输出结果中包含类似以下内容:
|
||||
```bash
|
||||
tcp_bbr 20480 0
|
||||
```
|
||||
则说明 Google BBR 已成功启用。
|
||||
|
||||
**二、CentOS 7 升级内核并开启 BBR:**
|
||||
|
||||
CentOS 7 默认内核版本一般低于 4.9,无法直接启用 BBR,需要先升级内核。推荐使用一键脚本方式:
|
||||
```ruby
|
||||
yum install wget -y
|
||||
wget --no-check-certificate https://github.com/teddysun/across/raw/master/bbr.sh
|
||||
chmod +x bbr.sh
|
||||
./bbr.sh
|
||||
```
|
||||
脚本运行完成后,重启服务器,同样再次执行:
|
||||
```perl
|
||||
lsmod | grep bbr
|
||||
```
|
||||
如果输出结果中包含类似以下内容:
|
||||
```bash
|
||||
tcp_bbr 20480 0
|
||||
```
|
||||
则表示 BBR 加速已经配置成功。
|
||||
|
||||
**三、开启 BBR 作用与效果:**
|
||||
|
||||
充分利用带宽:最大化利用服务器所在网络的瓶颈带宽,不浪费传输能力。
|
||||
|
||||
减少网络排队:通过智能调度算法降低延迟,避免传统算法中因排队导致的拥堵。
|
||||
|
||||
提升传输效率:尤其适合跨境、长距离网络环境,可以显著改善 TCP 连接速度。
|
||||
|
||||
通俗来讲,BBR 就是让你的服务器“跑满带宽”,在复杂的网络环境下也能保持高速、低延迟,几乎将网络传输能力压榨到极致。
|
||||
|
||||
**四、BBR 安装方法教程总结:**
|
||||
|
||||
无论是 CentOS 7 通过升级内核安装 BBR,还是 CentOS 8 / Debian / Ubuntu 直接启用 BBR,配置步骤都非常简单。开启 BBR 后,能显著提升服务器的网络性能,是优化加速服务器网络最有效、最直接的方式之一。
|
||||
|
||||
**【购机教程】** 搬瓦工英文网页不会购买?购买VPS的流程是什么?不知道怎么支付?能不能用支付宝?具体请查看搬瓦工购机教程攻略,超简单!新手小白也能看的懂!==> [直达链接](https://www.bwger.com/doc/)
|
||||
|
||||
温馨提醒 若有选择困难症,直接选中间推荐方案,记得使用搬瓦工全系通用优惠码:BWHCGLUKKB (-6.77%)
|
||||
|
||||
- 2核 CPU
|
||||
- 1GB 内存
|
||||
- 20GB SSD 硬盘
|
||||
- 1000GB 月流量
|
||||
- 1Gbps 带宽
|
||||
- DC2/DC8/多机房
|
||||
- $49.99/年,年付入门款
|
||||
- **基础套餐,入门首选,速度够用**
|
||||
|
||||
- 2核 CPU
|
||||
- 1GB 内存
|
||||
- 20GB SSD 硬盘
|
||||
- 1000GB 月流量
|
||||
- 2.5Gbps 带宽
|
||||
- DC6/DC9/软银/多机房
|
||||
- $49.99/季度,$169.99/年
|
||||
- **首选推荐,三网直连,速度超快**
|
||||
|
||||
- 2核 CPU
|
||||
- 2GB 内存
|
||||
- 40GB SSD 硬盘
|
||||
- 500GB 月流量
|
||||
- 1Gbps 带宽
|
||||
- 香港CN2 GIA专线机房
|
||||
- $89.99/月,$899.99/年
|
||||
- **土豪专属,最顶路线,绝对好用**
|
||||
|
||||
|
||||
|
||||
**A、美国 CN2 GIA 首选( 推荐套餐 ):**
|
||||
|
||||
美西洛杉矶 CN2 GIA 20GB
|
||||
|
||||
- CPU:2 核
|
||||
- 内存:1 GB
|
||||
- 硬盘:20 GB SSD
|
||||
- 流量:1000 GB/月
|
||||
- 带宽:2.5 Gbps
|
||||
- 机房:DC6 DC9 CN2 GIA、日本软银
|
||||
- 迁移:可迁移至其他机房,流量不变化
|
||||
- 价格:49.99 美元/季度,169.99 美元/年
|
||||
|
||||
[直达通道(美国 CN2 GIA 20GB)](https://www.bwger.com/link/87/)
|
||||
|
||||
美西洛杉矶 CN2 GIA 40GB
|
||||
|
||||
- CPU:3 核
|
||||
- 内存:2 GB
|
||||
- 硬盘:40 GB SSD
|
||||
- 流量:2000 GB/月
|
||||
- 带宽:2.5 Gbps
|
||||
- 机房:DC6 DC9 CN2 GIA、日本软银
|
||||
- 迁移:可迁移至其他机房,流量不变化
|
||||
- 价格:89.99 美元/季度,299.99 美元/年
|
||||
|
||||
[直达通道(美国 CN2 GIA 40GB)](https://www.bwger.com/link/88/)
|
||||
|
||||
**B** **、美国 CN2 GIA 方案(高端套餐):**
|
||||
|
||||
美西洛杉矶 CN2 GIA 80GB
|
||||
|
||||
- CPU:4 核
|
||||
- 内存:4 GB
|
||||
- 硬盘:80 GB SSD
|
||||
- 流量:3000 GB/月
|
||||
- 带宽:2.5 Gbps
|
||||
- 机房:DC6 DC9 CN2 GIA、日本软银
|
||||
- 迁移:可迁移至其他机房,流量不变化
|
||||
- 价格:149.99 美元/季度,549.99 美元/年
|
||||
|
||||
[直达通道(美国 CN2 GIA 80GB)](https://www.bwger.com/link/89/)
|
||||
|
||||
美西洛杉矶 CN2 GIA 160GB
|
||||
|
||||
- CPU:6 核
|
||||
- 内存:8 GB
|
||||
- 硬盘:160 GB SSD
|
||||
- 流量:5000 GB/月
|
||||
- 带宽:5 Gbps
|
||||
- 机房:DC6 DC9 CN2 GIA、日本软银
|
||||
- 迁移:可迁移至其他机房,流量不变化
|
||||
- 价格:239.99 美元/季度,879.99 美元/年
|
||||
|
||||
[直达通道(美国 CN2 GIA 160GB)](https://www.bwger.com/link/90/)
|
||||
|
||||
**C、日本 CN2 GIA 首选( 推荐套餐 ):**
|
||||
|
||||
日本大阪 CN2 GIA 40GB
|
||||
|
||||
- CPU:2 核
|
||||
- 内存:2 GB
|
||||
- 硬盘:40 GB SSD
|
||||
- 流量:500 GB/月
|
||||
- 带宽:1.5 Gbps
|
||||
- 机房:日本大阪 CN2 GIA
|
||||
- 迁移:亚洲顶级路线,不可迁移机房
|
||||
- 价格:49.99 美元/月,499.99 美元/年
|
||||
|
||||
[直达通道(大阪 CN2 GIA 40GB)](https://www.bwger.com/link/134/)
|
||||
|
||||
日本东京 CN2 GIA 40GB
|
||||
|
||||
- CPU:2 核
|
||||
- 内存:2 GB
|
||||
- 硬盘:40 GB SSD
|
||||
- 流量:500 GB/月
|
||||
- 带宽:1.2 Gbps
|
||||
- 机房:日本东京 CN2 GIA
|
||||
- 迁移:亚洲顶级路线,不可迁移机房
|
||||
- 价格:89.99 美元/月,899.99 美元/年
|
||||
|
||||
[直达通道(东京 CN2 GIA 40GB)](https://www.bwger.com/link/108/)
|
||||
|
||||
**D** **、日本 CN2 GIA 方案(高端套餐):**
|
||||
|
||||
日本大阪 CN2 GIA 80GB
|
||||
|
||||
- CPU:4 核
|
||||
- 内存:4 GB
|
||||
- 硬盘:80 GB SSD
|
||||
- 流量:1000 GB/月
|
||||
- 带宽:1.5 Gbps
|
||||
- 机房:日本大阪 CN2 GIA
|
||||
- 迁移:亚洲顶级路线,不可迁移机房
|
||||
- 价格:86.99 美元/月,869.99 美元/年
|
||||
|
||||
[直达通道(大阪 CN2 GIA 80GB)](https://www.bwger.com/link/135/)
|
||||
|
||||
日本东京 CN2 GIA 80GB
|
||||
|
||||
- CPU:4 核
|
||||
- 内存:4 GB
|
||||
- 硬盘:80 GB SSD
|
||||
- 流量:1000 GB/月
|
||||
- 带宽:1.2 Gbps
|
||||
- 机房:日本东京 CN2 GIA
|
||||
- 迁移:亚洲顶级路线,不可迁移机房
|
||||
- 价格:155.99 美元/月,1559.99 美元/年
|
||||
|
||||
[直达通道(东京 CN2 GIA 80GB)](https://www.bwger.com/link/109/)
|
||||
|
||||
**E、香港 CN2 GIA 首选( 推荐套餐 ):**
|
||||
|
||||
中国香港 CN2 GIA 40GB
|
||||
|
||||
- CPU:2 核
|
||||
- 内存:2 GB
|
||||
- 硬盘:40 GB SSD
|
||||
- 流量:500 GB/月
|
||||
- 带宽:1 Gbps
|
||||
- 机房:中国香港 CN2 GIA
|
||||
- 迁移:最顶级路线,不可迁移机房
|
||||
- 价格:89.99 美元/月,899.99 美元/年
|
||||
|
||||
[直达通道(香港 CN2 GIA 40GB)](https://www.bwger.com/link/95/)
|
||||
|
||||
中国香港 CN2 GIA 80GB
|
||||
|
||||
- CPU:4 核
|
||||
- 内存:4 GB
|
||||
- 硬盘:80 GB SSD
|
||||
- 流量:1000 GB/月
|
||||
- 带宽:1 Gbps
|
||||
- 机房:中国香港 CN2 GIA
|
||||
- 迁移:最顶级路线,不可迁移机房
|
||||
- 价格:155.99 美元/月,1559.99 美元/年
|
||||
|
||||
[直达通道(香港 CN2 GIA 80GB)](https://www.bwger.com/link/96/)
|
||||
|
||||
**F** **、香港 CN2 GIA 方案(高端套餐):**
|
||||
|
||||
中国香港 CN2 GIA 160GB
|
||||
|
||||
- CPU:6 核
|
||||
- 内存:8 GB
|
||||
- 硬盘:160 GB SSD
|
||||
- 流量:2000 GB/月
|
||||
- 带宽:1 Gbps
|
||||
- 机房:中国香港 CN2 GIA
|
||||
- 迁移:最顶级路线,不可迁移机房
|
||||
- 价格:299.99 美元/月,2999.99 美元/年
|
||||
|
||||
[直达通道(香港 CN2 GIA 160GB)](https://www.bwger.com/link/97/)
|
||||
|
||||
中国香港 CN2 GIA 320GB
|
||||
|
||||
- CPU:8 核
|
||||
- 内存:16 GB
|
||||
- 硬盘:320 GB SSD
|
||||
- 流量:4000 GB/月
|
||||
- 带宽:1 Gbps
|
||||
- 机房:中国香港 CN2 GIA
|
||||
- 迁移:最顶级路线,不可迁移机房
|
||||
- 价格:589.99 美元/月,5899.99 美元/年
|
||||
|
||||
[直达通道(香港 CN2 GIA 320GB)](https://www.bwger.com/link/98/)
|
||||
|
||||
<table><thead><tr><th colspan="6">搬瓦工标准 KVM VPS 入门套餐</th></tr><tr><th>内存</th><th>CPU</th><th>硬盘</th><th>流量</th><th>带宽</th><th>购买</th></tr></thead><tbody><tr><td>1GB</td><td>2核</td><td>20GB</td><td>1TB</td><td>1Gbps</td><td><a href="https://www.bwger.com/link/44/">购买</a></td></tr><tr><td>2GB</td><td>3核</td><td>40GB</td><td>2TB</td><td>1Gbps</td><td><a href="https://www.bwger.com/link/45/">购买</a></td></tr><tr><td>4GB</td><td>4核</td><td>80GB</td><td>3TB</td><td>1Gbps</td><td><a href="https://www.bwger.com/link/46/">购买</a></td></tr><tr><td>8GB</td><td>5核</td><td>160GB</td><td>4TB</td><td>1Gbps</td><td><a href="https://www.bwger.com/link/47/">购买</a></td></tr><tr><td>16GB</td><td>6核</td><td>320GB</td><td>5TB</td><td>1Gbps</td><td><a href="https://www.bwger.com/link/48/">购买</a></td></tr><tr><td>24GB</td><td>7核</td><td>480GB</td><td>6TB</td><td>1Gbps</td><td><a href="https://www.bwger.com/link/49/">购买</a></td></tr></tbody></table>
|
||||
|
||||
<table><thead><tr><th colspan="6">美国洛杉矶 LA CN2 GIA 推荐套餐</th></tr><tr><th>内存</th><th>CPU</th><th>硬盘</th><th>流量</th><th>带宽</th><th>购买</th></tr></thead><tbody><tr><td>1GB</td><td>2核</td><td>20GB</td><td>1TB</td><td>2.5Gbps</td><td><a href="https://www.bwger.com/link/87/">购买</a></td></tr><tr><td>2GB</td><td>3核</td><td>40GB</td><td>2TB</td><td>2.5Gbps</td><td><a href="https://www.bwger.com/link/88/">购买</a></td></tr><tr><td>4GB</td><td>4核</td><td>80GB</td><td>3TB</td><td>2.5Gbps</td><td><a href="https://www.bwger.com/link/89/">购买</a></td></tr><tr><td>8GB</td><td>6核</td><td>160GB</td><td>5TB</td><td>5Gbps</td><td><a href="https://www.bwger.com/link/90/">购买</a></td></tr><tr><td>16GB</td><td>8核</td><td>320GB</td><td>8TB</td><td>5Gbps</td><td><a href="https://www.bwger.com/link/91/">购买</a></td></tr><tr><td>32GB</td><td>10核</td><td>640GB</td><td>10TB</td><td>10Gbps</td><td><a href="https://www.bwger.com/link/92/">购买</a></td></tr><tr><td>64GB</td><td>12核</td><td>1280GB</td><td>12TB</td><td>10Gbps</td><td><a href="https://www.bwger.com/link/93/">购买</a></td></tr><tr><td>64GB</td><td>12核</td><td>1280GB</td><td>15TB</td><td>10Gbps</td><td><a href="https://www.bwger.com/link/160/">购买</a></td></tr><tr><td>64GB</td><td>12核</td><td>1280GB</td><td>20TB</td><td>10Gbps</td><td><a href="https://www.bwger.com/link/161/">购买</a></td></tr><tr><td>64GB</td><td>24核</td><td>1280GB</td><td>12TB</td><td>10Gbps</td><td><a href="https://www.bwger.com/link/148/">购买</a></td></tr></tbody></table>
|
||||
|
||||
<table><thead><tr><th colspan="6">日本大阪 OSAKA CN2 GIA 高端套餐</th></tr><tr><th>内存</th><th>CPU</th><th>硬盘</th><th>流量</th><th>带宽</th><th>购买</th></tr></thead><tbody><tr><td>2GB</td><td>2核</td><td>40GB</td><td>0.5TB</td><td>1.5Gbps</td><td><a href="https://www.bwger.com/link/134/">购买</a></td></tr><tr><td>4GB</td><td>4核</td><td>80GB</td><td>1TB</td><td>1.5Gbps</td><td><a href="https://www.bwger.com/link/135/">购买</a></td></tr><tr><td>8GB</td><td>6核</td><td>160GB</td><td>2TB</td><td>1.5Gbps</td><td><a href="https://www.bwger.com/link/136/">购买</a></td></tr><tr><td>16GB</td><td>8核</td><td>320GB</td><td>4TB</td><td>1.5Gbps</td><td><a href="https://www.bwger.com/link/137/">购买</a></td></tr><tr><td>32GB</td><td>10核</td><td>640GB</td><td>6TB</td><td>1.5Gbps</td><td><a href="https://www.bwger.com/link/138/">购买</a></td></tr><tr><td>64GB</td><td>12核</td><td>1280GB</td><td>8TB</td><td>1.5Gbps</td><td><a href="https://www.bwger.com/link/139/">购买</a></td></tr></tbody></table>
|
||||
|
||||
<table><thead><tr><th colspan="6">日本东京 TOKYO CN2 GIA 顶级套餐</th></tr><tr><th>内存</th><th>CPU</th><th>硬盘</th><th>流量</th><th>带宽</th><th>购买</th></tr></thead><tbody><tr><td>2GB</td><td>2核</td><td>40GB</td><td>0.5TB</td><td>1.2Gbps</td><td><a href="https://www.bwger.com/link/108/">购买</a></td></tr><tr><td>4GB</td><td>4核</td><td>80GB</td><td>1TB</td><td>1.2Gbps</td><td><a href="https://www.bwger.com/link/109/">购买</a></td></tr><tr><td>8GB</td><td>6核</td><td>160GB</td><td>2TB</td><td>1.2Gbps</td><td><a href="https://www.bwger.com/link/110/">购买</a></td></tr><tr><td>16GB</td><td>8核</td><td>320GB</td><td>4TB</td><td>1.2Gbps</td><td><a href="https://www.bwger.com/link/111/">购买</a></td></tr><tr><td>32GB</td><td>10核</td><td>640GB</td><td>6TB</td><td>1.2Gbps</td><td><a href="https://www.bwger.com/link/123/">购买</a></td></tr><tr><td>64GB</td><td>12核</td><td>1280GB</td><td>8TB</td><td>1.2Gbps</td><td><a href="https://www.bwger.com/link/125/">购买</a></td></tr></tbody></table>
|
||||
|
||||
<table><thead><tr><th colspan="6">中国香港 HONG KONG CN2 GIA 顶级套餐</th></tr><tr><th>内存</th><th>CPU</th><th>硬盘</th><th>流量</th><th>带宽</th><th>购买</th></tr></thead><tbody><tr><td>2GB</td><td>2核</td><td>40GB</td><td>0.5TB</td><td>1Gbps</td><td><a href="https://www.bwger.com/link/95/">购买</a></td></tr><tr><td>4GB</td><td>4核</td><td>80GB</td><td>1TB</td><td>1Gbps</td><td><a href="https://www.bwger.com/link/96/">购买</a></td></tr><tr><td>8GB</td><td>6核</td><td>160GB</td><td>2TB</td><td>1Gbps</td><td><a href="https://www.bwger.com/link/97/">购买</a></td></tr><tr><td>16GB</td><td>8核</td><td>320GB</td><td>4TB</td><td>1Gbps</td><td><a href="https://www.bwger.com/link/98/">购买</a></td></tr><tr><td>32GB</td><td>10核</td><td>640GB</td><td>6TB</td><td>1Gbps</td><td><a href="https://www.bwger.com/link/122/">购买</a></td></tr><tr><td>64GB</td><td>12核</td><td>1280GB</td><td>8TB</td><td>1Gbps</td><td><a href="https://www.bwger.com/link/124/">购买</a></td></tr></tbody></table>
|
||||
@@ -0,0 +1,256 @@
|
||||

|
||||
|
||||
机房内的蓝光
|
||||
|
||||
昨天又有客户问我,说他们的应用突然变慢了,怀疑是网络问题。我问他网络带宽多少,他说不知道...这种情况我见得太多了,很多人遇到网络问题就是一脸懵,完全不知道从哪里下手。
|
||||
|
||||
其实测网络带宽这个事情,我刚开始做运维的时候也是摸着石头过河。记得有一次领导问我们机房的带宽利用率怎么样,我愣是说不出个所以然来,那个尴尬啊...从那以后我就下定决心要把这些基本功练扎实。
|
||||
|
||||
今天就来分享一下我这些年积累的Linux网络带宽测试经验,保证让你以后遇到网络问题不再抓瞎。
|
||||
|
||||
### **speedtest-cli - 最简单粗暴的方法**
|
||||
|
||||
说到测带宽,我第一个想到的就是speedtest-cli。这玩意儿就像网页版的speedtest.net,但是可以在命令行里跑,特别适合我们这些服务器党。
|
||||
|
||||
安装很简单:
|
||||
|
||||
```
|
||||
# CentOS/RHEL系列
|
||||
yum install epel-release
|
||||
yum install python-pip
|
||||
pip install speedtest-cli
|
||||
|
||||
# Ubuntu/Debian系列
|
||||
apt update
|
||||
# 安装 pipx
|
||||
sudo apt install pipx
|
||||
pipx ensurepath
|
||||
|
||||
# 安装应用
|
||||
pipx install speedtest-cli
|
||||
|
||||
#添加环境变量
|
||||
echo 'export PATH="$PATH:/root/.local/bin"' >> ~/.bashrc
|
||||
source ~/.bashrc
|
||||
```
|
||||
|
||||

|
||||
|
||||
image-20251014220320277
|
||||
|
||||
image-20251014220320277
|
||||
|
||||
装好之后直接运行:
|
||||
|
||||
它会自动帮你选择最近的[测试服务](https://cloud.tencent.com/product/wetest?from_column=20065&from=20065)器,然后开始测试。输出大概是这样的:
|
||||
|
||||

|
||||
|
||||
image-20251014220631686
|
||||
|
||||
image-20251014220631686
|
||||
|
||||
不过有时候自动选择的服务器不太理想,你可以手动指定。先看看附近有哪些服务器:
|
||||
|
||||
```
|
||||
speedtest-cli --list | grep China
|
||||
```
|
||||
|
||||
然后选一个延迟比较低的:
|
||||
|
||||
```
|
||||
speedtest-cli --server 服务器ID
|
||||
```
|
||||
|
||||
我记得有一次我们的业务突然变慢,用户投诉不断。我用speedtest-cli一测,发现下载速度只有平时的一半,赶紧联系运营商,原来是他们在做线路维护忘记通知我们了。
|
||||
|
||||
### **iperf3 - 专业级的带宽测试工具**
|
||||
|
||||
speedtest-cli虽然方便,但有个问题就是测试的是到公网的速度。如果你想测试内网带宽,或者两台服务器之间的带宽,那就得用iperf3了。
|
||||
|
||||
安装iperf3:
|
||||
|
||||
```
|
||||
# CentOS/RHEL
|
||||
yum install iperf3
|
||||
|
||||
# Ubuntu/Debian
|
||||
apt install iperf3
|
||||
```
|
||||
|
||||
iperf3需要一台服务器做服务端,一台做客户端。在服务端运行:
|
||||
|
||||

|
||||
|
||||
image-20251014220858122
|
||||
|
||||
image-20251014220858122
|
||||
|
||||
在客户端运行:
|
||||
|
||||
默认测试10秒钟,你也可以指定时间:
|
||||
|
||||
测试UDP带宽:
|
||||
|
||||
客户端结果:
|
||||
|
||||

|
||||
|
||||
image-20251014221400196
|
||||
|
||||
image-20251014221400196
|
||||
|
||||
服务端结果:
|
||||
|
||||

|
||||
|
||||
image-20251014221423484
|
||||
|
||||
image-20251014221423484
|
||||
|
||||
我特别喜欢用iperf3测试新部署的服务器之间的网络性能。有一次我们要在两个机房之间做[数据同步](https://cloud.tencent.com/product/datainlong?from_column=20065&from=20065),用iperf3测了一下专线带宽,发现实际速度比运营商承诺的要低不少,最后让他们重新调试了线路。
|
||||
|
||||
### **wget/curl - 简单实用的下载测试**
|
||||
|
||||
有时候你就想快速测一下下载速度,不想装额外的工具,那wget和curl就够用了。
|
||||
|
||||
用wget测试:
|
||||
|
||||
```
|
||||
wget -O /dev/null http://speedtest.tele2.net/100MB.zip
|
||||
```
|
||||
|
||||
这个命令会下载一个100MB的文件到/dev/null(相当于丢弃),然后显示下载速度。
|
||||
|
||||
用curl测试:
|
||||
|
||||
```
|
||||
curl -o /dev/null http://speedtest.tele2.net/100MB.zip
|
||||
```
|
||||
|
||||
如果你想看更详细的信息:
|
||||
|
||||
```
|
||||
curl -o /dev/null -w "下载速度: %{speed_download} bytes/sec\n总时间: %{time_total}s\n" http://speedtest.tele2.net/100MB.zip
|
||||
```
|
||||
|
||||
这种方法的好处是可以测试到特定服务器的速度,比如你的CDN节点或者合作伙伴的服务器。
|
||||
|
||||
### **nload - 实时监控网络流量**
|
||||
|
||||
有时候你不是要测最大带宽,而是想看看当前的网络使用情况,nload就很合适。
|
||||
|
||||
安装nload:
|
||||
|
||||
```
|
||||
# CentOS/RHEL
|
||||
yum install nload
|
||||
|
||||
# Ubuntu/Debian
|
||||
apt install nload
|
||||
```
|
||||
|
||||
运行很简单:
|
||||
|
||||

|
||||
|
||||
image-20251014223241747
|
||||
|
||||
image-20251014223241747
|
||||
|
||||
它会显示一个实时的图表,显示当前的上传和下载速度。如果你有多个网卡,可以用左右箭头键切换。
|
||||
|
||||
我经常用nload来监控服务器的网络使用情况,特别是在做[数据迁移](https://cloud.tencent.com.cn/product/datainlong?from_column=20065&from=20065)或者大文件传输的时候,可以实时看到网络利用率。
|
||||
|
||||
### **iftop - 看看谁在占用带宽**
|
||||
|
||||
iftop比nload更进一步,它不仅能显示总的流量,还能显示每个连接的流量情况。
|
||||
|
||||
安装iftop:
|
||||
|
||||
```
|
||||
# CentOS/RHEL
|
||||
yum install iftop
|
||||
|
||||
# Ubuntu/Debian
|
||||
apt install iftop
|
||||
```
|
||||
|
||||
运行需要root权限:
|
||||
|
||||
iftop的界面有点像top命令,显示当前所有网络连接的流量情况。你可以看到每个IP地址的上传下载速度,这对于排查网络问题特别有用。
|
||||
|
||||

|
||||
|
||||
image-20251014223316164
|
||||
|
||||
image-20251014223316164
|
||||
|
||||
有一次我们的服务器网络突然变慢,用iftop一看,发现有个IP在疯狂下载数据,原来是有人在爬我们的网站...
|
||||
|
||||
### **nethogs - 进程级别的网络监控**
|
||||
|
||||
如果你想知道是哪个进程在占用网络带宽,nethogs就派上用场了。
|
||||
|
||||
安装nethogs:
|
||||
|
||||
```
|
||||
# CentOS/RHEL
|
||||
yum install nethogs
|
||||
|
||||
# Ubuntu/Debian
|
||||
apt install nethogs
|
||||
```
|
||||
|
||||
运行:
|
||||
|
||||

|
||||
|
||||
image-20251014223425928
|
||||
|
||||
image-20251014223425928
|
||||
|
||||
nethogs会显示每个进程的网络使用情况,包括进程名、PID、用户等信息。这对于排查哪个应用程序占用带宽特别有用。
|
||||
|
||||
### **一些实用的测试技巧**
|
||||
|
||||
**选择合适的测试时间**
|
||||
|
||||
网络带宽测试最好在不同时间段多测几次,因为网络状况会随时间变化。我一般会在早上、中午、晚上各测一次,这样能得到比较全面的数据。
|
||||
|
||||
**注意测试方向**
|
||||
|
||||
很多人只测下载速度,忽略了上传速度。但对于服务器来说,上传速度同样重要,特别是如果你的服务器需要向用户推送大量数据的话。
|
||||
|
||||
**考虑并发连接**
|
||||
|
||||
单线程测试得到的带宽可能不能反映真实情况。可以试试多线程测试:
|
||||
|
||||
这个命令会启动4个并行连接进行测试。
|
||||
|
||||
**记录测试结果**
|
||||
|
||||
我建议把测试结果记录下来,建立一个基线。这样以后出现问题的时候,你就能快速判断是不是网络带宽的问题了。
|
||||
|
||||
### **遇到问题怎么办**
|
||||
|
||||
如果测试结果不理想,不要慌。我的经验是按这个顺序排查:
|
||||
|
||||
1. 1\. 先确认是不是测试方法的问题,换个工具再测一次
|
||||
2. 2\. 检查服务器的网卡配置,看看是不是限速了
|
||||
3. 3\. 联系网络管理员或者运营商,确认线路状况
|
||||
4. 4\. 检查防火墙和安全组设置,看看是不是有限制
|
||||
|
||||
有一次我们的测试结果特别差,折腾了半天才发现是网卡驱动的问题,更新驱动之后速度立马就上来了。
|
||||
|
||||
### **写在最后**
|
||||
|
||||
网络带宽测试看起来简单,但要做好还是需要一些经验的。我建议大家平时多练习,熟悉这些工具的使用方法。更重要的是,要建立定期测试的习惯,这样才能及时发现问题。
|
||||
|
||||
说实话,网络问题往往是最难排查的,因为涉及的环节太多了。但只要你掌握了这些基本的测试方法,至少能快速定位问题的大概范围,这就已经成功了一半。
|
||||
|
||||
记住,做运维最重要的就是要有数据支撑,不能凭感觉。网络慢不慢,不是你说了算,是测试结果说了算!
|
||||
|
||||
本文参与 [腾讯云自媒体同步曝光计划](https://cloud.tencent.com.cn/developer/support-plan),分享自微信公众号。
|
||||
|
||||
原始发表:2025-10-14,如有侵权请联系 [cloudcommunity@tencent.com](mailto:cloudcommunity@tencent.com) 删除
|
||||
@@ -0,0 +1,194 @@
|
||||
|
||||
|
||||
## 测试软件
|
||||
|
||||
### speedtest-cli
|
||||
https://cn.x-cmd.com/pkg/speedtest-cli
|
||||
https://github.com/sivel/speedtest-cli
|
||||
|
||||
librespeed/speedtest
|
||||
|
||||
在自家搭建了Speedtest
|
||||
http://himan.picp.net:5102/
|
||||
|
||||
|
||||
服务器自动寻找最近的节点服务器,返回下载和上传速率
|
||||
群晖:
|
||||
https://laosu.tech/2022/10/19/%E7%94%A8Speedtest-Tracker%E8%B7%9F%E8%B8%AA%E4%B8%8A%E7%BD%91%E9%80%9F%E5%BA%A6/
|
||||
speedtest tracker
|
||||
https://zhuanlan.zhihu.com/p/640264958
|
||||
Docker Speedtest analyser
|
||||
https://www.modb.pro/db/127325
|
||||
|
||||
### iperf3
|
||||
|
||||
|
||||
```
|
||||
# Debian/Ubuntu 系
|
||||
sudo apt update sudo apt install iperf3
|
||||
# CentOS/RHEL 系
|
||||
sudo yum install iperf3
|
||||
```
|
||||
|
||||
|
||||
client/server模式,先在服务器安装iperf3 -s -p XXX,在客户端iperf3 -c XXX对接
|
||||
https://zhuanlan.zhihu.com/p/507720770
|
||||
从家里到联通云和腾讯云服务器都是2Mbits/sec
|
||||
chengang@JAMBPM1-2 ~ % iperf3 -c 116.162.100.119 -p 5001
|
||||
|
||||
```
|
||||
Connecting to host 116.162.100.119, port 5001
|
||||
[ 5] local 192.168.1.150 port 64437 connected to 116.162.100.119 port 5001
|
||||
[ ID] Interval Transfer Bitrate
|
||||
[ 5] 0.00-1.00 sec 768 KBytes 6.27 Mbits/sec
|
||||
[ 5] 1.00-2.01 sec 0.00 Bytes 0.00 bits/sec
|
||||
[ 5] 2.01-3.01 sec 256 KBytes 2.10 Mbits/sec
|
||||
[ 5] 3.01-4.00 sec 128 KBytes 1.05 Mbits/sec
|
||||
[ 5] 4.00-5.01 sec 256 KBytes 2.09 Mbits/sec
|
||||
[ 5] 5.01-6.00 sec 128 KBytes 1.05 Mbits/sec
|
||||
[ 5] 6.00-7.00 sec 256 KBytes 2.11 Mbits/sec
|
||||
[ 5] 7.00-8.00 sec 256 KBytes 2.09 Mbits/sec
|
||||
[ 5] 8.00-9.01 sec 256 KBytes 2.09 Mbits/sec
|
||||
[ 5] 9.01-10.00 sec 256 KBytes 2.10 Mbits/sec
|
||||
- - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
[ ID] Interval Transfer Bitrate
|
||||
[ 5] 0.00-10.00 sec 2.50 MBytes 2.10 Mbits/sec sender
|
||||
[ 5] 0.00-10.00 sec 2.40 MBytes 2.01 Mbits/sec receiver
|
||||
```
|
||||
|
||||
Windows测试结果:
|
||||
|
||||
```
|
||||
D:\myWinApps\iperf-3.20-win64>iperf3 -c 150.158.120.215 -p 5001
|
||||
Connecting to host 150.158.120.215, port 5001
|
||||
[ 5] local 198.18.0.1 port 49649 connected to 150.158.120.215 port 5001
|
||||
[ ID] Interval Transfer Bitrate
|
||||
[ 5] 0.00-1.01 sec 1.62 MBytes 13.5 Mbits/sec
|
||||
[ 5] 1.01-2.01 sec 256 KBytes 2.10 Mbits/sec
|
||||
[ 5] 2.01-3.01 sec 256 KBytes 2.10 Mbits/sec
|
||||
[ 5] 3.01-4.01 sec 256 KBytes 2.10 Mbits/sec
|
||||
[ 5] 4.01-5.01 sec 256 KBytes 2.09 Mbits/sec
|
||||
[ 5] 5.01-6.01 sec 256 KBytes 2.09 Mbits/sec
|
||||
[ 5] 6.01-7.01 sec 128 KBytes 1.05 Mbits/sec
|
||||
[ 5] 7.01-8.01 sec 256 KBytes 2.09 Mbits/sec
|
||||
[ 5] 8.01-9.01 sec 256 KBytes 2.11 Mbits/sec
|
||||
[ 5] 9.01-10.01 sec 256 KBytes 2.10 Mbits/sec
|
||||
- - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
[ ID] Interval Transfer Bitrate
|
||||
[ 5] 0.00-10.01 sec 3.75 MBytes 3.14 Mbits/sec sender
|
||||
[ 5] 0.00-10.03 sec 2.53 MBytes 2.11 Mbits/sec receiver
|
||||
```
|
||||
|
||||
|
||||
是我家里路由器问题?
|
||||
|
||||
天园测试结果:
|
||||
|
||||
```
|
||||
D:\myWinApps\iperf-3.20-win64>iperf3 -c 150.158.120.215 -p 5001
|
||||
Connecting to host 150.158.120.215, port 5001
|
||||
[ 5] local 198.18.0.1 port 4812 connected to 150.158.120.215 port 5001
|
||||
[ ID] Interval Transfer Bitrate
|
||||
[ 5] 0.00-1.01 sec 52.1 MBytes 433 Mbits/sec
|
||||
[ 5] 1.01-2.01 sec 0.00 Bytes 0.00 bits/sec
|
||||
[ 5] 2.01-3.01 sec 12.0 MBytes 102 Mbits/sec
|
||||
[ 5] 3.01-4.01 sec 0.00 Bytes 0.00 bits/sec
|
||||
[ 5] 4.01-5.01 sec 12.0 MBytes 101 Mbits/sec
|
||||
[ 5] 5.01-6.01 sec 12.0 MBytes 100 Mbits/sec
|
||||
[ 5] 6.01-7.00 sec 0.00 Bytes 0.00 bits/sec
|
||||
[ 5] 7.00-8.01 sec 12.0 MBytes 100 Mbits/sec
|
||||
[ 5] 8.01-9.01 sec 0.00 Bytes 0.00 bits/sec
|
||||
[ 5] 9.01-10.01 sec 12.0 MBytes 101 Mbits/sec
|
||||
- - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
[ ID] Interval Transfer Bitrate
|
||||
[ 5] 0.00-10.01 sec 112 MBytes 94.0 Mbits/sec sender
|
||||
[ 5] 0.00-10.04 sec 69.8 MBytes 58.3 Mbits/sec receiver
|
||||
```
|
||||
|
||||
初步定位是东玺门家路由器问题!
|
||||
上游网络节点问题!
|
||||
### mtr
|
||||
|
||||
https://help.aliyun.com/zh/ecs/user-guide/use-mtr-tool-for-network-analysis
|
||||
https://www.cnblogs.com/xyash/p/19276237
|
||||
|
||||
|
||||
https://github.com/WinMTR/WinMTR-Official/releases/tag/v0.92
|
||||
winmtr
|
||||
https://blog.csdn.net/michaelwoshi/article/details/126924510
|
||||
|
||||
sudo mtr -w www.baidu.com
|
||||
|
||||
```
|
||||
Start: 2025-12-03T22:39:15+0800
|
||||
HOST: JAMBPM1-2.local Loss% Snt Last Avg Best Wrst StDev
|
||||
1.|-- 192.168.1.1 0.0% 10 0.7 1.2 0.6 4.7 1.2
|
||||
2.|-- 175.0.68.1 0.0% 10 3.9 3.6 2.1 4.3 0.6
|
||||
3.|-- ??? 100.0 10 0.0 0.0 0.0 0.0 0.0
|
||||
4.|-- ??? 100.0 10 0.0 0.0 0.0 0.0 0.0
|
||||
5.|-- ??? 100.0 10 0.0 0.0 0.0 0.0 0.0
|
||||
6.|-- 113.96.4.238 20.0% 10 22.2 25.0 21.8 28.4 2.6
|
||||
7.|-- ??? 100.0 10 0.0 0.0 0.0 0.0 0.0
|
||||
8.|-- 14.29.117.178 0.0% 10 23.2 26.4 23.2 35.6 4.7
|
||||
9.|-- ??? 100.0 10 0.0 0.0 0.0 0.0 0.0
|
||||
10.|-- ??? 100.0 10 0.0 0.0 0.0 0.0 0.0
|
||||
11.|-- ??? 100.0 10 0.0 0.0 0.0 0.0 0.0
|
||||
12.|-- 183.2.172.17 0.0% 10 22.4 22.5 21.6 23.5 0.6
|
||||
```
|
||||
|
||||
https://www.cnblogs.com/xyash/p/19276237
|
||||
|
||||
|
||||
|
||||
### nload
|
||||
服务器当前的网络速率
|
||||
|
||||
|
||||
### NetworkQauality
|
||||
Mac下命令
|
||||
```
|
||||
networkQuality -v
|
||||
```
|
||||
[[networkQuality:macOS 中隐藏的网络测试工具(命令行)]]
|
||||
### netquality
|
||||
Mac下不能运行,需要在Docker安装容器
|
||||
https://github.com/xykt/NetQuality
|
||||
|
||||
|
||||
### netperf
|
||||
https://www.cnblogs.com/davidesun/p/12726006.html
|
||||
https://zhuanlan.zhihu.com/p/692834798
|
||||
|
||||
### httpstat
|
||||
https://github.com/reorx/httpstat
|
||||
|
||||
- 排查命令
|
||||
|
||||
```
|
||||
# 关键排查命令:
|
||||
ping 223.5.5.5 → 延迟<10ms(正常)
|
||||
dig @localhost www.google.com → 响应超时
|
||||
conntrack -L | wc -l → 29876(接近上限)
|
||||
```
|
||||
|
||||
### TurboACC
|
||||
openwrt插件
|
||||
|
||||
|
||||
### Homebox
|
||||
https://www.swjsj.com/articles/2025/04/25/1745589670102.html
|
||||
docker run -d -p 3300:3300 --name homebox xgheaven/homebox
|
||||

|
||||
测试出来居然这么强?应该是从M1到DSM的数据!
|
||||
|
||||
https://github.com/XGHeaven/homebox
|
||||
在自家搭建了一个服务器:
|
||||
http://himan.picp.net:3300/
|
||||
|
||||
## BBR加速
|
||||
|
||||
https://blog.eimoon.com/p/ubuntu-bbr/
|
||||
|
||||
centOS 7.X不同于ubuntu、debian
|
||||
[[CentOS7安装TCP BBR加速_tcp加速脚本-CSDN博客]]
|
||||
|
||||
@@ -0,0 +1,129 @@
|
||||
---
|
||||
title: 要使用 `rsync` 同步数据后保证恢复时权限和属性与原始
|
||||
created: 2026-05-31
|
||||
source: Cherry Studio
|
||||
tags:
|
||||
---
|
||||
要使用 `rsync` 同步数据后保证恢复时权限和属性与原始一致,需要使用正确的参数来保留**所有权、权限、时间戳等元数据**。以下是不同场景下的解决方案:
|
||||
|
||||
---
|
||||
|
||||
### **1\. 超级用户(Root)恢复(源和目标均为Root权限)**
|
||||
|
||||
如果需要完全恢复**用户、组、权限、时间戳**等元数据,必须使用 `root` 或 `sudo` 运行:
|
||||
|
||||
```bash
|
||||
sudo rsync -avAXH --numeric-ids --delete /source/ user@remote:/destination/
|
||||
```
|
||||
|
||||
**关键参数说明:**
|
||||
|
||||
- `-a` (`--archive`):递归同步并保留权限、所有者、时间戳等
|
||||
|
||||
- `-v` (`--verbose`):输出详细信息
|
||||
|
||||
- `-A` (`--acls`):保留ACLs(访问控制列表)
|
||||
|
||||
- `-X` (`--xattrs`):保留扩展属性(如SELinux标签)
|
||||
|
||||
- `-H` (`--hard-links`):保留硬链接
|
||||
|
||||
- `--numeric-ids`:以数字形式保留用户/组ID(不依赖目标机器的用户名映射)
|
||||
|
||||
- `--delete`:删除目标端存在但源端不存在的内容(完全一致恢复)
|
||||
|
||||
|
||||
---
|
||||
|
||||
### **2\. 非Root用户恢复(仅保留部分权限)**
|
||||
|
||||
如果源数据 **不是** root 所有,或者目标服务器 **不信任** root 访问,可以仅保留可管理的权限:
|
||||
|
||||
```bash
|
||||
rsync -av --no-perms --no-owner --no-group --times /source/ user@remote:/destination/
|
||||
```
|
||||
|
||||
或(部分保留):
|
||||
|
||||
```bash
|
||||
rsync -rtlgoDv --no-perms --no-owner /source/ user@remote:/destination/
|
||||
```
|
||||
|
||||
**参数说明:**
|
||||
|
||||
- `--no-perms`、`--no-owner`、`--no-group`:跳过权限和所有权(非root用户无法修改这些)
|
||||
|
||||
- `--times` (`-t`):仅保留时间戳
|
||||
|
||||
- `-D`:保留设备文件(仅限root)
|
||||
|
||||
- `-o` (`--owner`)、`-g` (`--group`):尝试保留用户/组(可能仅在root下有效)
|
||||
|
||||
|
||||
---
|
||||
|
||||
### **3\. 跨服务器同步的完整权限保障方案**
|
||||
|
||||
如果既要同步数据,又想 **以后能完整恢复**(即使源服务器崩溃),最佳方式是:
|
||||
|
||||
1. **备份元数据**(先存一份权限信息,以防后续恢复):
|
||||
|
||||
|
||||
```bash
|
||||
getfacl -R /source/ > /backup/source_permissions.acl
|
||||
```
|
||||
|
||||
2. **用** `rsync` **完整同步数据**:
|
||||
|
||||
|
||||
```bash
|
||||
sudo rsync -avAXH --numeric-ids --delete /source/ user@remote:/destination/
|
||||
```
|
||||
|
||||
3. **恢复时重新应用权限**:
|
||||
|
||||
|
||||
```bash
|
||||
sudo setfacl --restore=/backup/source_permissions.acl
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### **4\. 限制非Root权限的方案**
|
||||
|
||||
如果源数据 **有 root 权限部分**,但目标机器 **不能使用 root**,可以采用:
|
||||
|
||||
1. **只同步你能控制的文件**:
|
||||
|
||||
|
||||
```bash
|
||||
rsync -av --rsync-path="sudo -u targetuser rsync" \
|
||||
--filter="- *root*" /source/ user@remote:/destination/
|
||||
```
|
||||
|
||||
2. **使用** `fakeroot`**(模拟root权限)**(仅适用于部分环境):
|
||||
|
||||
|
||||
```bash
|
||||
fakeroot rsync -av /source/ user@remote:/destination/
|
||||
```
|
||||
|
||||
3. **在恢复时手动修复权限**(适用于少量文件):
|
||||
|
||||
|
||||
```bash
|
||||
chmod/chown 手工调整权限
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### **总结**
|
||||
|
||||
| 方案 | 适用场景 | 能否100%恢复权限 |
|
||||
| --- | --- | --- |
|
||||
| **root+**`-aAXH` | 需要完整恢复 | ✅ 可以 |
|
||||
| `--numeric-ids` | 跨机器同步 | ✅ 可以 |
|
||||
| **非root** `rsync` | 受限权限 | ❌ 部分丢失 |
|
||||
| **ACL备份+恢复** | 安全恢复 | ✅ 可以 |
|
||||
|
||||
如果数据是关键业务,建议 **先测试恢复流程**,确保 `rsync` 参数正确,避免权限丢失!
|
||||
Reference in New Issue
Block a user