Чому ми використовуємо cp для копіювання файлів, а не dd? (у unix-похідних)


21

Для звичайного копіювання файлів у * nix я бачив лише, коли люди використовують cp (напр. cp /mnt/mydevice/myfile ~/myfile), Але я врешті-решт натрапив на dd, що, схоже, робить саме те саме ( dd if=/mnt/mydevice/myfile of=~/myfile). Я бачу, що у них є деякі різні параметри (dd при кращому налаштуванні копіювання здається кращим), але вони здаються зайвими. Чи справді ці інструменти роблять те саме?


Вони роблять ті самі речі лише для звичайних файлів. Спробуйте, наприклад, скопіювати каталог dd.
Eddy_Em

... або пристрій (як /dev/sda) із cp.
jpaugh

На ваше запитання відповіли?
Круг

@Eddy_Em, що з цим?
Pacerier

Відповіді:


13

Щоб відповісти на ваше головне запитання, ні, вони не роблять те саме.

dd працює над вказаним вами файлом, що дозволяє копіювати дані між пристроями або з пристрою у файл. Це зазвичай використовується для переміщення даних, якщо спеціально залучені пристрої (створити ізо-образ із диска CD-ROM, наприклад: dd, якщо = / dev / cdrom of = mycdrom.iso), або резервного копіювання необроблених пристроїв (іноді використовується в базах даних RAC : dd, якщо = / dev / raw / raw1 of = device_raw1)

cp використовується для дублювання вмісту файлу в новий файл або в нове місце. Ви хочете спеціально зберегти право власності, часову позначку та режим (права) та можливість повторити операцію (= можливість копіювати каталоги).

Джерело


3
Ах! Гаразд, так DD копіює необроблений файл, тоді як cp копіює вміст (що дозволяє йому, наприклад, копіювати каталоги, не порушуючи файлову систему). Спасибі!
user232105

5
@Kruug, мені, мабуть, щось не вистачає, тому що я досі не бачу, що cpзробити це ddне може. ddтакож здатний "дублювати вміст файлу до нового файлу або на нове місце" та "збереження права власності, часової позначки та режиму" так?
Pacerier

3
@Pacerier з того, що я можу зрозуміти, cp- це більш цілеспрямована утиліта, тоді ddяк більш загальна. ddможе робити все, що cpможе, але cpможе робити лише те, що ddможе зробити.
Круг

Я не думаю, що різниця пояснюється чітко. Що cp не може робити і dd може? А навпаки?
gorn

9

Вони роблять те саме, що ви не вказуєте один із варіантів, до ddяких обмежуються байти, які копіюються, наприклад, seekабо skipабо countабо ви використовуєте ddпараметри для мутації байтів, таких як conv. Якщо ви не використовуєте один з цих варіантів для ddі тільки з допомогою більш часто бачили варіанти , як if, of, bsто обидві утиліти роблять те ж саме: відкрити обидва файли, зчитуються з вхідних даних, запис на виході до тих пір , як вхід не буде вичерпаний або вихід не може прийняти більше байтів.

Існує велика кількість забобонів щодо читання та запису файлів "пристроїв", які стверджують, що ви повинні використовувати ddїх, але це просто забобони. ddне робить нічого іншого, ми просто відкриваємо файли та читаємо та пишемо байти.


Більш-менш це… якщо ви використовуєте = доля залежно від пристрою, який він є, можуть виникнути деякі проблеми, напр. USB флеш-диск. Я виявляю, що я повинен використовувати >> destiny та видалити параметр = xxx, щоб він працював. Якщо я використовую = доля, виникають дивні проблеми, тому що я працюю зі прапором skip і iflags = skip_bytes ... так що не так багато забобонів. Потреби в догляді та тестах через = доля може не працювати належним чином в деяких умовах, коли >> доля йде безперебійно. Я написав сценарій для збереження великого файлу, який потрібно виконати з кроками. Повна копія 400 Мб, яка використовується для безладної дискової секції SDCard.
Серхіо Абреу
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.