폴더 내용은 동일하지만 드라이브마다 크기가 다른 이유는 무엇입니까?

폴더 내용은 동일하지만 드라이브마다 크기가 다른 이유는 무엇입니까?

동일한 폴더의 복사본이 3개 있는데 크기가 다릅니다. 왜?

데스크탑 하드 드라이브의 암호화된 lvm에서 외부 드라이브의 암호화된 luks 파티션으로 복사한 "Documents" 폴더가 있습니다. 그런 다음 이 폴더를 외부 드라이브에서 내 노트북 ​​하드 드라이브의 암호화된 lvm으로 복사했습니다.

따라서 동일한 폴더의 복사본이 세 개 있습니다.

  • 데스크탑
  • 외장 드라이브
  • 랩탑

diff나는 데스크탑과 외장 드라이브를 사용했습니다 -> 차이가 없습니다.

diff나는 랩톱과 외장 드라이브를 사용했습니다 --> 차이가 없습니다.

하지만 세 가지 경우에 대해 폴더 크기가 다릅니다.

나는 사용했다

du -bs --apparent-size Documents

크기를 측정하기 위해. 결과는 다음과 같습니다.

  • 데스크톱: 1735750760
  • 외장 드라이브: 1735742568
  • 노트북: 1735746664

그래서 우리는 크기 사이에 약간의 차이가 있음을 알 수 있습니다. 작은 차이가 있지만 여전히 존재합니다. 왜 그럴까 궁금했어요. 설명이 있나요?

답변1

다양한 폴더 간의 차이점은 다음과 같습니다.

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

내 경험에 따르면 이러한 4K 블록의 차이는 일반적으로 디렉터리 크기의 변경으로 인해 발생합니다. 디렉터리 자체의 크기(ext 파일 시스템에서는 일반적으로 4K의 배수)를 비교하면 차이를 발견할 수 있습니다.
(예: 복사 작업 중에 디렉토리가 재구성되어 삭제된 항목이 제거될 때 디렉토리가 더 작아지는 경우가 있습니다.)

크기가 다른 디렉터리를 찾으려면 디렉터리를 서로 비교해야 합니다. 다음 스크립트가 도움이 될 수 있습니다.

#!/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)

코드를 새 파일(예: dircomp.sh)에 복사하고 실행 가능하게 만듭니다 chmod +x dircomp.sh. 그런 다음 ./dircomp.sh /home/lemenhir/ /media/lemenhir/ExternalDrive/.

이제 출력에는 크기가 다른 디렉터리만 나열되어야 하며 다음과 같습니다.

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

로 시작하는 줄은 <첫 번째 매개변수(예: /home/lemenhir/)로 지정된 디렉터리에 있는 디렉터리를 나열하고, 로 시작하는 줄은 >두 번째 매개변수로 지정된 디렉터리(예: /media/lemenhir/ExternalDrive/)에 있는 디렉터리를 나열합니다. .

한 줄이 나타나면 해당 디렉터리가 반대 디렉터리에 존재하지 않는 것입니다.

도움이 되었기를 바랍니다.

관련 정보