동일한 폴더의 복사본이 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/).
한 줄이 나타나면 해당 디렉터리가 반대 디렉터리에 존재하지 않는 것입니다.
도움이 되었기를 바랍니다.