Oto co się dzieje.
Rozpocząłem tworzenie kopii zapasowej dysku na moim serwerze za pośrednictwem USB na żywo Linux. Zacząłem kopiować pierwszy dysk za pomocą dd
polecenia waniliowego; właśnie sudo dd if=/dev/sda of=/dev/sdc1
przypomniałem sobie, że konsola pozostawia pustą aż do zakończenia.
W każdym razie musiałem uruchomić inną kopię zapasową na tym samym dysku, więc zacząłem tę również od, sudo dd if=/dev/sdb of=/dev/sdc3 status=progress
a następnie dostałem wiersz tekstu, który pokazuje bieżącą szybkość przesyłania, a także postęp w bajtach.
Miałem nadzieję na metodę, która pokazuje procent kopii zapasowej zamiast matematyki, ile bajtów zostało utworzonych z 1,8 TB. Czy jest na to łatwiejszy sposób niż status = postęp?
źródło
dd
że zakończył już wszystkiewrite()
wywołania systemowefsync
lubclose
został zablokowany w oczekiwaniu na zapis na dysku. W przypadku wolnej pamięci USB domyślne progi bufora we / wy systemu Linux dla tego, jak duże mogą być brudne bufory zapisu, prowadzą do jakościowo innego zachowania niż w przypadku dużych plików na szybkich dyskach, ponieważ bufory są tak duże, jak to, co kopiujesz, i to wciąż zajmuje zauważalny czas.dd
jest naprawdę świetną informacją, szczególnie dla serwerów, na których nie możesz / nie chcesz instalowaćpv
Moje narzędzie do tego typu rzeczy to
progress
:Uważam to za szczególnie przydatne, ponieważ:
pv
potoku lubdcfldd
, nie muszę pamiętać, aby po uruchomieniu operacji uruchomić inną komendę, po tym mogę monitorować różne rzeczy;kill -USR1
, działa na praktycznie każdym poleceniu, nie muszę zawsze dwukrotnie sprawdzać strony podręcznika, aby upewnić się, że przypadkowo nie zabiję kopii; fajnie jest też, że po wywołaniu bez parametrów pokazuje postęp dla każdego aktualnie uruchomionego polecenia „transfer danych”, więc nie muszę nawet szukać PID;pv -d
, znowu nie muszę szukać PID.źródło
--command <command-name>
.Uruchom
dd
, a następnie w osobnej powłoce uruchom następującą komendę:Spowoduje to, że pv uzyska statystyki dotyczące wszystkich otwartych deskryptorów plików
dd
procesu. Pokaże wam oboje, gdzie znajduje się bufor odczytu i zapisu.źródło
/proc/$PID/fdinfo
pozycje plików i/proc/$PID/fd
sprawdza, które pliki (a więc i rozmiary). Tak, bardzo fajny i dobry pomysł na tę funkcję, ale nie nazwałbym tego „niesamowitym”, ponieważ istnieją interfejsy API systemu Linux, które pozwalają sondować pozycje plików innego procesu.pv
rurociągi z wyprzedzeniem.) Oczywiście przyjąłem tyle samo, gdy zobaczyłem, że to działa.Jest to alternatywa dla
dd
:dcfldd
.http://dcfldd.sourceforge.net/
https://linux.die.net/man/1/dcfldd
źródło
Jako procent musiałbyś wykonać matematykę, ale możesz uzyskać postęp dd w postaci czytelnej dla człowieka, nawet po rozpoczęciu, wykonując
kill -USR1 $(pidof dd)
Bieżący proces dd wyświetli podobny do:
11117279 bajtów (11 MB, 11 MiB) skopiowanych, 13,715 s, 811 kB / s
źródło
status=progress
daje