Overzicht
dd staat bekend als een acroniem voor 'disk dump' of 'data duplicator' en werkt door gegevens in blokken te lezen en te schrijven. Het leest gegevens van een invoerbestand (if) en kopieert deze naar een uitvoerbestand (of), waarbij verschillende conversie- (conv) en blokgrootte- (bs) opties kunnen worden toegepast.
Belangrijkste functies
- Maken en herstellen van schijf-/partitie-images
- Maken van opstartbare media
- Bestandsgrootte aanpassen en inhoud initialiseren
- Gegevensconversie (bijv. hoofdletterconversie)
Belangrijkste opties
Het dd-commando maakt geavanceerde gegevensmanipulatie mogelijk via verschillende opties. Vooral het specificeren van de invoer- (if) en uitvoer- (of) bestanden is belangrijk, en de blokgrootte (bs) en het aantal te kopiëren blokken (count) worden gebruikt om het bereik van de bewerking te regelen.
Invoer/uitvoer specificeren
Blokgrootte en aantal
Conversie en status
Gegenereerde opdracht:
Probeer de opdrachtcombinaties.
Uitleg:
`dd` Voer het commando uit.
Combineer deze opties en voer de opdracht virtueel uit met de AI.
Gebruiksvoorbeelden
Het dd-commando is krachtig, maar verkeerd gebruik kan leiden tot ernstig gegevensverlies. De onderstaande voorbeelden tonen algemene gebruiksmethoden, maar bij het toepassen op schijven van het daadwerkelijke systeem is het essentieel om eerst een back-up te maken en voorzichtig te werk te gaan.
100 MB dummy-bestand maken
dd if=/dev/zero of=dummy.img bs=1M count=100
Leest 100 blokken van 1 MB van /dev/zero en maakt het bestand 'dummy.img'.
Back-up van schijfpartitie maken (voorzichtigheid geboden)
dd if=/dev/sda1 of=sda1_backup.img bs=4M status=progress
Maakt een back-up van de volledige inhoud van de /dev/sda1-partitie naar het bestand 'sda1_backup.img'. 'status=progress' toont de voortgang. **Controleer het doelapparaatpad zeer zorgvuldig.**
Bestandsinhoud vullen met nullen (veilige verwijdering)
dd if=/dev/zero of=myfile.txt bs=1M count=1 conv=notrunc
Overschrijft de inhoud van het bestaande bestand 'myfile.txt' met nullen. 'conv=notrunc' behoudt de bestandsgrootte.
Opstartbare USB-drive maken van ISO-image (zeer voorzichtig)
dd if=ubuntu.iso of=/dev/sdb bs=4M status=progress conv=fsync
Kopieert het bestand 'ubuntu.iso' naar de USB-drive '/dev/sdb' om deze opstartbaar te maken. **Controleer absoluut het apparaatpad dat is opgegeven voor 'of'. Verkeerde specificatie kan leiden tot schade aan de systeemschijf.** 'conv=fsync' zorgt ervoor dat alle gegevens volledig naar de schijf worden geschreven.
Specifiek deel van een bestand kopiëren
dd if=input.txt of=output.txt bs=1 count=100 skip=50 seek=0
Leest 100 bytes vanaf de 51e byte van het bestand 'input.txt' en kopieert deze naar het begin van het bestand 'output.txt'. (Omdat bs=1, zijn skip/seek in bytes)
Tips & Waarschuwingen
Het dd-commando is erg krachtig, dus wees uiterst voorzichtig bij het gebruik ervan. Vooral het specificeren van onjuiste apparaten of bestanden voor de opties `if` en `of` kan leiden tot schade aan systeemsgegevens.
Belangrijkste waarschuwingen
- **Controleer het doel**: Controleer de paden die zijn opgegeven voor `if` en `of` meerdere keren. Vooral apparaatbestanden zoals `/dev/sda` kunnen fataal zijn.
- **Voortgang**: Gebruik de optie `status=progress` om de voortgang van de bewerking in realtime te controleren. Dit is handig voor bewerkingen met grote bestanden.
- **Blokgrootte**: De optie `bs` heeft een grote invloed op de prestaties. Over het algemeen zijn 1M, 4M, 8M efficiënt.
- **Risico op gegevensverlies**: `dd` kan gegevens overschrijven zonder waarschuwing, dus maak altijd eerst een back-up voordat u het gebruikt op schijven of partities met belangrijke gegevens.
Gebruik met het pv-commando
Het `dd`-commando zelf heeft beperkte voortgangsweergave. Door het `pv` (Pipe Viewer) commando te gebruiken, kunt u gedetailleerdere voortgang, overdrachtssnelheid en geschatte voltooiingstijd bekijken. Als `pv` niet is geïnstalleerd, moet u het eerst installeren. (bijv. `sudo apt install pv` of `sudo yum install pv`) **Gebruiksvoorbeeld:** `dd if=/dev/sda | pv -pteb | dd of=/dev/sdb`