Perché usiamo cp per copiare i file e non dd? (in derivati ​​unix)

Per la normale copia di file in * nix, ho sempre visto che la gente usa cp (ad es. cp /mnt/mydevice/myfile ~/myfile ), ma alla fine ho eseguito dd , che sembra fare la stessa cosa ( dd if=/mnt/mydevice/myfile of=~/myfile ). Vedo che dispongono di diversi parametri disponibili (dd sembra migliore per la copia ottimale), ma sembrano ridondanti. Questi strumenti realmente fanno la stessa cosa?

Per rispondere alla tua domanda principale, no, non fanno la stessa cosa.

dd funziona sul file specificato, rendendolo in grado di copiare i dati tra i dispositivi o da un dispositivo a un file. Questo è comunemente usato per spostare dati se sono coinvolti in modo specifico i dispositivi (creare un'image ISO da un disco cd-rom ad esempio: dd if = / dev / cdrom di = mycdrom.iso), o backup dei dispositivi crudi (talvolta utilizzati nei database RAC : dd if = / dev / raw / raw1 di = device_raw1)

cp viene utilizzato per duplicare il contenuto del file in un nuovo file o in una nuova posizione. le cose che desideri in modo specifico ci sono la conservazione della properties;, il timestamp e la modalità (diritti), e sono in grado di recurse l'operazione (= essere in grado di copiare directory).

fonte

Essi fanno la stessa cosa a less che non si specifichi una delle opzioni per dd che limita che i byte vengono copiati, ad esempio seek o skip o count o se si utilizzano le opzioni dd per mutare i byte come conv . Se non si utilizza una di queste opzioni a dd e stanno usando solo le opzioni più comunemente visto come if , of , bs entrambi i programmi di utilità fanno la stessa cosa: aprire entrambi i file, leggere dall'input, scrivere all'output fino a quando l'ingresso è esaurito o l'output non può accettare più byte.

C'è molta superstizione sulla lettura e la scrittura di file "dispositivo" che afferma che devi utilizzare dd per questi, ma è solo questo, superstizione. dd non sta facendo nulla di diverso, stiamo solo aprendo file e leggere e scrivere byte.