हम फ़ाइलों की प्रतिलिपि बनाने के लिए cp का उपयोग क्यों करते हैं और dd को नहीं? (यूनिक्स-डेरिवेटिव में)


21

* Nix में सामान्य फ़ाइल कॉपी करने के लिए, मैंने केवल लोगों को cp (उदा। cp /mnt/mydevice/myfile ~/myfile) का उपयोग करते हुए देखा है , लेकिन मैं आखिरकार भाग गया dd, जो ठीक उसी चीज़ ( dd if=/mnt/mydevice/myfile of=~/myfile) को करता हुआ प्रतीत होता है । मैं देख रहा हूं कि उनके पास कुछ अलग पैरामीटर उपलब्ध हैं (ठीक-ठीक नकल पर dd बेहतर लगता है), लेकिन वे बेमानी दिखाई देते हैं। क्या ये उपकरण वास्तव में एक ही काम करते हैं?


वे केवल नियमित फ़ाइलों के लिए ही काम करते हैं। उदाहरण के लिए किसी निर्देशिका को कॉपी करने का प्रयास करें dd
Eddy_Em

... या एक उपकरण (जैसे /dev/sda) के साथ cp
jpaugh

क्या आपके सवाल का जवाब दिया गया था?
क्रूग

@ ईडी_ईएम, इसमें गलत क्या है?
पचेरियर

जवाबों:


13

आपके मुख्य प्रश्न का उत्तर देने के लिए, नहीं, वे एक ही काम नहीं करते हैं।

dd आपके द्वारा निर्दिष्ट फ़ाइल पर काम करता है, जिससे यह डिवाइसों के बीच या डिवाइस से फ़ाइल में डेटा कॉपी कर सकता है। यह आमतौर पर मूविंग डेटा के लिए उपयोग किया जाता है यदि डिवाइस विशेष रूप से शामिल होते हैं (उदाहरण के लिए सीडी-रोम डिस्क से एक आईएसओ छवि बनाते हैं: dd if = / dev / cdrom of = mycdrom.iso), या बैकअप रॉ डिवाइस (कभी-कभी RAC डेटाबेस में उपयोग किया जाता है) : dd if = / dev / raw / raw1 of = device_raw1)

cp का उपयोग फ़ाइल सामग्री को किसी नई फ़ाइल या किसी नए स्थान पर डुप्लिकेट करने के लिए किया जाता है। वे चीजें जो आप विशेष रूप से चाहते हैं कि स्वामित्व, टाइमस्टैम्प और मोड (अधिकारों) का संरक्षण है, और ऑपरेशन को फिर से शुरू करने में सक्षम होने के लिए (= निर्देशिका को कॉपी करने में सक्षम)।

स्रोत


3
आह! ठीक है, इसलिए dd कच्ची फाइल को कॉपी करता है, जबकि cp कंटेंट को कॉपी करता है (जो कि फाइलसिस्टम को तोड़े बिना इंस्टेंस कॉपी निर्देशिका के लिए अनुमति देता है)। धन्यवाद!
user232105

5
@ क्रूग, मुझे कुछ याद आ रहा है क्योंकि मैं अभी भी नहीं देखता कि cpवह क्या कर सकता है ddddयह भी करने में सक्षम है "एक नया स्थान एक नई फ़ाइल के लिए या करने के लिए डुप्लिकेट फ़ाइल सामग्री" और "स्वामित्व, टाइमस्टैम्प और मोड के संरक्षण" है ना?
पचेरियर

3
@ मैं जो समझ सकता हूं cpउससे बेहतर , एक अधिक केंद्रित उपयोगिता है जबकि ddअधिक सामान्य है। ddजो कर सकता है वह सब cpकर सकता है, लेकिन cpकेवल वही ddकर सकता है जो कुछ कर सकता है।
क्रूग

मुझे नहीं लगता कि अंतर स्पष्ट रूप से समझाया गया है। Cp क्या नहीं कर सकता है और dd कर सकता है? और दूसरा रास्ता गोल?
gorn

9

वे जब तक आप विकल्पों में से एक को निर्दिष्ट कर रहे हैं एक ही बात करने के लिए ddहै जो इस तरह के रूप में सीमा जो बाइट्स कॉपी कर रहे हैं, seekया skipया countया यदि आप का उपयोग ddमे बदलें करने के लिए विकल्प के रूप में इस तरह के बाइट्स conv। आप के लिए इनमें से एक विकल्प का उपयोग नहीं कर रहे हैं, तो ddऔर बस की तरह अधिक आमतौर पर देखा विकल्पों का उपयोग कर रहे हैं if, of, bsतो दोनों उपयोगिताओं एक ही बात करते हैं: उत्पादन के लिए दोनों फ़ाइलों को लिखने खोलते हैं, तो इनपुट से पढ़ा है, जब तक या तो इनपुट शून्य हो जाता है या आउटपुट अधिक बाइट्स को स्वीकार नहीं कर सकता है।

"डिवाइस" फ़ाइलों को पढ़ने और लिखने के बारे में बहुत अधिक अंधविश्वास है जो बताते हैं कि आपको ddइनका उपयोग करना चाहिए , लेकिन यह सिर्फ अंधविश्वास है। ddकुछ अलग नहीं कर रहा है, हम सिर्फ फाइलें खोल रहे हैं और बाइट्स पढ़ और लिख रहे हैं।


यह कम या ज्यादा ... यदि आप डिवाइस के आधार पर = भाग्य का उपयोग करते हैं, तो कुछ समस्याएं हो सकती हैं, पूर्व। यूएसबी फ़्लैश डिस्क। मुझे पता है कि मुझे इसके लिए >> नियति का उपयोग करना होगा और इसके लिए = xxx पैरामीटर को हटाना होगा। अगर मैं = भाग्य विचित्र समस्याओं का उपयोग करता हूं, क्योंकि मैं स्किप के साथ काम करता हूं और iflags = Skip_bytes ध्वज ... तो, कोई बहुत अधिक अंधविश्वास नहीं है। देखभाल और परीक्षण की आवश्यकता है क्योंकि = नियति कुछ स्थितियों में सही ढंग से काम नहीं कर सकती है जहां >> भाग्य सुचारू रूप से चलता है। मैंने बड़ी फाइल को स्टेप्स के साथ पेनड्राइव में सेव करने के लिए एक स्क्रिप्ट लिखी। फुल 400MB कॉपी का उपयोग sdcard डिस्क विभाजन को गड़बड़ाने के लिए किया जाता है।
सर्जियो अब्रेउ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.