Linux에서 블록 할당을 해제하지 않고 파일 크기를 조정하는 방법은 무엇입니까?

Linux에서 블록 할당을 해제하지 않고 파일 크기를 조정하는 방법은 무엇입니까?

fallocate --keep-size논리적 크기를 건드리지 않고 파일을 확장하는 데 사용할 수 있다는 것을 알고 있습니다 . 그 반대를 수행하는 방법, 즉 블록을 건드리지 않고 파일의 논리적 크기를 줄이는 방법이 있습니까?

답변1

블록을 제거하고 싶지 않지만 논리적 파일 크기를 변경하려는 경우 아마도 파일 끝에 있는 구멍을 삭제하고 싶을 것입니다.

truncate / ftruncate로 이 작업을 수행할 수 있지만 구멍을 인식하지 못하므로 파일 끝에 있는 구멍을 별도로 감지한 다음 ftruncate를 사용하여 파일을 축소해야 합니다.

ftruncate는 솔루션의 절반에 불과하며 대부분의 최신 Unix는 파일의 구멍 감지를 지원하지만 모두 조금씩 다르기 때문에 이를 수행할 수 있는 이식 가능한 방법은 없습니다.

또한 fallocate가 수행하는 작업을 이해했는지 확인하세요. 구멍을 채우고 여기에 데이터 블록을 할당합니다. 따라서 파일에 fallocate를 실행하면 모든 논리적 크기가 물리적 데이터 블록으로 표시되며 해당 데이터 블록 중 일부를 해제하지 않고는 크기를 변경할 수 없습니다.

관련 정보