Hızlı bir şekilde büyük bir dosyayı nasıl yapabilirim?


26

2 GB boyutunda bir dosyayı oluşturmanın hızlı ve kolay bir yolu nedir?

Yanıtlar:


36

Sıfır doldurma yöntemi (burada önlemek üzere modifiye potansiyel bellek performans ) bir SSD'sinde 10 GB dosyası oluşturmak için 17 saniye sürdü ve Ubuntu'nun grafik arayüzü yanıt vermeyen olmasına neden oldu.

$ 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 , doğrudan dosyanın ayrılmış disk alanını değiştirerek anında büyük dosyalar oluşturur:

$ 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

truncate ayrıca anında çalışır ve veriler daha sonra yazılana kadar gerçek disk alanını kullanmayan seyrek dosyalar oluşturur :

$ 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(bir read(2)aramada) belleğe 2 GB okur . Eğer hafıza baskınız varsa, muhtemelen gitmenin yolu bu değildir. Daha az sayfalama anlamına gelirse, daha küçük bloklar daha hızlı olabilir.
— claymation

19

Kolay bir yol, ddkomutu sıfırlarla dolu bir dosya yazmak için kullanmak olacaktır .

dd if=/dev/zero of=outputFile bs=2G count=1
  • if = giriş dosyası
  • of = çıktı dosyası
  • bs = bayt

Bilgisayar (1024 * 1024 * 1024) gigabayt istiyorsanız G'yi, insan (1000 * 1000 * 1000) gigabayt istiyorsanız GB'yi kullanın.


1
Tüm sıfırları istemiyorsanız, eğer = / dev / random
— seçebilirsiniz

Rağmen / dev / random daha fazla zaman alacaktır.
— con-f-kullanın

10
Kullanılması / dev / bir alacak rastgele korkunç zamanın çok. /dev/urandomBu durumda kullanın (engellenmez, ancak aynı rasgelelik seviyesine sahip olduğu garanti edilmez). Her ikisinden de 2 GB'lık bir çizim yapmak, sisteminizin entropisini neredeyse tamamen tüketecektir, bu nedenle bir süre sonra kriptografik bir şey yapmayın.
— CVn

1

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

veya Seek, bayt cinsinden istediğiniz dosyanın boyutudur - 1.

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
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.