57 lines
1.1 KiB
Go
57 lines
1.1 KiB
Go
|
package system
|
||
|
|
||
|
import (
|
||
|
"github.com/shirou/gopsutil/disk"
|
||
|
"os"
|
||
|
"path/filepath"
|
||
|
"time"
|
||
|
)
|
||
|
|
||
|
const TypeDisk = "disk"
|
||
|
|
||
|
func GetDiskPartitions() []disk.PartitionStat {
|
||
|
partitions, _ := disk.Partitions(true)
|
||
|
return partitions
|
||
|
}
|
||
|
|
||
|
func GetDiskUsage(diskPath string) *disk.UsageStat {
|
||
|
usageStat, _ := disk.Usage(diskPath)
|
||
|
return usageStat
|
||
|
}
|
||
|
|
||
|
func GetIOCounters() map[string]disk.IOCountersStat {
|
||
|
info, _ := disk.IOCounters()
|
||
|
return info
|
||
|
}
|
||
|
|
||
|
type FileEntry struct {
|
||
|
Path string
|
||
|
Name string
|
||
|
IsDir bool
|
||
|
IsSymlink bool
|
||
|
ModTime time.Time
|
||
|
Size int64
|
||
|
}
|
||
|
|
||
|
func ScanDir(path string) ([]*FileEntry, error) {
|
||
|
entries, err := os.ReadDir(path)
|
||
|
data := make([]*FileEntry, 0, len(entries))
|
||
|
for _, entry := range entries {
|
||
|
info, _ := entry.Info()
|
||
|
_path := filepath.Join(path, entry.Name())
|
||
|
|
||
|
info.Size()
|
||
|
info.ModTime()
|
||
|
|
||
|
data = append(data, &FileEntry{
|
||
|
Path: _path,
|
||
|
Name: entry.Name(),
|
||
|
IsDir: entry.IsDir(),
|
||
|
IsSymlink: entry.Type() == os.ModeSymlink,
|
||
|
Size: info.Size(),
|
||
|
ModTime: info.ModTime(),
|
||
|
})
|
||
|
}
|
||
|
return data, err
|
||
|
}
|