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


21

Per la normale copia di file in * nix, ho sempre visto persone usare cp (ad es. cp /mnt/mydevice/myfile ~/myfile), Ma alla fine mi sono imbattuto dd, il che sembra fare esattamente la stessa cosa ( dd if=/mnt/mydevice/myfile of=~/myfile). Vedo che hanno alcuni parametri diversi disponibili (dd sembra migliore durante la copia ottimizzata), ma sembrano ridondanti. Questi strumenti fanno davvero la stessa cosa?


Fanno le stesse cose solo per i file normali. Prova ad esempio a copiare una directory con dd.
Eddy_Em,

... o un dispositivo (come /dev/sda) con cp.
jpaugh,

La tua domanda ha avuto risposta?
Kruug,

@Eddy_Em, Cosa c'è che non va?
Pacerier,

Risposte:


13

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

dd funziona sul file specificato, rendendolo in grado di copiare dati tra dispositivi o da un dispositivo a un file. Questo è comunemente usato per spostare dati se sono coinvolti dispositivi specifici (creare un'immagine iso da un disco cd-rom, ad esempio: dd if = / dev / cdrom di = mycdrom.iso), o eseguire il backup di dispositivi non elaborati (a volte 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 specificamente ci sono la conservazione della proprietà, la data e l'ora e la modalità (diritti) e la possibilità di ricorrere all'operazione (= la possibilità di copiare le directory).

fonte


3
Ah! Va bene, quindi dd copia il file non elaborato, mentre cp copia il contenuto (il che gli consente, ad esempio, di copiare le directory senza rompere il file system). Grazie!
user232105,

5
@Kruug, mi devo perdere qualcosa perché ancora non vedo cosa cppuò fare che ddnon può. ddè anche in grado di "duplicare il contenuto del file in un nuovo file o in una nuova posizione" e "conservazione della proprietà, data e ora e modalità" giusto?
Pacerier,

3
@Pacerier da quello che posso capire, cpè un'utilità più mirata mentre ddè più generale. ddpuò fare tutto ciò che cppuò fare, ma cppuò fare solo parte di ciò che ddpuò fare.
Kruug,

Non credo che la differenza sia spiegata chiaramente. Cosa cp non può fare e dd può? E viceversa?
Il

9

Fanno la stessa cosa A MENO CHE tu non stia specificando una delle opzioni in ddcui limitare i byte da copiare, come seeko skipo counto se usi le ddopzioni per mutare byte come conv. Se non si utilizza una di queste opzioni per dde sono solo utilizzando le opzioni più comunemente visto come if, of, bsquindi entrambe le utilità fanno la stessa cosa: aprire entrambi i file, leggere l'input, di scrittura per l'uscita fino a quando l'ingresso è esaurito oppure l'output non può accettare più byte.

C'è molta superstizione nella lettura e scrittura di file "device" che affermano che è necessario utilizzare ddper questi, ma è proprio questo, superstizione. ddnon sta facendo nulla di diverso, stiamo solo aprendo file e leggendo e scrivendo byte.


Più o meno questo ... se usi = destino a seconda del dispositivo, potrebbero verificarsi alcuni problemi, ad es. Disco flash USB. Scopro che devo usare >> destino e rimuovere il parametro = xxx perché funzioni. Se uso = destino si verificano strani problemi perché opero con skip e iflags = skip_bytes flag ... quindi, non c'è troppa superstizione. Ha bisogno di cure e test a causa di = destino potrebbe non funzionare correttamente in alcune condizioni in cui >> il destino va liscio. Ho scritto uno script per salvare file di grandi dimensioni in pendrive con passaggi. Copia completa da 400 MB utilizzata per disordinare la partizione del disco SDD.
Sergio Abreu,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.