Recientemente me encontré con este problema:
find /tmp/tmp33hn25wv -type f -exec stat --format='%s' {} + | awk '{s+=$1} END {print s}'
10420224
du -bs /tmp/tmp33hn25wv
12198004 /tmp/tmp33hn25wv
Los resultados son consistentemente diferentes. Todos los archivos se escriben en múltiplos de bytes de tamaño de bloque.
Donde haceduencontrar estos bytes extra? Entiendo que el sistema de archivos puede necesitar más o menos espacio para almacenar el contenido de los archivos, pero esperaba que esa -b
opción du
significara que tiene que contar el tamaño "aparente", no el tamaño utilizado por el sistema de archivos...
Respuesta1
du
incluye el tamaño de los directorios. Si agrega -type d
a los find
criterios, puede obtener el resultado que desea (lo hago en un árbol de directorios que contiene solo archivos estándar):
find /tmp/tmp33hn25wv \( -type f -o -type d \) -exec stat --format='%s' {} + |\
awk '{s+=$1} END {print s}'
Sin embargo, puede haber otros tipos de archivos que ocupen espacio, así que intente omitir la verificación de tipo por completo:
find /tmp/tmp33hn25wv -exec stat --format='%s' {} + | awk '{s+=$1} END {print s}'