FreeBSD 또는 다른 Unix 시스템을 사용하여 외부 하드 드라이브를 내 컴퓨터에 연결하고 첫 번째 외부 하드 드라이브에서 두 번째 하드 드라이브로 파일을 복사하면 두 번째 하드 드라이브의 파일이 원본의 파일과 동일합니다. 동일한 파일(첫 번째 외장 하드 드라이브)이 있습니까?
해시(체크섬)가 있다는 것을 알고 있습니다. 다른 볼륨에서 복사하면 다른 파일이 생성된다는 내용을 어딘가에서 읽었습니다(두 개의 다른 볼륨이기 때문입니다).
파일을 동일한 볼륨에 복사한 경우에만 동일한 파일임을 보장할 수 있습니다.
복제에 대한 제안은 무엇입니까? 내 파일은 변경되지 않은 상태로 유지됩니까?
답변1
파일의 복사본이 만들어지면 복사본은 다음과 같습니다.정확히원본과 동일합니다(복사 과정에 오류가 없다는 가정). 이는 파일이 동일한 장치의 다른 위치로 복사되거나 다른 장치로 복사되는지 여부에 관계없이 적용됩니다.
복사본의 파일 이름이 다를 수도 있고, 타임스탬프나 권한이 다를 수도 있지만 내용은 동일합니다.
md5sum
이는 원본 파일과 복사본에 대해 일종의 체크섬이나 해싱 알고리즘(예:)을 실행하여 확인할 수 있습니다.
예를 들어:
$ cp original /tmp/thecopy
$ md5sum original /tmp/thecopy
93d9d61139ff5f1287764f1c1994cbe3 original
93d9d61139ff5f1287764f1c1994cbe3 /tmp/thecopy
두 파일 모두 정확히 동일한 md5sum을 갖습니다. original
NVME에 저장됩니다. /tmp/
가상 디스크입니다.
기술적으로 두 개의 서로 다른 파일이 동일한 md5sum
. md5sum
대부분의 간단한 목적에는 "충분히 좋습니다". 그러나 이제 대부분의 사람들은 확률을 더욱 줄이기 위해 더 강력한 해싱 방법을 사용하고 권장합니다. 다음은 sha512sum
파일 ID에 대한 설명입니다.
$ sha512sum original /tmp/thecopy
5ba61d6f2a883c3afebc949b0f0d0a1c020498a1052771de98e6e1bbb42d438a0a53f49f381a2e1311c1bdf82a0cea9de646fc03c529fcb6fca0ab6476badf35 original
5ba61d6f2a883c3afebc949b0f0d0a1c020498a1052771de98e6e1bbb42d438a0a53f49f381a2e1311c1bdf82a0cea9de646fc03c529fcb6fca0ab6476badf35 /tmp/thecopy
이번에도 마찬가지다.
답변2
복제에 대한 제안은 무엇입니까? 내 파일은 변경되지 않은 상태로 유지됩니까?
cp -a
데이터를 복사하지만아니요생성 시간을 복사하면 마지막 접근 시간이 손실될 수 있습니다. 소스 시스템이 SeLinux 컨텍스트를 사용하는 경우 cp는 이를 SeLinux를 모르는 다른 시스템에 복사하지 않습니다.
crtime에 대해서는 다음을 참고하세요.ext4fs 파일 시스템에서 파일/디렉토리의 crtime 복사 또는 복원
마지막으로 md5sum
특히 작은 파일의 경우 복사 후 즉시 실행하십시오.아니요이는 파일이 물리적으로 메모리에 덤프될 수 없고 커널이 RAM에 저장된 더티 버퍼를 사용하기 때문에 권장됩니다.
모든 내용을 정확하게 복사했는지 확인하려면 다음을 수행해야 합니다.
- 모든 파일 복사
- 체크섬을 생성합니다(CPU가 충분히 현대
sha256sum
적이고서둘러요md5sum보다) - 캐시 삭제
echo 3 | sudo tee /proc/sys/vm/drop_caches
- 새로 복사한 파일에 대한 체크섬을 생성하고 이를 이전 파일과 비교합니다.
또는 ext2/ext3/ext4 파일 시스템의 경우 e2image
이를 사용하여 여유 공간(crtime 및 마지막 액세스 시간을 포함한 모든 타임스탬프)을 제외한 모든 항목을 복사할 수 있습니다. 저는 주로 파티션 복사에 사용합니다.
NTFS의 경우 ntfsclone
여러 번 사용했는데 빠르고 안정적입니다.
다른 파일 시스템에도 유사한 유틸리티가 있다고 가정하지만 내 장치에서는 ext4와 NTFS만 사용하고 있습니다.