$ 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 natychmiast tworzy duże pliki, bezpośrednio manipulując przydzielonym miejscem na dysku:
$ 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 działa również natychmiast i tworzy rzadkie pliki, które nie zajmują faktycznego miejsca na dysku, dopóki dane nie zostaną zapisane później:
$ 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=1wczytuje 2 GB do pamięci (w jednym read(2)połączeniu). Jeśli masz presję pamięci, prawdopodobnie nie jest to właściwa droga. Więcej, mniejsze bloki mogą być szybsze, jeśli oznacza to mniej stronicowania.
Claymation
19
Prostym sposobem byłoby użycie ddpolecenia do napisania pliku pełnego zer.
dd if=/dev/zero of=outputFile bs=2G count=1
if = plik wejściowy
z = plik wyjściowy
bs = bajty
Użyj G w argumencie rozmiaru, jeśli chcesz gigabajty komputerowe (1024 * 1024 * 1024), lub GB, jeśli chcesz gigabajtów ludzkich (1000 * 1000 * 1000).
dodam tylko, że jeśli nie chcesz wszystkich zer, możesz wybrać if = / dev / random
Denwerko
Chociaż / dev / random zajmie więcej czasu.
con-f-use
10
Używanie / dev / random zajmie okropnie dużo czasu. Użyj /dev/urandomw takim przypadku (nie blokuje, ale nie gwarantuje tego samego poziomu losowości). Wyciągnięcie 2 GB z jednego z nich prawie na pewno całkowicie wyczerpuje entropię twojego systemu, więc nie rób przez chwilę nic kryptograficznego.
dd ... bs=2G count=1
wczytuje 2 GB do pamięci (w jednymread(2)
połączeniu). Jeśli masz presję pamięci, prawdopodobnie nie jest to właściwa droga. Więcej, mniejsze bloki mogą być szybsze, jeśli oznacza to mniej stronicowania.Prostym sposobem byłoby użycie
dd
polecenia do napisania pliku pełnego zer.Użyj G w argumencie rozmiaru, jeśli chcesz gigabajty komputerowe (1024 * 1024 * 1024), lub GB, jeśli chcesz gigabajtów ludzkich (1000 * 1000 * 1000).
źródło
/dev/urandom
w takim przypadku (nie blokuje, ale nie gwarantuje tego samego poziomu losowości). Wyciągnięcie 2 GB z jednego z nich prawie na pewno całkowicie wyczerpuje entropię twojego systemu, więc nie rób przez chwilę nic kryptograficznego.ftp://ftp.fsf.hu/testfiles/maketestfiles.sh
lub Szukaj to rozmiar pliku, który chcesz w bajtach - 1.
źródło