<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>系列 on bugwang</title>
    <link>https://bugwang.cn/series/%E7%B3%BB%E5%88%97/</link>
    <description>Recent content in 系列 on bugwang</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>zh-ch</language>
    <lastBuildDate>Thu, 14 Aug 2025 17:06:02 +0800</lastBuildDate><atom:link href="https://bugwang.cn/series/%E7%B3%BB%E5%88%97/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>好久没写博客了</title>
      <link>https://bugwang.cn/posts/%E5%A5%BD%E4%B9%85%E6%B2%A1%E5%86%99%E5%8D%9A%E5%AE%A2%E4%BA%86/</link>
      <pubDate>Thu, 14 Aug 2025 17:06:02 +0800</pubDate>
      
      <guid>https://bugwang.cn/posts/%E5%A5%BD%E4%B9%85%E6%B2%A1%E5%86%99%E5%8D%9A%E5%AE%A2%E4%BA%86/</guid>
      <description>爱你😘</description>
    </item>
    
    <item>
      <title>PVE重建 LVM-Thin 精简池</title>
      <link>https://bugwang.cn/posts/pve%E9%87%8D%E5%BB%BA-lvm-thin-%E7%B2%BE%E7%AE%80%E6%B1%A0%E7%BC%A9%E5%B0%8F%E9%BB%98%E8%AE%A4-local-lvm-%E5%AD%98%E5%82%A8/</link>
      <pubDate>Thu, 06 Jun 2024 15:52:37 +0800</pubDate>
      
      <guid>https://bugwang.cn/posts/pve%E9%87%8D%E5%BB%BA-lvm-thin-%E7%B2%BE%E7%AE%80%E6%B1%A0%E7%BC%A9%E5%B0%8F%E9%BB%98%E8%AE%A4-local-lvm-%E5%AD%98%E5%82%A8/</guid>
      <description>PVE重建 LVM-Thin 精简池：缩小默认 local-lvm 存储 背景 ProxmoxVE 的默认安装会创建 local 和 local-lvm 两个存储。其中local大约磁盘容量的10%，存储类别为目录。 大部分容量都给到了 local-lvm，也就是存储类别为 lvm-thin 的LVM精简卷。
前置知识： LVM逻辑卷管理器中，lv逻辑卷中还存在thin pool精简池模式，相当于 ESXI 的精简制备（Thin provisioning）； thin pool精简池就是一个存储池，可以在池子的基础再新建lv逻辑卷，也就是thin volume精简卷。
因为考虑空间回收问题，我不想像大多数网上教程一样，把全部存储空间改成目录，下面介绍如何将默认的 local-lvm 存储重建（缩小）。
一条龙命令 #假设你已经有了一个名为 pve 的 LVM 卷组 lvcreate -L 100G -T pve/thinpool lvcreate -V 99G --thin -n thinvolume pve/thinpool #剩下的空间给到目录 lvresize --extents +100%FREE --resizefs pve/root #+100%FREE也可以换成+多少G这种形式。 vim /etc/pve/storage.cfg
lvmthin: thinvolume thinpool thinpool vgname pve content images,rootdir 参考我的命令历史： 一、删除默认thinpool精简池 失败操作 root@pve:~# lvremove /dev/pve/data Removing pool &amp;#34;data&amp;#34; will remove 3 dependent volume(s).</description>
    </item>
    
    <item>
      <title>Python终端Debug调试：Pdb</title>
      <link>https://bugwang.cn/posts/python%E7%BB%88%E7%AB%AF%E8%B0%83%E8%AF%95debug%E5%91%BD%E4%BB%A4pdb/</link>
      <pubDate>Mon, 12 Jun 2023 08:57:40 +0800</pubDate>
      
      <guid>https://bugwang.cn/posts/python%E7%BB%88%E7%AB%AF%E8%B0%83%E8%AF%95debug%E5%91%BD%E4%BB%A4pdb/</guid>
      <description>使用Pdb模块：breakpoint()方法 程序当中，至少要有一个breakpoint()
在你需要的打断点的位置，加上： breakpoint() 查看调用栈：w | where 显示的是从上到下的 路径/文件.py(括号里是行号) (Pdb) w d:\administrator\projects\pdb_test.py(12)&amp;lt;module&amp;gt;() -&amp;gt; func_obj = func1() &amp;gt; d:\administrator\projects\pdb_test.py(4)func1() -&amp;gt; def inner(value): &amp;#39;&amp;#39;&amp;#39; &amp;gt; 仅右箭头：表示当前frame &amp;#39;&amp;#39;&amp;#39; 切换帧（调整当前帧frame）：u、d u | up d | down (Pdb) u &amp;gt; d:\administrator\projects\pdb_test.py(12)&amp;lt;module&amp;gt;() -&amp;gt; func_obj = func1() (Pdb) w &amp;gt; d:\administrator\projects\pdb_test.py(12)&amp;lt;module&amp;gt;() -&amp;gt; func_obj = func1() d:\administrator\projects\pdb_test.py(4)func1() -&amp;gt; def inner(value): 查看断点附近代码：l、ll l | lst：默认显示附近11行 l . ：回到当前行 ll | longlst：查看当前函数全部代码 (Pdb) l 1 def func1(): 2 data = [] 3 breakpoint() 4 -&amp;gt; def inner(value): 5 data.</description>
    </item>
    
    <item>
      <title>Rclone从安装到长期挂载服务</title>
      <link>https://bugwang.cn/posts/rclone%E4%BB%8E%E5%AE%89%E8%A3%85%E5%88%B0%E6%8C%82%E8%BD%BD%E9%95%BF%E6%9C%9F%E6%9C%8D%E5%8A%A1/</link>
      <pubDate>Sat, 04 Mar 2023 23:37:09 +0800</pubDate>
      
      <guid>https://bugwang.cn/posts/rclone%E4%BB%8E%E5%AE%89%E8%A3%85%E5%88%B0%E6%8C%82%E8%BD%BD%E9%95%BF%E6%9C%9F%E6%9C%8D%E5%8A%A1/</guid>
      <description>安装 Linux Rclone官方提供了一键安装脚本： curl https://rclone.org/install.sh | bash apt install -y fuse3 Win scoop install rclone #cd C:\Users\Administrator\scoop\apps\rclone #dir 配置 第一次配置 在终端输入 rclone config 进行配置
rclone config - 进入交互式配置选项，进行添加、删除、管理网盘等操作。
详细操作参见：《Rclone 安装配置教程》
再次重复配置 备份 rclone config file - 显示配置文件的路径，一般配置文件在 ~/.config/rclone/rclone.conf
rclone config show - 显示配置文件内容，复制备份
恢复 mkdir -p ~/.config/rclone cat &amp;gt; ~/.config/rclone/rclone.conf &amp;lt;&amp;lt;EOF 《rclone.conf配置文件内容》 EOF 指定rclone配置文件启动 默认配置：/root/.config/rclone/rclone.conf
--config /root/.config/rclone/rclone.conf #例如 rclone lsd gd_share: --config=~/.config/rclone/rclone.conf 启动 rclone常用命令 ### 文件上传 rclone copy /home/backup gdrive:backup # 本地路径 配置名字:网盘文件夹路径 ### 文件下载 rclone copy gdrive:backup /home/backup # 配置名字:网盘文件夹路径 本地路径 ### 新建文件夹 rclone mkdir gdrive:backup # 配置名字:网盘文件夹路径 ### 获取文件夹大小 rclone size gdrive:backup # 配置名字:网盘文件夹路径 ### 列表 rclone ls gdrive:backup rclone lsl gdrive:backup # 比上面多一个显示上传时间 rclone lsd gdrive:backup # 只显示文件夹 ### 挂载 rclone mount gdrive:mm /root/mm &amp;amp; ### 卸载 fusermount -u /root/mm #### 其他 #### rclone config - 以控制会话的形式添加rclone的配置，配置保存在.</description>
    </item>
    
    <item>
      <title>Linux服务器备份和还原：tar命令</title>
      <link>https://bugwang.cn/posts/linux%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%A4%87%E4%BB%BD%E5%92%8C%E8%BF%98%E5%8E%9Ftar%E5%91%BD%E4%BB%A4/</link>
      <pubDate>Mon, 12 Sep 2022 09:18:09 +0800</pubDate>
      
      <guid>https://bugwang.cn/posts/linux%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%A4%87%E4%BB%BD%E5%92%8C%E8%BF%98%E5%8E%9Ftar%E5%91%BD%E4%BB%A4/</guid>
      <description>tar备份还原 备份 备份脚本
#!/bin/bash # 强制必须传参 if [ $# -eq 0 ]; then echo &amp;#34;Error: Missing parameter one. Usage: $0 &amp;lt;_BACKUP_DIR&amp;gt;, EXIT&amp;#34; exit 1 fi # 设置备份目录 _BACKUP_DIR=$(realpath &amp;#34;$1&amp;#34;) # 设置输出文件夹（包含末尾斜杠） DEST_PATH=&amp;#34;${_BACKUP_DIR}/$(hostname -I | awk &amp;#39;{print $1}&amp;#39;)/&amp;#34; mkdir -p &amp;#34;$DEST_PATH&amp;#34; # 设置输出文件基础名 DEST_BASE_FILENAME=$(basename &amp;#34;$0&amp;#34;) set -x # 检查 pv 命令存在并安装 _CMDNAME=pv if ! command -v $_CMDNAME &amp;amp;&amp;gt; /dev/null; then if command -v apt-get &amp;amp;&amp;gt; /dev/null; then apt-get update apt-get install -y $_CMDNAME else echo &amp;#34;Error: $_CMDNAME not found and apt-get can&amp;#39;t install.</description>
    </item>
    
    <item>
      <title>SSH应用：ssh隧道</title>
      <link>https://bugwang.cn/posts/ssh%E9%9A%A7%E9%81%93%E7%AB%AF%E5%8F%A3%E8%BD%AC%E5%8F%91/</link>
      <pubDate>Tue, 30 Nov 2021 10:28:32 +0800</pubDate>
      
      <guid>https://bugwang.cn/posts/ssh%E9%9A%A7%E9%81%93%E7%AB%AF%E5%8F%A3%E8%BD%AC%E5%8F%91/</guid>
      <description>文章来源：
https://iguoli.github.io/2018/09/08/OpenSSH-Port-Forwarding.html
以下端口转发命令都可以加上 -f、-N 和 -T 选项，-f 表示让 ssh 进入后台执行命令，-N 表示不执行远程命令，-T 表示不分配终端。
-f
Requests ssh to go to background just before command execution. This is useful if ssh is going to ask for passwords or passphrases, but the user wants it in the background. This implies -n. The recommended way to start X11 programs at a remote site is with something like ssh -f host xterm.
-N
Do not execute a remote command.</description>
    </item>
    
    <item>
      <title>MongoDB笔记：基本介绍</title>
      <link>https://bugwang.cn/posts/mongodb%E7%AC%94%E8%AE%B0%E5%9F%BA%E6%9C%AC%E4%BB%8B%E7%BB%8D/</link>
      <pubDate>Wed, 08 Sep 2021 18:26:04 +0800</pubDate>
      
      <guid>https://bugwang.cn/posts/mongodb%E7%AC%94%E8%AE%B0%E5%9F%BA%E6%9C%AC%E4%BB%8B%E7%BB%8D/</guid>
      <description>MongoDB笔记：基本介绍 简介:
MongoDB 是一个基于分布式文件存储的数据库,是一个介于关系数据库和非关系数据库之间的产品。
跟关系型数据库的一些概念对比
SQL术语/概念 MongoDB术语/概念 说明 database database 数据库 table collection 表/集合 row document 行/文档 column field 字段/域 index index 索引 内存管理
MongoDB使用的是内存映射存储引擎，把磁盘文件的一部分或全部内容直接映射到内存，这样文件中的信息位置就会在内存中有对应的地址空间，内存中主要存储索引+热数据，Mongodb没有单独的内存管理机制，跟随当前的操作系统的内存管理。
Python操作Mongodb 主流的操作mongodb模块 pymongo
安装 pip install pymongo
创建连接对象
from pymongo import MongoClient class MongoDBClient(object): def __new__(cls): if not hasattr(cls, &amp;#39;instance&amp;#39;): cls.instance = super(MongoDBClient, cls).__new__(cls) return cls.instance def __init__(self): self.params = { &amp;#39;host&amp;#39;: &amp;#39;localhost&amp;#39;, &amp;#39;port&amp;#39;: 27017, &amp;#39;connect&amp;#39;: False, &amp;#39;maxPoolSize&amp;#39;: 2000, &amp;#34;authSource&amp;#34;: &amp;#39;workbench&amp;#39;, # 验证数据库 &amp;#34;username&amp;#34;: &amp;#39;cnns&amp;#39;, # 用户名 &amp;#34;password&amp;#34;: &amp;#39;密码&amp;#39; # 密码 } self.</description>
    </item>
    
    <item>
      <title>Dockerfile笔记</title>
      <link>https://bugwang.cn/posts/docker%E7%AC%94%E8%AE%B0%E7%BC%96%E5%86%99dockerfile/</link>
      <pubDate>Sat, 07 Aug 2021 16:25:53 +0800</pubDate>
      
      <guid>https://bugwang.cn/posts/docker%E7%AC%94%E8%AE%B0%E7%BC%96%E5%86%99dockerfile/</guid>
      <description>DockerFile指令 Dockerfile指令包括：
Dockerfile 指令 说明 FROM 指定基础镜像，用于后续的指令构建。 MAINTAINER 指定Dockerfile的作者/维护者。（已弃用，推荐使用LABEL指令） LABEL 添加镜像的元数据，使用键值对的形式。 RUN 在构建过程中在镜像中执行命令。 CMD 指定容器创建时的默认命令。（可以被覆盖） ENTRYPOINT 设置容器创建时的主要命令。（不可被覆盖） EXPOSE 声明容器运行时监听的特定网络端口。 ENV 在容器内部设置环境变量。 ADD 将文件、目录或远程URL复制到镜像中。 COPY 将文件或目录复制到镜像中。 VOLUME 为容器创建挂载点或声明卷。 WORKDIR 设置后续指令的工作目录。 USER 指定后续指令的用户上下文。 ARG 定义在构建过程中传递给构建器的变量，可使用 “docker build” 命令设置。 ONBUILD 当该镜像被用作另一个构建过程的基础时，添加触发器。 STOPSIGNAL 设置发送给容器以退出的系统调用信号。 HEALTHCHECK 定义周期性检查容器健康状态的命令。 SHELL 覆盖Docker中默认的shell，用于RUN、CMD和ENTRYPOINT指令。 通过 Dockerfile 中的这些指令，可以构建出一个完整的Docker 镜像。
1 基础指令 1）FROM 格式： FROM &amp;lt;image&amp;gt; FROM &amp;lt;image&amp;gt;:&amp;lt;tag&amp;gt; 解释：FROM是Dockerfile的第一条而且只能是除了首行注释之外的第一条指令。
2）MAINTAINER 格式： MAINTAINER &amp;lt;name&amp;gt; 解释：指定该Dockerfile文件的维护者信息，类似我们在docker commit时候使用-a参数指定的信息。
3）RUN：(构建镜像) 运行命令（安装环境） 解释：执行命令并创建新的镜像层，通常用于安装软件包
格式： RUN &amp;lt;command&amp;gt; (shell 模式) RUN[&amp;#34;executable&amp;#34;, &amp;#34;param1&amp;#34;, &amp;#34;param2&amp;#34;] (exec 模式：注意需要&amp;#34;双引号&amp;#34;) shell模式：RUN echo 1 ——/bin/sh -c &amp;lsquo;1 &#39; 使用 shell 模式时，docker 会以 /bin/sh -c &amp;quot;task command&amp;quot; 的方式执行任务命令。也就是说容器中的 1号进程 不是任务进程而是 bash进程</description>
    </item>
    
  </channel>
</rss>
