두 개의 동일한 트리 사이에 3GB의 차이가 발생하는 이유는 무엇입니까?

두 개의 동일한 트리 사이에 3GB의 차이가 발생하는 이유는 무엇입니까?

방금 디렉토리 트리를 cp -a.

먼저 두 디렉토리 모두에서 찾기를 시작했는데 결과는 동일했습니다.

du -h를 시작한 후 한 디렉토리는 72GB를 제공하고 다른 디렉토리는 75GB를 제공했습니다. 복사 과정이 순조롭게 진행된다고 가정할 때, 이러한 차이가 발생하는 원인은 무엇입니까? 디스크 블록 크기는 4096으로 동일합니다. 한 파티션은 EXT3이고 다른 파티션은 EXT4입니다. 가능합니까?

답변1

  1. 예, EXT4가 조정되는 방식에 따라 디스크 사용량이 다르며, 256바이트 또는 128바이트 inode가 있을 수 있고, 디렉터리가 다르게 할당될 수 있으며, 작은 파일이 차지하는 공간이 다를 수 있습니다. 하지만 3GB는 너무 많은 것 같습니다.

  2. 개인적으로 선호하는 파일 시스템 비교 방법은 다음과 같습니다.

    ( cd /src/dir; find . -type f -print0 | xargs =0 cksum ) | sort >/tmp/src.cksum
    ( cd /dst/dir; find . -type f -print0 | xargs -0 cksum ) | sort >/tmp/dst.cksum
    cksum /tmp/*.cksum
    

두 파일 계층의 파일 이름과 체크섬이 동일하다면 꽤 확신합니다. diff비교가 없고 모든 것에 대한 직접적인 해시만 있기 때문에 이보다 더 빠릅니다 .

ssh위 방법의 장점은 다른 기계에서도 쉽게 수행할 수 있다는 것입니다.

답변2

아마 cp -a좀 그랬을 거야부족한파일 복사의 마법 - 또는 원본과 복사본 중 어느 것이 더 큰지 말하지 않은 마법을 수행하지 못했습니까?

맨페이지에는 다음과 같이 나와 있습니다 cp.

기본적으로 희소 소스 파일은 대략적인 휴리스틱을 통해 감지되며 해당 대상 파일도 희소화됩니다. 이는 --sparse=auto에 의해 선택된 동작입니다.

du -S디렉터리를 비교하고 실제로 크기가 다른 파일을 얻으려면 두 파일의 출력을 비교해 볼 수 있습니다.

diff <(cd orig; du -S . | sort -n) <(cd copy; du -S . | sort -n)

관련 정보