io.Copy()를 사용하여 희소 파일을 복사할 때 파일이 부풀어오르는 경우가 많습니다.
io.Copy()는 원시 바이트를 전송하여 스파스 파일의 홀(데이터가 없는 공간)의 존재를 마스킹합니다. 실제로 거주합니다. 이 정보는 read(2)와 같은 표준 syscall을 통해 접근할 수 없습니다. 따라서 io.Copy()는 파일의 희소성을 보존할 수 없습니다.
이 문제를 해결하려면 syscall 패키지와 수동 처리를 사용하여 더 깊이 파고들어야 합니다. 특별한 SEEK_HOLE 및 SEEK_DATA 값이 있는 Lseek(2) 시스템 호출을 사용하여 파일의 구멍을 조작할 수 있습니다.
전송 중에 파일의 희소성을 유지하려는 경우 상황은 더욱 복잡해집니다. Fallocate(2)를 사용하여 지원되는 파일 시스템에서 홀 생성을 시도할 수 있습니다. 그러나 일부 파일 시스템에는 FAT 제품군과 같이 본질적으로 홀 지원이 부족합니다.
위 내용은 ## Go에서 희소 파일을 확장하지 않고 어떻게 복사하나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!