<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Jdupes on KnightLi的博客</title>
        <link>https://knightli.com/tags/jdupes/</link>
        <description>Recent content in Jdupes on KnightLi的博客</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-cn</language>
        <lastBuildDate>Sat, 20 Jun 2026 19:09:03 +0800</lastBuildDate><atom:link href="https://knightli.com/tags/jdupes/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>群晖和飞牛 NAS 如何用 Btrfs &#43; jdupes CoW 去重节省空间</title>
        <link>https://knightli.com/2026/06/20/synology-fn-os-btrfs-jdupes-cow-dedup/</link>
        <pubDate>Sat, 20 Jun 2026 19:09:03 +0800</pubDate>
        
        <guid>https://knightli.com/2026/06/20/synology-fn-os-btrfs-jdupes-cow-dedup/</guid>
        <description>&lt;p&gt;如果 NAS 里经常保存影视文件、备份包、安装镜像、照片导出目录，重复文件很容易不知不觉占掉几百 GB 甚至几 TB。传统做法通常是删除重复文件，或者把重复文件改成硬链接，但这两种方式都不太适合 NAS 的长期存储。&lt;/p&gt;
&lt;p&gt;更稳妥的方式是：在支持 CoW 的文件系统上，用 &lt;code&gt;jdupes&lt;/code&gt; 做块级去重。&lt;/p&gt;
&lt;p&gt;对群晖和飞牛这类 NAS 用户来说，如果存储卷使用的是 Btrfs，就可以利用 &lt;code&gt;jdupes -B&lt;/code&gt; 调用文件系统底层能力，让重复文件共享同一份物理数据块。文件在目录里看起来仍然是独立文件，但底层只占一份空间。&lt;/p&gt;
&lt;h2 id=&#34;cow-去重和硬链接有什么区别&#34;&gt;CoW 去重和硬链接有什么区别
&lt;/h2&gt;&lt;p&gt;硬链接的逻辑是：多个路径指向同一个 inode。&lt;/p&gt;
&lt;p&gt;这确实能省空间，但也有明显问题：如果某个程序修改了其中一个文件，其他硬链接路径看到的内容也会一起变化。对媒体库、同步目录、照片管理和备份目录来说，这种行为很容易埋坑。&lt;/p&gt;
&lt;p&gt;Btrfs 的 CoW 去重不同。&lt;/p&gt;
&lt;p&gt;它的逻辑是：多个独立文件可以共享相同的数据块；一旦其中一个文件被修改，文件系统会把被修改的部分写到新的数据块，其他文件不受影响。&lt;/p&gt;
&lt;p&gt;也就是说，CoW 去重后：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;文件路径仍然互相独立；&lt;/li&gt;
&lt;li&gt;删除其中一个文件不会删除其他文件；&lt;/li&gt;
&lt;li&gt;修改其中一个文件不会改动其他文件；&lt;/li&gt;
&lt;li&gt;重复部分只在磁盘上占用一份空间。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这正是 &lt;code&gt;jdupes -B&lt;/code&gt; 比硬链接去重更适合 NAS 的原因。&lt;/p&gt;
&lt;h2 id=&#34;适合使用的场景&#34;&gt;适合使用的场景
&lt;/h2&gt;&lt;p&gt;比较适合跑 CoW 去重的目录包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;影视库中重复下载的剧集和电影；&lt;/li&gt;
&lt;li&gt;不同目录里的安装包、ISO、压缩包；&lt;/li&gt;
&lt;li&gt;多次导出的照片或视频素材；&lt;/li&gt;
&lt;li&gt;备份软件产生的重复大文件；&lt;/li&gt;
&lt;li&gt;手工整理时复制出来的临时目录。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;不太建议一上来就对整个系统卷运行。更稳的做法是先选一个用户数据目录，比如：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/volume1/video/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/volume1/photo/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/volume1/data1/aaa/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;先小范围测试，确认命令、排除规则和节省效果都符合预期，再扩大范围。&lt;/p&gt;
&lt;h2 id=&#34;基础命令&#34;&gt;基础命令
&lt;/h2&gt;&lt;p&gt;在 Btrfs 目录上使用 &lt;code&gt;jdupes&lt;/code&gt; 做 CoW 去重，核心参数是 &lt;code&gt;-B&lt;/code&gt;：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;jdupes -r -B &lt;span class=&#34;s2&#34;&gt;&amp;#34;/volume1/data1/aaa/&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;参数含义：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;-r&lt;/code&gt;：递归扫描子目录；&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-B&lt;/code&gt;：对找到的重复文件执行 Btrfs/CoW 去重，而不是创建硬链接；&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;quot;/volume1/data1/aaa/&amp;quot;&lt;/code&gt;：要扫描的目标目录。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这里最关键的是 &lt;code&gt;-B&lt;/code&gt;。它会让 &lt;code&gt;jdupes&lt;/code&gt; 调用文件系统支持的去重能力，通常对应 reflink、clone 或 dedupe range 这类底层接口。&lt;/p&gt;
&lt;h2 id=&#34;群晖建议排除-eadir-和-recycle&#34;&gt;群晖建议排除 @eaDir 和 #recycle
&lt;/h2&gt;&lt;p&gt;在群晖上，不建议把 &lt;code&gt;@eaDir&lt;/code&gt; 和 &lt;code&gt;#recycle&lt;/code&gt; 放进扫描范围。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;@eaDir&lt;/code&gt; 是群晖系统生成的隐藏目录，里面通常保存缩略图、媒体索引、扩展属性和套件相关缓存。它数量多、文件小，扫描成本高，收益很低，还可能干扰群晖自己的索引服务。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;#recycle&lt;/code&gt; 是共享文件夹的回收站。里面的文件本来就准备被清理，对它们去重意义不大，还会让结果变得难判断。&lt;/p&gt;
&lt;p&gt;所以在群晖上，更推荐把这两个目录排除掉。&lt;/p&gt;
&lt;p&gt;不同版本的 &lt;code&gt;jdupes&lt;/code&gt; 对 &lt;code&gt;-X&lt;/code&gt; 参数支持不完全一样。有些教程会写成：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;jdupes -r -B -X &lt;span class=&#34;s2&#34;&gt;&amp;#34;req:*/@eaDir/*&amp;#34;&lt;/span&gt; -X &lt;span class=&#34;s2&#34;&gt;&amp;#34;req:*/#recycle/*&amp;#34;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;/volume1/data1/aaa/&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;但部分群晖环境会报错：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Invalid extfilter filter name was specified
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果你的 &lt;code&gt;jdupes -X&lt;/code&gt; 帮助信息里显示支持 &lt;code&gt;nostr:text_string&lt;/code&gt;，可以使用更兼容的写法：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;jdupes -r -B -X nostr:/@eaDir/ -X nostr:/#recycle/ &lt;span class=&#34;s2&#34;&gt;&amp;#34;/volume1/data1/aaa/&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;含义很直接：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;-X nostr:/@eaDir/&lt;/code&gt;：排除路径中包含 &lt;code&gt;/@eaDir/&lt;/code&gt; 的文件；&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-X nostr:/#recycle/&lt;/code&gt;：排除路径中包含 &lt;code&gt;/#recycle/&lt;/code&gt; 的文件。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果目标路径包含中文或空格，一定要加双引号：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;jdupes -r -B -X nostr:/@eaDir/ -X nostr:/#recycle/ &lt;span class=&#34;s2&#34;&gt;&amp;#34;/volume1/photo/视频工作/&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;飞牛-nas-上怎么理解&#34;&gt;飞牛 NAS 上怎么理解
&lt;/h2&gt;&lt;p&gt;飞牛 NAS 如果使用 Btrfs 存储池，思路和群晖类似：重点仍然是确认目标目录位于 Btrfs 文件系统，并使用 &lt;code&gt;jdupes -B&lt;/code&gt; 做 CoW 去重。&lt;/p&gt;
&lt;p&gt;区别在于系统隐藏目录名称可能不同。群晖常见的是 &lt;code&gt;@eaDir&lt;/code&gt; 和 &lt;code&gt;#recycle&lt;/code&gt;，飞牛需要按实际目录结构决定排除规则。&lt;/p&gt;
&lt;p&gt;建议先执行：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;find &lt;span class=&#34;s2&#34;&gt;&amp;#34;/你的目标目录&amp;#34;&lt;/span&gt; -maxdepth &lt;span class=&#34;m&#34;&gt;2&lt;/span&gt; -type d
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;看一下是否存在系统缓存、回收站、索引目录或应用数据目录。真正值得去重的通常是用户数据里的大文件，而不是系统生成的小缓存。&lt;/p&gt;
&lt;h2 id=&#34;如何确认-cow-去重成功&#34;&gt;如何确认 CoW 去重成功
&lt;/h2&gt;&lt;p&gt;不要只看 &lt;code&gt;ls -l&lt;/code&gt;。CoW 去重后，文件逻辑大小不会变，目录里看起来还是多个完整文件。&lt;/p&gt;
&lt;p&gt;更可靠的验证方式有三种。&lt;/p&gt;
&lt;h3 id=&#34;1-看-jdupes-输出&#34;&gt;1. 看 jdupes 输出
&lt;/h3&gt;&lt;p&gt;运行过程中，如果看到类似输出，通常说明重复文件已经被识别并处理：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[SRC] /volume1/data1/aaa/1/file.mkv
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;====&amp;gt; /volume1/data1/aaa/2/file.mkv
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;====&amp;gt; /volume1/data1/aaa/3/file.mkv
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;code&gt;[SRC]&lt;/code&gt; 表示源文件，&lt;code&gt;====&amp;gt;&lt;/code&gt; 后面的文件表示被合并到同一份底层数据块上。文件仍然独立存在，但物理空间已经被压缩。&lt;/p&gt;
&lt;h3 id=&#34;2-对比-btrfs-空间变化&#34;&gt;2. 对比 Btrfs 空间变化
&lt;/h3&gt;&lt;p&gt;在去重前后分别运行：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo btrfs filesystem usage /volume1/data1/aaa/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;重点看这几个字段：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Used:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Free (estimated):
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Data,single: Used:
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果去重生效，一般会看到：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Used&lt;/code&gt; 减少；&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Data,single: Used&lt;/code&gt; 减少；&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Free (estimated)&lt;/code&gt; 增加。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;比如去重前 &lt;code&gt;Used&lt;/code&gt; 是 &lt;code&gt;8.44TiB&lt;/code&gt;，去重后下降到 &lt;code&gt;8.20TiB&lt;/code&gt;，哪怕只减少几十 GB，也说明 CoW 去重已经在释放物理空间。&lt;/p&gt;
&lt;h3 id=&#34;3-使用-compsize-查看真实占用&#34;&gt;3. 使用 compsize 查看真实占用
&lt;/h3&gt;&lt;p&gt;如果系统能安装 &lt;code&gt;compsize&lt;/code&gt;，可以更直观看到 Btrfs 压缩和去重后的真实占用：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo compsize &lt;span class=&#34;s2&#34;&gt;&amp;#34;/volume1/data1/aaa/&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;它比普通 &lt;code&gt;du&lt;/code&gt; 更适合理解 Btrfs 上的实际占用情况。&lt;/p&gt;
&lt;h2 id=&#34;安全运行建议&#34;&gt;安全运行建议
&lt;/h2&gt;&lt;p&gt;建议按下面顺序操作：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;先确认目标目录在 Btrfs 卷上；&lt;/li&gt;
&lt;li&gt;先对一个小目录测试，不要直接扫整个卷；&lt;/li&gt;
&lt;li&gt;排除系统隐藏目录、回收站和应用缓存目录；&lt;/li&gt;
&lt;li&gt;路径包含中文或空格时使用双引号；&lt;/li&gt;
&lt;li&gt;去重前记录一次 &lt;code&gt;btrfs filesystem usage&lt;/code&gt;；&lt;/li&gt;
&lt;li&gt;去重后再次记录并对比 &lt;code&gt;Used&lt;/code&gt; 和 &lt;code&gt;Free (estimated)&lt;/code&gt;；&lt;/li&gt;
&lt;li&gt;不确定参数含义时，先运行 &lt;code&gt;jdupes --help&lt;/code&gt; 看本机版本支持的过滤器。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;最推荐的群晖命令可以从这一条开始：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;jdupes -r -B -X nostr:/@eaDir/ -X nostr:/#recycle/ &lt;span class=&#34;s2&#34;&gt;&amp;#34;/volume1/data1/aaa/&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果你的 &lt;code&gt;jdupes&lt;/code&gt; 版本不支持 &lt;code&gt;nostr&lt;/code&gt;，就根据 &lt;code&gt;jdupes -X&lt;/code&gt; 或 &lt;code&gt;jdupes --help&lt;/code&gt; 的输出调整过滤参数。&lt;/p&gt;
&lt;h2 id=&#34;小结&#34;&gt;小结
&lt;/h2&gt;&lt;p&gt;Btrfs + &lt;code&gt;jdupes -B&lt;/code&gt; 的价值在于：不用删除文件，也不用把文件改成硬链接，就能让重复内容共享底层物理空间。&lt;/p&gt;
&lt;p&gt;对群晖、飞牛这类 NAS 用户来说，它特别适合处理重复影视文件、备份文件和大体积素材目录。真正需要注意的是扫描范围和排除规则：优先处理用户数据，避开系统缓存和回收站，去重前后用 Btrfs 工具对比空间变化。&lt;/p&gt;
&lt;p&gt;简单说，想安全省空间，优先记住这一句：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;jdupes -r -B -X nostr:/@eaDir/ -X nostr:/#recycle/ &lt;span class=&#34;s2&#34;&gt;&amp;#34;/你的Btrfs数据目录/&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
        </item>
        
    </channel>
</rss>
