큰 파일을 빠르게 만들려면 어떻게해야합니까?


26

2GB 크기의 파일을 빠르고 쉽게 만드는 방법은 무엇입니까?

답변:


36

제로 채우기 방법 (여기 피하기 위해 수정 잠재적 인 메모리 병목 )는 SSD에 10 기가 바이트 파일을 만들 17초했다 우분투의 그래픽 인터페이스가 응답하는 원인이되었다.

$ time sh -c 'dd if=/dev/zero iflag=count_bytes count=10G bs=1M of=large; sync'
10240+0 records in
10240+0 records out
10737418240 bytes (11 GB, 10 GiB) copied, 17.2003 s, 624 MB/s

real    0m17.642s
user    0m0.008s
sys     0m9.404s
$ du -B 1 --apparent-size large
10737418240     large
$ du -B 1 large
10737422336     large

fallocate 는 파일의 할당 된 디스크 공간을 직접 조작하여 즉시 큰 파일을 만듭니다.

$ time sh -c 'fallocate -l 10G large; sync'

real    0m0.038s
user    0m0.000s
sys     0m0.016s
$ du -B 1 --apparent-size large
10737418240     large
$ du -B 1 large
10737422336     large

자르기 도 즉시 작동하며 나중에 데이터를 쓸 때까지 실제 디스크 공간을 사용하지 않는 스파 스 파일 을 만듭니다 .

$ time sh -c 'truncate -s 10G large; sync'

real    0m0.014s
user    0m0.000s
sys     0m0.004s
$ du -B 1 --apparent-size large
10737418240     large
$ du -B 1 large
0       large

dd ... bs=2G count=1한 번의 read(2)호출 로 2GB를 메모리로 읽습니다 . 메모리가 부족하다면 갈 길이 멀다. 더 적은 페이징을 의미하는 경우 더 작은 블록이 더 빠를 수 있습니다.
claymation

19

쉬운 방법은 dd명령을 사용하여 0으로 가득 찬 파일을 작성하는 것입니다.

dd if=/dev/zero of=outputFile bs=2G count=1
  • if = 입력 파일
  • of = 출력 파일
  • bs = 바이트

컴퓨터 (1024 * 1024 * 1024) 기가 바이트를 원하면 size 인수에 G를 사용하고 사람 (1000 * 1000 * 1000) 기가 바이트를 원하면 GB를 사용하십시오.


1
난 그냥 당신이 모든 0을 원하지 않는 경우, 당신은 if = / dev / random을 선택할 수 있습니다 추가
Denwerko

/ dev / random은 더 많은 시간이 걸립니다.
con-f-use

10
사용은 / dev / 걸릴 임의 끔찍한 많은 시간을. /dev/urandom이 경우에 사용하십시오 (차단되지는 않지만 동일한 수준의 임의성을 보장하지는 않습니다). 어느 쪽이든 2GB를 사용하면 시스템의 엔트로피가 거의 완전히 소모되므로 나중에 암호화 작업을 수행하지 마십시오.
CVn

1

ftp://ftp.fsf.hu/testfiles/maketestfiles.sh

또는 Seek는 원하는 파일 크기 (바이트)입니다.

dd if=/dev/zero of=filename.big bs=1 count=1 seek=1048575 # 1 MByte

dd if=/dev/zero of=filename.big bs=1 count=1 seek=10485759 # 10 MByte

dd if=/dev/zero of=filename.big bs=1 count=1 seek=104857599 # 100 MByte

dd if=/dev/zero of=filename.big bs=1 count=1 seek=1073741823 # 1024 MByte

dd if=/dev/zero of=filename.big bs=1 count=1 seek=42949672959 # 40960 MByte
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.