방금 디렉토리 트리를 cp -a
.
먼저 두 디렉토리 모두에서 찾기를 시작했는데 결과는 동일했습니다.
du -h를 시작한 후 한 디렉토리는 72GB를 제공하고 다른 디렉토리는 75GB를 제공했습니다. 복사 과정이 순조롭게 진행된다고 가정할 때, 이러한 차이가 발생하는 원인은 무엇입니까? 디스크 블록 크기는 4096으로 동일합니다. 한 파티션은 EXT3이고 다른 파티션은 EXT4입니다. 가능합니까?
답변1
예, EXT4가 조정되는 방식에 따라 디스크 사용량이 다르며, 256바이트 또는 128바이트 inode가 있을 수 있고, 디렉터리가 다르게 할당될 수 있으며, 작은 파일이 차지하는 공간이 다를 수 있습니다. 하지만 3GB는 너무 많은 것 같습니다.
개인적으로 선호하는 파일 시스템 비교 방법은 다음과 같습니다.
( 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)