verificar ver una total tamaño obtener liberar espacio duro disco comando carpeta go diskspace

go - una - ver tamaño total de disco en linux



Obtén la cantidad de espacio libre en disco usando Go (1)

En los sistemas POSIX puede usar syscall.Statfs .
Ejemplo de impresión de espacio libre en bytes del directorio de trabajo actual:

import "syscall" import "os" var stat syscall.Statfs_t wd, err := os.Getwd() syscall.Statfs(wd, &stat) // Available blocks * size per block = available space in bytes fmt.Println(stat.Bavail * uint64(stat.Bsize))

Para Windows también necesitas ir a la ruta de syscall. Ejemplo ( source ):

h := syscall.MustLoadDLL("kernel32.dll") c := h.MustFindProc("GetDiskFreeSpaceExW") var freeBytes int64 _, _, err := c.Call(uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(wd))), uintptr(unsafe.Pointer(&freeBytes)), nil, nil)

Siéntase libre de escribir un paquete que proporcione la funcionalidad multiplataforma. Sobre cómo implementar algo multiplataforma, vea la página de ayuda de la herramienta de compilación .

Básicamente quiero la salida de df -h , que incluye tanto el espacio libre como el tamaño total del volumen. La solución debe funcionar en Windows, Linux y Mac y estar escrita en Go.

He syscall documentación de syscall y syscall Go y no he encontrado nada. En Windows, incluso las utilidades de la línea de comandos son torpes ( dir C:/ ) o necesitan privilegios elevados ( fsutil volume diskfree C:/ ). Seguramente hay una manera de hacer esto que no he encontrado todavía ...

ACTUALIZAR:
Por la respuesta e invitación de nemo, proporcioné un paquete Go multiplataforma que hace esto.