Boş bir dosyanın nasıl oluşturulacağını biliyorum:
touch /var/tmp/nullbytes
ama sadece bash ile komut satırında nullbyte içeren 1 MB'lık bir dosya nasıl oluşturabilirim?
Boş bir dosyanın nasıl oluşturulacağını biliyorum:
touch /var/tmp/nullbytes
ama sadece bash ile komut satırında nullbyte içeren 1 MB'lık bir dosya nasıl oluşturabilirim?
Yanıtlar:
GNU ile truncate
:
truncate -s 1M nullbytes
( nullbytes
önceden var olmadığını varsayarak ) 1 mebibit seyrek dosya oluşturacaktı. Bu, sıfırlarla dolu görünen ancak diskte yer kaplamayan bir dosyadır.
Olmadan truncate
, dd
yerine kullanabilirsiniz :
dd bs=1048576 seek=1 of=nullbytes count=0
(bazı dd
uygulamalarda, 1048576'yı ile değiştirebilirsiniz 1M
)
Disk alanının ayrılmasını tercih ederseniz , Linux ve bazı dosya sistemlerinde şunları yapabilirsiniz:
fallocate -l 1M nullbytes
Bu aslında diske veri yazmadan alanı tahsis eder (alan ayrılır ancak başlatılmamış olarak işaretlenir).
dd < /dev/zero bs=1048576 count=1 > nullbytes
Aslında sıfırları diske yazacak. Bu en az verimli, ancak bu dosyaya erişirken sürücülerinizin dönmesi gerekiyorsa, gitmek isteyeceğiniz şey budur.
Ya da @ mikeserv'in dd
NUL baytlarını oluşturmayı kandırma yolu :
dd bs=1048576 count=1 conv=sync,noerror 0> /dev/null > nullbytes
Bir head
blok büyüklüğü belirtmek zorunda olmayan GNU'lu bir alternatif (1M normaldir, ancak örneğin 10G olmaz):
head -c 1M < /dev/zero > nullbytes
Veya bir ilerleme çubuğu almak için:
pv -Ss 1M < /dev/zero > nullbytes
truncate
Takas hacmi olarak kullanılacak boş bir dosya oluşturmak için kullanmayın … bu işe yaramaz! Kullanım dd
yerine bu durumda.
dd
Ben de gösterdiğim gibi seyrek dosyaları oluşturabilirsiniz.
bs=1kx1k
. Veya <&1 dd bs=1kx1k conv=sync,noerror count="$rpt" | cat >file
kelimenin tam anlamıyla diske yazma. Yine de okuma hatasını zorlamada ne kadar verimlilik kaybı olabileceği% 100 değil.