微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何检查2个目录是否在同一分区上?

如何解决如何检查2个目录是否在同一分区上?

代码显示了一种使用 python3 检查两个目录是否在 linux 中的同一分区上的方法。有人知道如何在 Go 中做同样的事情吗?

import stat
import os

def same_partition(dir1: str,dir2: str) -> bool:
    stat1 = os.statvfs(dir1)
    stat2 = os.statvfs(dir2)
    return stat1[stat.ST_DEV] == stat2[stat.ST_DEV]

解决方法

os.Stat() 返回 os.FileInfo 结构,并通过 Sys() 向底层数据源提供传递 - 在 UNIX 系统上(因此代码显然不能移植到例如 Windows)它是stat 系统调用,其中包含设备号信息。设备编号可以从 syscall.Stat_t 结构体的 Dev 字段中获取。以下是如何从 FileInfo 获取设备编号的快速示例:

// NOTE This is PoC for SO purposes so do error handling,etc.
stat1,_ := os.Stat("/drive1/a.txt")
stat2,_ := os.Stat("/drive2/b.txt")
    
// returns *syscall.Stat_t
fmt.Println(reflect.TypeOf(statA.Sys()))

fmt.Println(stat1.Sys().(*syscall.Stat_t).Dev)
fmt.Println(stat2.Sys().(*syscall.Stat_t).Dev)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。