Wiem, jak utworzyć pusty plik:
touch /var/tmp/nullbytes
ale jak mogę utworzyć plik 1 MB, który zawiera tylko nullbytes w linii poleceń za pomocą bash?
command-line
files
rubo77
źródło
źródło
Odpowiedzi:
Z GNU
truncate
:(zakładając,
nullbytes
że wcześniej nie istniał) utworzyłby rzadki plik o rozmiarze 1 MB. Jest to plik, który wygląda na wypełniony zerami, ale nie zajmuje miejsca na dysku.Bez
truncate
możeszdd
zamiast tego użyć :(w przypadku niektórych
dd
implementacji można zastąpić 10485761M
)Jeśli wolisz przydzielić miejsce na dysku , w systemie Linux i niektórych systemach plików możesz:
Przydziela to miejsce bez faktycznego zapisywania danych na dysku (miejsce jest zarezerwowane, ale oznaczone jako niezainicjowane).
Faktycznie zapisze zera na dysku. Jest to najmniej wydajne, ale jeśli chcesz, aby dyski obracały się podczas uzyskiwania dostępu do tego pliku, to ten, na który chcesz się wybrać.
Lub sposób @ mikeserv na podstęp
dd
do wygenerowania bajtów NUL:Alternatywa dla GNU
head
, która nie wymaga określania rozmiaru bloku (1M jest OK, ale na przykład 10G nie):Lub, aby uzyskać pasek postępu:
źródło
truncate
do tworzenia pustego pliku, który będzie używany jako wolumin wymiany… to nie zadziała!dd
Zamiast tego użyj w tym przypadku.dd
mogę tworzyć rzadkie pliki, tak jak pokazałem.bs=1kx1k
. Lub<&1 dd bs=1kx1k conv=sync,noerror count="$rpt" | cat >file
dosłownie napisać na dysk. Jednak nie w 100% na ile efektywność może zostać utracona w wymuszaniu błędu odczytu.źródło