लिनक्स में cp कमांड का प्रभावी ढंग से उपयोग कैसे करें [14 उदाहरण]


संक्षिप्त: इस आसान-से-अनुसरण मार्गदर्शिका में, हम cp कमांड के कुछ व्यावहारिक उदाहरणों पर चर्चा करेंगे। इस गाइड का पालन करने के बाद, उपयोगकर्ता कमांड लाइन इंटरफ़ेस का उपयोग करके लिनक्स में फाइलों और निर्देशिकाओं को आसानी से कॉपी कर पाएंगे।

लिनक्स उपयोगकर्ताओं के रूप में, हम प्रतिलिपि फ़ाइलों और निर्देशिकाओं के साथ बातचीत करते हैं। निश्चित रूप से, हम कॉपी ऑपरेशन करने के लिए एक ग्राफिकल फ़ाइल मैनेजर का उपयोग कर सकते हैं। हालांकि, अधिकांश लिनक्स उपयोगकर्ता इसकी सादगी और समृद्ध कार्यक्षमता के कारण cp कमांड का उपयोग करना पसंद करते हैं।

शुरुआती लोगों के लिए इस गाइड में हम cp कमांड के बारे में सीखेंगे। जैसा कि नाम से पता चलता है, cp कमांड का उपयोग किसी दिए गए पथ पर फ़ाइलों और निर्देशिकाओं को कॉपी करने के लिए किया जाता है।

इस गाइड के दौरान, हम व्यावहारिक उदाहरणों का उपयोग करके cp कमांड के उपयोग को समझेंगे जिनका उपयोग दिन-प्रतिदिन के आधार पर किया जा सकता है।

तो चलिए शुरू करते हैं।

विषयसूची

सीपी कमांड सिंटेक्स

सीपी कमांड का सिंटैक्स अन्य लिनक्स कमांड के समान है। उच्च स्तर पर, इसे दो भागों में बांटा गया है - विकल्प और तर्क:

$ cp [OPTIONS] <SOURCE> <DEST>
$ cp [OPTIONS] <SOURCE-1> <SOURCE-2> ... <DIRECTORY>

उपरोक्त सिंटैक्स में, वर्गाकार कोष्ठक ([]) वैकल्पिक तर्कों का प्रतिनिधित्व करते हैं जबकि कोणीय कोष्ठक (<>) अनिवार्य तर्कों का प्रतिनिधित्व करते हैं।

1. लिनक्स में फाइल कॉपी कैसे करें

सीपी कमांड के मूल उपयोग में से एक फ़ाइल को वर्तमान निर्देशिका में कॉपी करना है। अधिकांश समय उपयोगकर्ता इस ऑपरेशन को महत्वपूर्ण कॉन्फ़िगरेशन का बैकअप लेने के लिए करते हैं।

उदाहरण के लिए, हम अक्सर SSH कॉन्फ़िगरेशन को अपडेट करने से पहले /etc/ssh/sshd_config फाइल की एक बैकअप कॉपी बनाते हैं।

उपयोग को समझने के लिए, आइए एक साधारण फ़ाइल बनाएँ:

$ touch file-1.txt

अगला, निम्न कमांड का उपयोग करके फ़ाइल की एक प्रति बनाएँ:

$ cp file-1.txt file-2.txt

2. कॉपी कमांड प्रगति दिखाएं

पिछले उदाहरण में, हमने यह सत्यापित करने के लिए ls कमांड का उपयोग किया कि फाइल कॉपी ऑपरेशन सफल हुआ या नहीं। हालाँकि, पिछले आदेशों के परिणाम को सत्यापित करने के लिए केवल एक और कमांड का उपयोग करने का कोई मतलब नहीं है।

ऐसे मामलों में, हम -v विकल्प का उपयोग करके वर्बोज़ मोड को सक्षम कर सकते हैं, जो प्रत्येक संसाधित फ़ाइल के लिए डायग्नोस्टिक्स प्रदान करता है।

आइए निम्न कमांड का उपयोग करके फ़ाइल-1.txt फ़ाइल की प्रतिलिपि बनाएँ:

$ cp -v file-1.txt file-3.txt

उपरोक्त आउटपुट में, तीर उस फ़ाइल का प्रतिनिधित्व करता है जिसे कॉपी किया जा रहा है। बाईं ओर का तर्क स्रोत फ़ाइल है जबकि दाईं ओर का तर्क गंतव्य फ़ाइल है।

3. डायरेक्टरी में मल्टीपल फाइल्स को कैसे कॉपी करें

अब तक हमने केवल एक फ़ाइल और वर्तमान कार्यशील निर्देशिका के साथ काम किया है। हालाँकि, वास्तविक उत्पादन वातावरण में, हमें बड़ी संख्या में फ़ाइलों के साथ काम करना पड़ता है। ऐसे परिवेशों में सामान्य उपयोग मामलों में से एक एक ही निर्देशिका में एकाधिक फ़ाइलों की प्रतिलिपि बनाना है।

जाहिर है, हम इसे प्राप्त करने के लिए cp कमांड को कई बार निष्पादित कर सकते हैं, लेकिन यह सबसे प्रभावी तरीका नहीं होगा। इस तरह के ऑपरेशन को प्रभावी ढंग से करने के लिए, हम cp कमांड के वैकल्पिक सिंटैक्स का उपयोग कर सकते हैं।

इसलिए, पहले dir-1 नाम से एक नई डायरेक्टरी बनाएँ:

$ mkdir dir-1

अब, एकल आदेश का उपयोग करके सभी तीन फ़ाइलों को dir-1 निर्देशिका में कॉपी करें:

$ cp -v file-1.txt file-2.txt file-3.txt dir-1

उपरोक्त आउटपुट से पता चलता है कि सभी फाइलों को डीआईआर -1 निर्देशिका में कॉपी किया गया है। इसके अलावा, यह ध्यान रखना महत्वपूर्ण है कि, इस वैकल्पिक सिंटैक्स का उपयोग करने के लिए निर्देशिका पहले से मौजूद होनी चाहिए और यह कमांड का अंतिम तर्क होना चाहिए।

4. फाइल को ओवरराइट करने से कैसे बचें

डिफ़ॉल्ट रूप से, cp कमांड गंतव्य फ़ाइल को बदल देता है, जिसका अर्थ है कि यह फ़ाइल को अधिलेखित कर देगा यदि यह उसी नाम से गंतव्य पर मौजूद है। हालाँकि, हम -n विकल्प का उपयोग करके इस डिफ़ॉल्ट व्यवहार को अक्षम कर सकते हैं।

इसे समझने के लिए, आइए मौजूदा फ़ाइल को अधिलेखित करने का प्रयास करें:

$ cp -n -v file-1.txt file-2.txt

इस उदाहरण में, हमने यह दर्शाने के लिए -v विकल्प का उपयोग किया है कि file-2.txt फ़ाइल ओवरराइट नहीं की गई है।

5. फ़ाइल को पुष्टि के साथ अधिलेखित कैसे करें

पिछले उदाहरण में, हमने देखा कि डेस्टिनेशन फ़ाइल की ओवरराइटिंग से कैसे बचा जाए। हालाँकि, कभी-कभी हम फ़ाइल गंतव्य को सुरक्षित तरीके से अधिलेखित करना चाहते हैं।

ऐसे मामलों में, हम कॉपी ऑपरेशन को इंटरैक्टिव बनाने के लिए कमांड के -i विकल्प का उपयोग कर सकते हैं। यह विकल्प चेतावनी संदेश दिखाता है और फ़ाइल को अधिलेखित करने से पहले उपयोगकर्ता की पुष्टि की प्रतीक्षा करता है।

इसे समझाने के लिए, आइए मौजूदा फ़ाइल को अधिलेखित करने का प्रयास करें:

$ cp -i file-1.txt file-2.txt

cp: overwrite 'file-2.txt'?

जैसा कि हम देख सकते हैं, आदेश पुष्टि की प्रतीक्षा कर रहा है। अन्य लिनक्स कमांड की तरह, हम ऑपरेशन को जारी रखने के लिए y या n का उपयोग कर सकते हैं।

सीपी कमांड का यह डिफ़ॉल्ट गैर-संवादात्मक व्यवहार बहुत सुरक्षित नहीं है। संभावना है कि उपयोगकर्ता गलती से एक महत्वपूर्ण कॉन्फ़िगरेशन को ओवरराइट कर सकता है। इसलिए कुछ लिनक्स वितरण डिफ़ॉल्ट रूप से अन्य कमांड का उपयोग करके इंटरैक्टिव व्यवहार को लागू करते हैं:

$ alias cp='cp -i'

6. स्रोत नया होने पर ही फ़ाइल को अधिलेखित करें

पिछले उदाहरण में, हमने देखा कि इंटरएक्टिव मोड का उपयोग कैसे करें। हालाँकि, कभी-कभी, उपयोगकर्ता अनजाने में नई फ़ाइल को अधिलेखित कर सकता है।

ऐसे त्रुटि-प्रवण मामलों से बचने के लिए, हम -u विकल्प का उपयोग कर सकते हैं, जो प्रतिलिपि संचालन का प्रयास केवल तभी करता है जब स्रोत गंतव्य से नया हो या फ़ाइल गंतव्य पर मौजूद न हो।

सबसे पहले, स्रोत फ़ाइल का टाइमस्टैम्प अपडेट करें:

$ touch -t 10101010 file-1.txt
$ ls -l file-1.txt

उपरोक्त उदाहरण में, हमने फ़ाइल के टाइमस्टैम्प को 10-अक्टूबर-2010 पर सेट करने के लिए टच कमांड के -t विकल्प का उपयोग किया है।

अगला, गंतव्य फ़ाइल के टाइमस्टैम्प को वर्तमान समय में अपडेट करें:

$ touch file-2.txt

अब, -u विकल्प का उपयोग करके कॉपी ऑपरेशन करने का प्रयास करते हैं:

$ cp -u -v file-1.txt file-2.txt

यहां, हम देख सकते हैं कि प्रतिलिपि कार्रवाई का प्रयास नहीं किया गया है क्योंकि गंतव्य फ़ाइल स्रोत से नई है।

अंत में, स्रोत और गंतव्य तर्कों की अदला-बदली करें और कॉपी ऑपरेशन करें:

$ cp -u -v file-2.txt file-1.txt

उपरोक्त आउटपुट में, हम देख सकते हैं कि कॉपी ऑपरेशन सफल होता है क्योंकि स्रोत फ़ाइल गंतव्य से नई है।

7. ओवरराइटिंग से पहले फाइल का बैकअप कैसे लें

हम cp कमांड को ओवरराइट करने से पहले डेस्टिनेशन फाइल का बैकअप लेने का निर्देश दे सकते हैं। इसे प्राप्त करने के लिए हम --backup विकल्प का उपयोग कर सकते हैं, जो स्वचालित बैकअप करता है।

$ cp --backup=numbered -v file-1.txt file-2.txt

इस उदाहरण में, हमने क्रमांकित बैकअप नीति का उपयोग किया है। यह नीति बैकअप फ़ाइल नामों में वृद्धिशील संख्याओं का उपयोग करती है।

इसे समझने के लिए, एक ही कमांड को कई बार निष्पादित करें और आउटपुट देखें:

$ cp --backup=numbered -v file-1.txt file-2.txt
$ cp --backup=numbered -v file-1.txt file-2.txt
$ cp --backup=numbered -v file-1.txt file-2.txt

8. फाइल को ओवरराइट करने के लिए कॉपी को कैसे फोर्स करें

पिछले कुछ उदाहरणों में, हमने देखा कि सुरक्षित तरीके से फ़ाइल को कैसे अधिलेखित किया जाए। हालाँकि, कुछ दुर्लभ मामलों में, फ़ाइल को अधिलेखित करने की आवश्यकता होती है। हालाँकि, इस बात की कोई गारंटी नहीं है कि ऑपरेशन हर बार सफल होगा।

उदाहरण के लिए, यदि गंतव्य फ़ाइल में लिखने की अनुमति नहीं है, तो कॉपी कार्रवाई विफल हो जाएगी। इसे एक उदाहरण से समझाते हैं।

पहले, गंतव्य फ़ाइल की अनुमतियाँ बदलें:

$ chmod 444 file-2.txt
$ ls -l file-2.txt

अब, फ़ाइल-2.txt फ़ाइल को अधिलेखित करने का प्रयास करें:

$ cp file-1.txt file-2.txt

उपरोक्त आउटपुट में, हम देख सकते हैं कि कमांड विफल हो गई है, अनुमति से इनकार त्रुटि के साथ।

इस सीमा को पार करने के लिए, हम -f विकल्प का उपयोग कर सकते हैं, जो गंतव्य फ़ाइलों को हटा देता है और यदि गंतव्य फ़ाइल को खोला नहीं जा सकता है तो कॉपी ऑपरेशन का प्रयास करता है।

अब, फाइल को जबरदस्ती अधिलेखित करने के लिए -f विकल्प का उपयोग करें:

$ cp -f -v file-1.txt file-2.txt

9. कॉपी करने से पहले डेस्टिनेशन फाइल को कैसे हटाएं

पिछले उदाहरण में, हमने देखा कि यदि गंतव्य फ़ाइल को संचालित करते समय कोई त्रुटि हो तो उसे कैसे हटाया जाए। हालाँकि, कभी-कभी आवश्यकता होती है कि पहले गंतव्य फ़ाइल को हटा दिया जाए और फिर कॉपी ऑपरेशन किया जाए।

ऐसी आवश्यकता को पूरा करने के लिए, हम --remove-destination विकल्प का उपयोग कर सकते हैं।

$ cp --remove-destination -v file-1.txt file-2.txt

उपरोक्त आउटपुट में, हम देख सकते हैं कि cp कमांड पहले डेस्टिनेशन फाइल को हटाता है और फिर कॉपी ऑपरेशन करता है।

10. कॉपी करने के बजाय हार्ड लिंक फाइल कैसे बनाएं

हम सोर्स फाइल की नई कॉपी बनाने के बजाय हार्ड लिंक बना सकते हैं। डिस्क स्थान की कमी होने पर यह विकल्प महत्वपूर्ण भूमिका निभाता है।

इसलिए, हार्ड लिंक बनाने के लिए -l विकल्प का उपयोग करें:

$ cp -l -v file-1.txt file-4.txt

अब, हार्ड लिंक को सत्यापित करने के लिए दोनों फाइलों के इनोड नंबरों की जांच करें:

$ ls -i1 file-1.txt file-4.txt

उपरोक्त आउटपुट में, पहले कॉलम में संख्याएँ इनोड संख्याओं का प्रतिनिधित्व करती हैं।

11. कॉपी करने के बजाय सॉफ्ट लिंक फाइल कैसे बनाएं

इसी तरह, हम -s विकल्प का उपयोग करके एक नई कॉपी बनाने के बजाय एक सॉफ्ट लिंक बना सकते हैं जैसा कि नीचे दिखाया गया है:

$ cp -s -v file-1.txt file-5.txt

अब, आइए सत्यापित करें कि प्रतीकात्मक लिंक सही तरीके से बनाया गया है:

$ ls -l file-5.txt

उपरोक्त आउटपुट में, अंतिम कॉलम सांकेतिक लिंक संबंध का प्रतिनिधित्व करते हैं।

12. कॉपी करते समय फ़ाइल की विशेषताओं को कैसे सुरक्षित रखें

फ़ाइल से जुड़ी कई विशेषताएँ हैं, जैसे कि इसका एक्सेस समय, संशोधन समय, अनुमतियाँ, आदि। डिफ़ॉल्ट रूप से, फ़ाइल की प्रतिलिपि बनाते समय इन विशेषताओं को संरक्षित नहीं किया जाता है। इस डिफ़ॉल्ट व्यवहार को ओवरराइड करने के लिए हम -p विकल्प का उपयोग कर सकते हैं।

इसे समझने के लिए सबसे पहले फाइल-1.txt के टाइमस्टैंप को अपडेट करें:

$ touch -t 10101010 file-1.txt

अब, इसकी सभी विशेषताओं को संरक्षित करके इस फ़ाइल की एक प्रति बनाएँ:

$ cp -p -v file-1.txt file-6.txt

अंत में, फ़ाइल-6.txt फ़ाइल का टाइमस्टैम्प सत्यापित करें:

$ ls -l file-6.txt

13. पुनरावर्ती रूप से कॉपी ऑपरेशन कैसे करें

अब तक हमने देखा कि किसी एक फाइल को कैसे कॉपी किया जाता है। हालाँकि, कई बार हमें विशेष निर्देशिका की सभी फाइलों और उप-निर्देशिकाओं को कॉपी करना पड़ता है।

ऐसे मामलों में, हम या तो -r या -R विकल्प का उपयोग करके पुनरावर्ती मोड का उपयोग कर सकते हैं।

तो चलिए एक डायरेक्टरी बनाते हैं और उसके अंतर्गत कुछ फाइलें और सब-डायरेक्टरी जोड़ते हैं:

$ mkdir -p dir-1/dir-2
$ touch dir-1/file-1.txt dir-1/dir-2/file-2.txt

अगला, सत्यापित करें कि निर्देशिका संरचना सही तरीके से बनाई गई है:

$ tree dir-1

अब, निम्नलिखित कमांड का उपयोग करके निर्देशिका dir-1 को पुनरावर्ती रूप से कॉपी करते हैं:

$ cp -r -v dir-1 dir-3

अंत में, सत्यापित करें कि सभी फाइलों और उप-निर्देशिकाओं को सफलतापूर्वक कॉपी किया गया है:

$ tree dir-3

14. एकाधिक निर्देशिकाओं की प्रतिलिपि कैसे बनाएँ

फ़ाइलों के समान, हम एक कमांड का उपयोग करके पुनरावर्ती कई निर्देशिकाओं को कॉपी कर सकते हैं। हालाँकि, इसे प्राप्त करने के लिए गंतव्य निर्देशिका पहले से मौजूद होनी चाहिए और यह कमांड में अंतिम तर्क होना चाहिए। इसे एक उदाहरण से समझते हैं।

सबसे पहले, एक निर्देशिका एक नई निर्देशिका बनाएँ:

$ mkdir dir-4

अब, नीचे दी गई कमांड का उपयोग करके dir-1 और dir-3 निर्देशिकाओं को dir-4 निर्देशिका में कॉपी करें:

$ cp -r -v dir-1 dir-3 dir-4

इसी तरह, हम उसी परिणाम को प्राप्त करने के लिए कमांड के -t विकल्प का उपयोग कर सकते हैं। यह विकल्प हमें गंतव्य निर्देशिका निर्दिष्ट करने की अनुमति देता है। तो हम इसे पहले तर्क के रूप में भी उपयोग कर सकते हैं:

$ cp -t dir-4 -r -v dir-1 dir-3

इस लेख में, हमने cp कमांड का उपयोग करके फ़ाइलों और निर्देशिकाओं को कॉपी करने के तरीके पर चर्चा की। शुरुआती इन उदाहरणों को लिनक्स सिस्टम के साथ काम करते समय दैनिक जीवन में देख सकते हैं।

शायद तुम्हे यह भी अच्छा लगे:

<उल>

  • प्रगति - (cp, mv, dd, tar) कमांड के लिए कॉपी किए गए डेटा का प्रतिशत दिखाएं
  • 'pv' कमांड का उपयोग करके डेटा (कॉपी/बैकअप/कंप्रेस) की प्रगति की निगरानी करें
  • उन्नत कॉपी कमांड - लिनक्स में बड़ी फ़ाइलों/फ़ोल्डरों की प्रतिलिपि बनाते समय प्रगति बार दिखाता है
  • क्या आप लिनक्स में cp कमांड के किसी अन्य सर्वश्रेष्ठ उदाहरण के बारे में जानते हैं? अपने विचार हमें नीचे कमेंट्स में बताएं।