Do celów testowych muszę wygenerować plik o określonym rozmiarze (aby przetestować limit wysyłania).
Co to jest polecenie utworzenia pliku o określonym rozmiarze w systemie Linux?
linux
command-line
Grundlefleck
źródło
źródło
Odpowiedzi:
Gdzie
file_size
jest rozmiar twojego pliku testowego w bajtachźródło
dd
ma limit 2 ^ 32 dla jej wartości, tak aby utworzyć plik większy niż 4 GB, istnieje trik:dd if=/dev/zero of=test bs=1M count=<size in megabytes>
.Proszę, nowoczesność jest łatwiejsza i szybsza. W systemie Linux (wybierz jedną)
To wymaga , aby stwierdzić, że
truncate
w systemie plików wspierające pliki rozrzedzone utworzy plik rozrzedzony ifallocate
nie będzie. Plik rzadki to taki, w którym jednostki alokacji tworzące plik nie są w rzeczywistości przydzielane, dopóki nie zostaną użyte. Metadane dla pliku zajmą jednak trochę miejsca, ale prawdopodobnie nie będzie w pobliżu rzeczywistego rozmiaru pliku. Aby uzyskać więcej informacji, zapoznaj się z zasobami dotyczącymi rzadkich plików, ponieważ ten typ pliku ma zalety i wady. Plik nierzadki ma swoje bloki (jednostki alokacji) alokowane z wyprzedzeniem, co oznacza, że miejsce jest zarezerwowane tak długo, jak widzi to system plików. Równieżfallocate
anitruncate
nie ustawi zawartość pliku do określonej wartości , takich jakdd
, zamiast tego zawartość pliku zaalokowanego zfallocate
lubtruncate
może być jakąkolwiek wartością kosza, która istniała w przydzielonych jednostkach podczas tworzenia, a to zachowanie może być pożądane lub nie.dd
Jest najwolniejsza, ponieważ faktycznie zapisuje wartość lub porcji danych dla całego strumienia pliku zgodnie z nim w opcji wiersza poleceń.To zachowanie może być potencjalnie inne - w zależności od używanego systemu plików i zgodności tego systemu plików z dowolnym standardem lub specyfikacją. Dlatego zaleca się przeprowadzenie odpowiednich badań w celu upewnienia się, że zastosowano odpowiednią metodę.
źródło
truncate
. Utworzył plik o rozmiarze zerowym przy użyciu powyższej składni. „Stronafallocate
podręcznika ” dla mówi, że tworzone przez niego pliki sąspace
raczej puste niż dane. Wydaje się, że nie byłoby to przydatne w niektórych oczekiwanych przypadkach, takich jak „ile czasu zajmuje skopiowanie pliku 1G”.brew install coreutils
. To doda g przed komendą, więc trzeba uruchomić go tak:gtruncate -s 10G foo
. Mam nadzieję że to pomoże!NTFS
partycji.Aby śledzić post Toma , możesz użyć dd do tworzenia rzadkich plików:
Spowoduje to utworzenie pliku z „dziurą” w większości uniksów - dane nie zostaną w rzeczywistości zapisane na dysku ani nie zajmą miejsca, dopóki nie zostanie w nim zapisane coś innego niż zero.
źródło
count=0
,bs * seek
staje się rozmiarem plikuNa OSX (i najwyraźniej Solaris)
mkfile
polecenie jest również dostępne:To tworzy plik o rozmiarze 10 GB o nazwie „duży_plik”. Znalazłem to podejście tutaj.
źródło
truncate
ifallocate
nie są dostępne.dd
działa również jak opisano powyżej, chociażm
dotyczy megabajtów, nieM
.Użyj tego polecenia:
Aby utworzyć duży (pusty) plik, ustaw
$INPUT-FILE=/dev/zero
.Całkowity rozmiar pliku to
$BLOCK-SIZE * $NUM-BLOCKS
.Nowy utworzony plik będzie
$OUTPUT-FILE
.źródło
Możesz to zrobić programowo:
To podejście jest szczególnie przydatne do późniejszego mmapowania pliku do pamięci.
użyj następującego polecenia, aby sprawdzić, czy plik ma prawidłowy rozmiar:
Bądź ostrożny:
prawdopodobnie wypisze 0, ponieważ jest alokowany jako plik rzadki, jeśli jest obsługiwany przez twój system plików.
zobacz także: mężczyzna 2 otwarty i mężczyzna 2 obcięty
źródło
mógłbyś:
Gdzie zastępujesz 100 liczbą bajtów, które chcesz zapisać.
źródło
Niektórych z tych odpowiedzi używasz
/dev/zero
jako źródła swoich danych. Jeśli testujesz prędkość wysyłania do sieci, może to nie być najlepszy pomysł, jeśli twoja aplikacja wykonuje jakąkolwiek kompresję, plik pełen zer kompresuje się naprawdę dobrze. Użycie tego polecenia do wygenerowania plikuMogłem skompresować
upload_test
do około 200 bajtów. Możesz więc postawić się w sytuacji, w której myślisz, że przesyłasz plik o rozmiarze 10 KB, ale w rzeczywistości będzie to znacznie mniej.Sugeruję użycie
/dev/urandom
zamiast/dev/zero
. W ogóle nie mogłem skompresować wyjścia/dev/urandom
.źródło
/dev/zero
, więc/dev/urandom
jest dobry.źródło
Odpowiedzi jest wiele, ale żadna nie wyjaśniła ładnie, co jeszcze można zrobić. Patrząc na strony podręcznika dla dd , można lepiej określić rozmiar pliku.
Spowoduje to utworzenie pliku /tmp/zero_big_data_file.bin wypełnionego zerami, który ma rozmiar 20 megabajtów:
Spowoduje to utworzenie pliku /tmp/zero_1000bytes_data_file.bin wypełnionego zerami, który ma rozmiar 1000 bajtów:
lub
źródło
Jako polecenie powłoki:
źródło
Spowoduje to wygenerowanie pliku tekstowego o wielkości 4 MB z losowymi znakami w bieżącym katalogu i jego nazwie „4mb.txt”. Możesz zmienić parametry, aby wygenerować różne rozmiary i nazwy.
źródło
Użyj,
fallocate
jeśli nie chcesz czekać na dysk.Przykład:
Stosowanie:
źródło