När käll- eller destinationsdisken bara har ett block device-interface, tror jag att man måste använda dd, och med en korrekt angiven blockstorlek med bs= annars kopieras t.ex. bara den första hälften av varje sektor. Kopierar man mellan diskar/partitioner via deras character device-interface, kan man nog använda cat eller vilka andra kommandon som helst. Character devices är väl till just för att kunna behandla diskar som vanliga filer fyllda med bytes (och inte block).
Även med character devices och vanliga filer, har dd några möjligheter som andra kommandon inte erbjuder:
* Ingen buffring. Vid läsning och skrivning låter normala program som cat operativsystemet sköta buffringen som det vill (på det effektivaste sättet), t.ex. läsa filer några kB i taget. Det finns tillfällen då man inte kan låta OS:et göra det, som när man läser från poolen med slumpdata. På vissa system kommer `head -c 1 /dev/srandom` (/dev/srandom på OpenBSD, andra namn på andra OS) att läsa ett helt block med data, returnera den första byten, avsluta och resten kastas bort. dd däremot, tror jag läser obuffrat.
* Möjlighet att skriva till mitten av en fil, t.ex. ändra den 1024:e till 2047:e byten, utan att behöva skriva om hela filen.
Källa:
http://www.google.se/search?q=cat+or+dd.
PS: Fixar alla filsystem det då, att plötsligt ligga på en större HD?