복사할 때 실제 크기 또는 겉보기 크기 중 무엇을 고려합니까?

복사할 때 실제 크기 또는 겉보기 크기 중 무엇을 고려합니까?

겉보기 크기는 1GiB이지만 여유 공간이 512kiB인 USB 플래시 드라이브 등에 복사할 수 있는 경우 실제 크기는 0B인지 궁금합니다.

다음 명령을 사용하여 파일을 만들 수 있습니다.

dd if=/dev/null of=big-file bs=1 seek=1GiB

이제 겉보기 치수와 실제 치수를 볼 수 있습니다.

du --apparent-size -hs big-file

노트: --apparent-size실제 치수를 얻으려면 옵션을 제거하십시오.

따라서 주요 질문은 파일을 디렉터리(하드 드라이브, USB 플래시 드라이브, DVD 등)에 복사할 때 어떤 크기를 고려합니까?입니다.

답변1

실제 크기.

대상 파일.

이것가장 간단한 구현이것을 미리 예측하려고 하지 마세요.

이 외에도 약간의 오버헤드가 필요합니다. 이 오버헤드를 예측하는 것은 더 복잡합니다.


스파스 파일에 대한 지원은 파일 시스템과 복사를 수행하는 프로그램에 따라 다릅니다. 특히 FAT 파일 시스템은 스파스 파일을 지원하지 않습니다.

GNU는 cp희소 파일을 자동으로 감지하고 처리합니다. 미리 공간을 확인하지 않습니다. (GNU coreutils 8.29 문서를 기반으로 함)

기본적으로 희소 소스 파일은 대략적인 휴리스틱을 통해 감지되며 해당 대상 파일도 희소화됩니다. 이것은 선택된 동작입니다 --sparse=auto. --sparse=always SOURCE 파일에 0바이트의 긴 시퀀스가 ​​포함될 때마다 스파스 DEST 파일이 생성되도록 지정합니다 .

파일 시스템은 다양한 블록 크기를 가질 수 있습니다. 이로 인해 희소 파일이 사용하는 공간이 늘어나거나 줄어들 수도 있습니다!

(일반적으로 파일 데이터 쓰기반품자체 공간이 필요한 내부 파일 시스템 구조. 이는 파일 크기로 표시되지 않습니다. 실제 크기도 겉보기 크기도 아닙니다. 전통적인 UNIX 파일 시스템 설계에서는반품무료 인덱스 노드가 필요합니다. inode에 사용 가능한 공간은 다음과 같습니다 df -i. 가장 분명한 것은 파일 이름을 저장하려면 약간의 공간이 필요하다는 것입니다. :-) 이는 일반적으로 상위 디렉토리의 크기로 표시됩니다. 이것은 질문에서 구체적으로 논의됩니다.빈 파일을 많이 생성하면 디스크 공간이 소모되나요?)

관련 정보