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.