feat: #11 增加更多排除的挂载点

This commit is contained in:
Akizon77
2025-08-05 04:41:30 +00:00
parent 75cec587e2
commit e24eb93c53

View File

@@ -59,32 +59,49 @@ func isPhysicalDisk(part disk.PartitionStat) bool {
return true return true
} }
mountpoint := strings.ToLower(part.Mountpoint) mountpoint := strings.ToLower(part.Mountpoint)
// 临时文件系统 // 排除挂载点
if mountpoint == "/tmp" || mountpoint == "/var/tmp" || mountpoint == "/dev/shm" || var mountpointsToExclude = []string{
mountpoint == "/run" || mountpoint == "/run/lock" { "/tmp",
"/var/tmp",
"/dev/shm",
"/run",
"/run/lock",
"/run/user/",
"/var/lib/containers/",
"/var/lib/docker/",
}
for _, mp := range mountpointsToExclude {
if mountpoint == mp || strings.HasPrefix(mountpoint, mp) {
return false return false
} }
}
fstype := strings.ToLower(part.Fstype) fstype := strings.ToLower(part.Fstype)
// 网络驱动器 var fstypeToExclude = []string{
if strings.HasPrefix(fstype, "nfs") || strings.HasPrefix(fstype, "cifs") || "tmpfs",
strings.HasPrefix(fstype, "smb") || fstype == "vboxsf" || fstype == "9p" || "devtmpfs",
strings.Contains(fstype, "fuse") { "nfs",
"cifs",
"smb",
"vboxsf",
"9p",
"fuse",
"overlay",
}
for _, fs := range fstypeToExclude {
if fstype == fs || strings.HasPrefix(fstype, fs) {
return false return false
} // Windows 网络驱动器通常是映射盘符但不容易通过fstype判断 }
}
// Windows 网络驱动器通常是映射盘符但不容易通过fstype判断
// 可以通过opts判断Windows网络驱动通常有相关选项 // 可以通过opts判断Windows网络驱动通常有相关选项
optsStr := strings.ToLower(strings.Join(part.Opts, ",")) optsStr := strings.ToLower(strings.Join(part.Opts, ","))
if strings.Contains(optsStr, "remote") || strings.Contains(optsStr, "network") { if strings.Contains(optsStr, "remote") || strings.Contains(optsStr, "network") {
return false return false
} }
// Docker overlay
if fstype == "overlay" {
return false
}
// 虚拟内存 // 虚拟内存
if strings.HasPrefix(part.Device, "/dev/loop") || fstype == "devtmpfs" || fstype == "tmpfs" { if strings.HasPrefix(part.Device, "/dev/loop") {
return false return false
} }