念念不忘
必会回响

利用目录连接解决C盘数据文件过大的问题

上篇介绍了《PowerShell统计Windows的文件夹大小 》,根据统计结果,我发现总共有几个文件占用比较夸张,具体如下所示:

C:\ProgramData\

Kaspersky Lab                        6890.59 MB
NVIDIA                               4536.47 MB
NVIDIA Corporation                   4189.88 MB
Microsoft                            2385.78 MB
Lenovo                               1654.15 MB
# 环境变量为 $env:APPDATA
C:\Users\用户\AppData\Roaming
Notion                                    19016.78 MB
Tencent                                   7532.22 MB
JetBrains                                 3691.49 MB
npm-cache                                 1899.45 MB

# 环境变量为$env:LOCALAPPDATA
 C:\Users\用户\AppData\Local
Microsoft                                 6967.01 MB
NVIDIA                                    5484.8 MB
JetBrains                                 3243.41 MB
Temp                                      2379.17 MB
Programs                                  1812.47 MB
Lenovo                                    1506.49 MB
Google                                    1231.54 MB
Packages                                  962.48 MB
$env:LOCALAPPDATA 对应 C:\Users\用户\AppData\Local
$env:APPDATA 对应 C:\Users\用户\AppData\Roaming

从上面的统计可以看到,NVIDIA占用真的多啊,此时需要寄出老祖经典名场面

大概看了下,Notion是因为里面的C:\Users\用户\AppData\Roaming\Notion\Partitions占用了18G,直接将其删除掉,保险起见使用如下命令:

# 停止进程
Stop-Process -Name "Notion" -ErrorAction SilentlyContinue

# 删除目录
Remove-Item -Path "$env:APPDATA\Notion\Partitions" -Recurse -Force
Notion 使用了类似浏览器的索引技术(IndexedDB),当你浏览含有大量图片、视频或嵌入内容的页面时,Notion 会将这些资源缓存在本地以提高加载速度。
多账号切换: 如果你在客户端登录了多个账号,每个账号都会生成独立的缓存。
重型页面: 频繁查看带有大量附件的数据库会迅速填满该目录。

为了避免后期缓存太多导致占用C盘,将其剪切到其他盘,例如E:\AppData\Notion,然后创建软连接到这里

New-Item -ItemType Junction -Path "$env:APPDATA\Notion" -Target "E:\AppData\Notion"

同样的方式可以将JetBrains也如此操作:

New-Item -ItemType Junction -Path "$env:LOCALAPPDATA\JetBrains" -Target "E:\AppData\JetBrains\Local"

New-Item -ItemType Junction -Path "$env:LOCALAPPDATA\JetBrains" -Target "E:\AppData\JetBrains\Roaming"

如果你是用的是CMD,也可以使用如下命令,效果是相同的,但更推荐使用PowerShell:

mklink /j "C:\Users\用户\AppData\Local\JetBrains" "E:\AppData\JetBrains\Local"

设置完成后确认下是否有误

Get-Item "$env:APPDATA\Notion" | Select-Object Mode, LinkType, Target

输出如下:

Mode  LinkType Target
----  -------- ------
l---- Junction E:\AppData\Notion

这样就再也不用担心C盘被塞满了。当然,Nvidia也可以这么操作,但是通常不建议这么干。

最佳方案就是笔记本系统盘使用1T的SSD,另一个插槽买个2T SSD,为了方便管理可以将2T的分为D盘和E盘。

关于PowerShell的目录链接和符号链接,大致区别如下:

特性Junction (目录联接)Symbolic Link (符号链接)
创建命令New-Item -ItemType JunctionNew-Item -ItemType SymboliLink
支持对象仅限目录(文件夹)目录 + 文件
跨盘符支持支持(从 C 搬到 D)支持
远程路径不支持(必须是本地硬盘)支持(可以链接到局域网共享目录)
路径类型使用绝对路径支持相对路径
移动目标后立即失效立即失效

Junction (目录联接) —— “分身术”

Junction 是 NTFS 文件系统的一种硬性重定向。当你访问 C:\Users\用户\AppData\Local\JetBrains 时,文件系统内核会直接将其重定向到 D:\JetBrains_Data\Local

  • 特点:对于软件来说,它完全意识不到自己在 D 盘工作。它的兼容性最高,非常适合用来搬移 AppData 下的软件缓存。
  • 历史:从 Windows 2000 开始就存在,非常稳定。

Symbolic Link (符号链接/软链接) —— “更强的快捷方式”

它更像是一个特殊的“文件”,里面记录了目标的路径信息。

  • 特点:它可以指向文件(比如把一个巨大的游戏资源文件 .pak 链到别处)。
  • 缺点:创建符号链接通常需要管理员权限(除非开启了 Windows 开发人员模式)。有些旧软件可能不识别符号链接。
赞(0) 打赏
未经允许不得转载:堆上小栈 » 利用目录连接解决C盘数据文件过大的问题

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续提供更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫

登录

找回密码

注册