2012-06-05 11 views
13

È possibile utilizzareCome posso ottenere un equivalente di/dev/uno in Linux

dd if=/dev/zero of=file count=1024 bs=1024 

a zero riempimento di un file.

Invece di quello voglio riempire un file. Come lo faccio?

Non c'è/dev/un file, quindi come posso simulare quell'effetto tramite su bash shell?

+0

Scrivere un programma in C per farlo, dovrebbe essere banale. –

risposta

10

Prova questa:

dd if=<(yes $'\01' | tr -d "\n") of=file count=1024 bs=1024 

sostituto $'\377' o $'\xFF' se si desidera che tutti i bit di essere quelli.

4

Beh, si potrebbe fare questo:

dd if=/dev/zero count=1024 bs=1024 | 
    tr '\000' '\001' > file 
+0

Un riempimento sarebbe '\ 377', no? – Neil

+0

Hmm, immagino dipenda da cosa vuoi. Questo riempirà un file con byte di valore '1' (' 01 01 01 01 ... '). Usando '\ 377' ottieni tutti i * bit * impostati su 1 (quindi' FF FF FF FF ... '). Dipende dai requisiti dell'OP. – larsks

23
tr '\0' '\377' < /dev/zero | dd bs=64K of=/dev/sdx 

Questo dovrebbe essere molto più veloce. Scegli i tuoi blocchi (o aggiungi i conteggi) di cui hai bisogno a. Scrivere quelli su un disco SSD fino a pieno con un blocco di 99M mi ha dato una performance di scrittura di 350M/s.

+0

Confermo che questo è almeno il doppio della soluzione accettata. Tuttavia non ho notato alcun miglioramento delle prestazioni apprezzabile dal variare il blockize (anche se c'è un enorme calo delle prestazioni senza l'argomento bs). –

0
pv /dev/zero |tr \\000 \\377 >targetfile 

... dove \377 è la rappresentazione ottale di 255 (un byte con tutti i bit impostati a uno). Perché tr funziona solo con numeri ottali, non so, ma fai attenzione a non tradurlo inconsciamente a 3FF.


La sintassi per l'utilizzo di tr è soggetta a errori. Mi consiglia di verificare che si sta facendo la traduzione desiderata ...

cat /dev/zero |tr \\000 \\377 |hexdump -C 

Nota: pv è una simpatica utility che sostituisce cat e aggiunge un indicatore di avanzamento/frequenza.

+1

Nota: Se si sta tentando di riempire un intero dispositivo, è probabilmente meglio evitare 'dd' dato che rallenterà le cose (di molto) se non si seleziona manualmente un valore' bs' ottimale. – nobar

+0

'pv' fornirà anche una stima del tempo rimanente se dispone di informazioni sufficienti per farlo. – nobar

+0

Mentre ci sei, forse prefisso con 'time' e' nice'. – nobar

Problemi correlati