dd natychmiast kończy, ale w rzeczywistości wymaga synchronizacji

1

Używam dd, aby skopiować ISO na dysk USB. Mam dysk SSD, więc odczytuje go bardzo szybko, ale mam napęd USB 2.0, który ma co najwyżej 480 Mb / s, ale mówi, że skopiował z prędkością 404 MB / s, co jest niemożliwe. Muszę to zrobić syncpo moim dd. Użyłem flagi synchronizacji w dd, ale to nie pomogło, co mam zrobić?

$dd if=ubuntu-13.10-server-amd64.iso of=/dev/sdb bs=1M conv=sync,noerror
672+0 records in
672+0 records out
704643072 bytes (705 MB) copied, 1,74625 s, 404 MB/s

I to jest moje jądro:

$ uname -a
Linux C3PO 3.11.0-18-generic #32-Ubuntu SMP Tue Feb 18 21:11:14 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
Mustafa
źródło

Odpowiedzi:

5

conv=sync nie aktywuje synchronicznego wejścia lub wyjścia:

uzupełnij każdy blok wejściowy wartościami NUL do rozmiaru ibs; w przypadku użycia z blokowaniem lub odblokowaniem, należy wstawiać spacje zamiast wartości NUL

Zamiast tego możesz spróbować conv=fdatasync:

fizycznie zapisz dane pliku wyjściowego przed zakończeniem

Bardziej intuicyjna jest oczywiście oflag=sync:

dsync - użyj zsynchronizowanych operacji we / wy dla danych

synchronizacja - podobnie, ale także dla metadanych

Źródło: man 1 dd

Daniel B.
źródło