Jaki jest konsolowy odpowiednik następującego kodu w języku Python:
target = file("disk", "w") # create a file
target.seek(2*1024*1024*1024) # skip to 2 GB
target.write("\0")
target.close()
Może jakieś zaklęcie dd? Pomysł polega na utworzeniu pliku o pozornej wielkości 2 GB do użytku np. W wirtualizacji.
kvm disk -cd whatever.iso #Only allocate space as necessary
files
dd
sparse-files
badp
źródło
źródło
dd
jest jedynym tradycyjnym narzędziem, które ujawniaseek
wywołanie systemowe (patrz dd vs cat - czy dd jest nadal aktualny? ale istnieją inne sposoby na skórowanie tego kota na typowe obecne jednorożce.Odpowiedzi:
Ogólnie rzecz biorąc, po prostu użyj
dd
; ale jak wspominasz o zastosowaniu wirtualizacji KVM, możesz rozważyć użycieqemu-img
:dd
Skutecznie robi to samo, co polecenie w odpowiedzi Chrisa Downa.Bez względu na to, jakiego polecenia użyjesz, w przypadku wirtualizacji zdecydowanie zalecam użycie
fallocate
wstępnej alokacji bloków, aby zapobiec fragmentacji i zwiększyć wydajność.Jednak nie jest dostępny na wszystkich platformach i systemach plików. Nie będzie to zapisywać zer, ale po prostu przypisuje bloki do pliku, zamiast robić to później na żądanie za każdym razem, gdy będzie musiał rozszerzyć plik.
źródło
qemu-img
idd
oba wykonują jedno wywołanie systemowe, aby ustawić rozmiar pliku (ftruncate), ale wykonają znacznie więcej, aby załadować siebie i biblioteki, z którymi są połączone. I pod tym względemdd
będzie znacznie bardziej skuteczny niżqemu-img
(który jest znacznie większy i jest powiązany z dużo większą liczbą bibliotek). GNUtruncate
będzie jeszcze bardziej skuteczne.dd
ma również tę zaletę, że jest wszechobecny. Dobra racjafallocate
jednak.qemu-img
jest to po prostu oczywista alternatywa w zastosowaniu wirtualizacji KVM.Możesz utworzyć taki rzadki plik za pomocą
dd
:źródło
2G
jest rozszerzeniem GNU dodd
. Możesz użyć,bs=1024 seek=2097152
jeśli nie masz GNUdd
.G
jest rozszerzeniem i nie jest obsługiwane przez wersję dd OpenBSD ... aleM
iK
są obsługiwane, więc możeseek=2048M
jest nieco bardziej czytelny, w zależności od platform, na któreZobacz także
truncate
polecenie GNU :źródło