Mismo contenido de carpeta pero diferentes tamaños en diferentes unidades, ¿por qué?

Mismo contenido de carpeta pero diferentes tamaños en diferentes unidades, ¿por qué?

Tengo tres copias de la misma carpeta pero los tamaños de estas son diferentes. ¿Por qué?

Tengo una carpeta "Documentos" que copié de un lvm cifrado en el disco duro de mi escritorio a una partición luks cifrada en un disco externo. Luego copié esta carpeta del disco externo a un lvm cifrado en el disco duro de mi computadora portátil.

Entonces tengo tres copias de la misma carpeta:

  • Escritorio
  • unidad externa
  • Computadora portátil

Lo he usado diffentre computadora de escritorio y disco externo -> sin diferencias.

Lo he usado diffentre una computadora portátil y un disco externo -> sin diferencias.

Pero tengo diferentes tamaños de carpetas para los tres casos.

He usado

du -bs --apparent-size Documents

Para medir las tallas. Aquí están los resultados:

  • Escritorio: 1735750760
  • Unidad externa: 1735742568
  • Computadora portátil: 1735746664

Entonces, notamos que hay una ligera diferencia entre las tallas. Pequeña diferencia pero sigue ahí. Me preguntaba por qué fue así. ¿Tienes una explicación?

Respuesta1

Es posible que hayas notado que la diferencia entre las diferentes carpetas es la siguiente:

    Desktop:        1735750760
                  -       8192
    External drive: 1735742568  
                  +       4096  
    Laptop:         1735746664  

Según mi experiencia, estas diferencias en los bloques de 4K suelen deberse a cambios en el tamaño de los directorios. Si compara los tamaños de los directorios (en sistemas de archivos ext, generalmente múltiplos de 4K), es posible que encuentre la diferencia.
(por ejemplo, los directorios a veces se vuelven más pequeños cuando se reestructuran durante una operación de copia y, por lo tanto, las entradas eliminadas se eliminan)

Para encontrar directorios que difieran en tamaño, deberá comparar los directorios entre sí. El siguiente script podría ayudarle con eso:

#!/bin/bash
DIR1="${1%/}/"
DIR2="${2%/}/"

diff \
  <(find $DIR1 -type d -printf "%k %p\n" | sed -e "s|$DIR1||" | sort -k2) \
  <(find $DIR2 -type d -printf "%k %p\n" | sed -e "s|$DIR2||" | sort -k2)

Copie el código en un archivo nuevo (por ejemplo, dircomp.sh) y hágalo ejecutable chmod +x dircomp.sh. Entonces llámalo así ./dircomp.sh /home/lemenhir/ /media/lemenhir/ExternalDrive/.

El resultado ahora debería enumerar solo directorios con diferentes tamaños y podría verse así:

< 4 Documents/Appartement/Bail
> 8 Documents/Appartement/Bail

donde las líneas que comienzan con <enumeran directorios ubicados en el directorio dado como primer parámetro (por ejemplo, /home/lemenhir/) y las líneas que comienzan con >enumeran directorios ubicados en el directorio dado como segundo parámetro (por ejemplo, /media/lemenhir/ExternalDrive/) .

Si aparecen líneas individuales, entonces el directorio no existe en el directorio opuesto.

Espero que esto ayude.

información relacionada