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

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

동일한 폴더의 복사본이 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/).

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

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

관련 정보