Tenho três cópias da mesma pasta, mas os tamanhos são diferentes. Por que?
Eu tenho uma pasta "Documentos" que copiei de um lvm criptografado no disco rígido da minha área de trabalho para uma partição luks criptografada em uma unidade externa. Em seguida, copiei esta pasta da unidade externa para um lvm criptografado no disco rígido do meu laptop.
Portanto, tenho três cópias da mesma pasta:
- Área de Trabalho
- Unidade externa
- Computador portátil
Eu usei diff
entre desktop e unidade externa -> sem diferenças.
Eu usei diff
entre laptop e unidade externa -> sem diferenças.
Mas tenho tamanhos de pasta diferentes para os três casos.
Eu tenho usado
du -bs --apparent-size Documents
para medir os tamanhos. Aqui estão os resultados:
- Área de trabalho: 1735750760
- Unidade externa: 1735742568
- Computador portátil: 1735746664
Então, notamos que há uma pequena diferença entre os tamanhos. Pequena diferença, mas ainda está lá. Eu estava me perguntando por que isso acontecia. Você tem uma explicação?
Responder1
Você deve ter notado que a diferença entre as diferentes pastas é a seguinte:
Desktop: 1735750760
- 8192
External drive: 1735742568
+ 4096
Laptop: 1735746664
Na minha experiência, essas diferenças de blocos de 4K geralmente resultam de alterações nos tamanhos dos diretórios. Se você comparar os tamanhos dos diretórios em si (em sistemas de arquivos ext geralmente múltiplos de 4K), poderá encontrar a diferença.
(por exemplo, os diretórios às vezes ficam menores quando são reestruturados durante uma operação de cópia e as entradas excluídas são eliminadas)
Para encontrar diretórios com tamanhos diferentes, você terá que compará-los entre si. O script a seguir pode ajudá-lo com isso:
#!/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 o código para um novo arquivo (por exemplo, dircomp.sh) e torne-o executável chmod +x dircomp.sh
. Então chame de like ./dircomp.sh /home/lemenhir/ /media/lemenhir/ExternalDrive/
.
A saída agora deve listar apenas diretórios com tamanhos diferentes e pode ter esta aparência:
< 4 Documents/Appartement/Bail
> 8 Documents/Appartement/Bail
onde as linhas que começam com <
estão listando os diretórios localizados no diretório fornecido como o primeiro parâmetro (por exemplo, /home/lemenhir/) e as linhas que começam com >
estão listando os diretórios localizados no diretório fornecido como o segundo parâmetro (por exemplo, /media/lemenhir/ExternalDrive/) .
Se aparecerem linhas únicas, o diretório não existe no diretório oposto.
Espero que isto ajude.