diff options
Diffstat (limited to 'pkg/osutil/osutil.go')
| -rw-r--r-- | pkg/osutil/osutil.go | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/pkg/osutil/osutil.go b/pkg/osutil/osutil.go index 936465ee7..fa963a3fb 100644 --- a/pkg/osutil/osutil.go +++ b/pkg/osutil/osutil.go @@ -11,6 +11,7 @@ import ( "errors" "fmt" "io" + "io/fs" "os" "os/exec" "path/filepath" @@ -366,3 +367,20 @@ func CreationTime(fi os.FileInfo) time.Time { // //go:linkname MonotonicNano runtime.nanotime func MonotonicNano() time.Duration + +// DiskUsage returns total recursive disk usage of the dir (similar to du -s). +func DiskUsage(dir string) (uint64, error) { + var total uint64 + err := filepath.WalkDir(dir, func(path string, d fs.DirEntry, err error) error { + if err != nil { + return err + } + info, err := d.Info() + if err != nil { + return err + } + total += sysDiskUsage(info) + return nil + }) + return total, err +} |
