सीपी (यूनिक्स): Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
Line 17: Line 17:
| website                =  
| website                =  
}}
}}
[[ कम्प्यूटिंग | कम्प्यूटिंग]] में,<code>cp</code> विभिन्न [[यूनिक्स]] और यूनिक्स जैसे [[ऑपरेटिंग सिस्टम]] में [[कम्प्यूटर फाइल]] और [[निर्देशिका (कंप्यूटिंग)]] की प्रतिलिपि बनाने के लिए [[कमांड (कंप्यूटिंग)]] है। कमांड में ऑपरेशन की तीन प्रमुख विधियाँ हैं, जो फाइल को दूसरी फाइल में कॉपी करने के लिए, या से अधिक फाइलों को डायरेक्टरी में कॉपी करने के लिए, या पूर्ण डायरेक्टरी को दूसरी डायरेक्टरी में कॉपी करने के लिए प्रस्तुत किए गए तर्कों के प्रकार द्वारा व्यक्त किए जाते हैं।<ref>{{Cite web | url=https://www.man7.org/linux/man-pages/man1/cp.1.html | title=Cp(1) - Linux manual page }}</ref>
[[ कम्प्यूटिंग | कम्प्यूटिंग]] में,<code>cp</code> विभिन्न [[यूनिक्स]] और यूनिक्स जैसे [[ऑपरेटिंग सिस्टम]] में [[कम्प्यूटर फाइल]] और [[निर्देशिका (कंप्यूटिंग)]] की प्रतिलिपि बनाने के लिए [[कमांड (कंप्यूटिंग)]] है। इस प्रकार से कमांड में ऑपरेशन की तीन प्रमुख विधियाँ हैं, जो फाइल को दूसरी फाइल में कॉपी करने के लिए, या से अधिक फाइलों को डायरेक्टरी में कॉपी करने के लिए, या पूर्ण डायरेक्टरी को दूसरी डायरेक्टरी में कॉपी करने के लिए प्रस्तुत किए गए तर्कों के प्रकार द्वारा व्यक्त किए जाते हैं।<ref>{{Cite web | url=https://www.man7.org/linux/man-pages/man1/cp.1.html | title=Cp(1) - Linux manual page }}</ref>


यूटिलिटी निष्पादित ऑपरेशन का विवरण देने के लिए विभिन्न कमांड लाइन विकल्प फ़्लैग को भी स्वीकार करती है। [[POSIX|पोसिक्स]] सीपी और [[GNU|जीएनयू]] सीपी दो प्रमुख विनिर्देश हैं। पोसिक्स संस्करण की तुलना में जीएनयू सीपी के निकट कई अतिरिक्त विकल्प हैं।<ref>{{cite web|url=https://www.gnu.org/software/coreutils/manual/html_node/cp-invocation.html#cp-invocation|title=GNU Coreutils: cp invocation|website=www.gnu.org}}</ref>
इस प्रकार से यूटिलिटी निष्पादित ऑपरेशन का विवरण देने के लिए विभिन्न कमांड लाइन विकल्प फ़्लैग को भी स्वीकार करती है। [[POSIX|पोसिक्स]] सीपी और [[GNU|जीएनयू]] सीपी दो प्रमुख विनिर्देश हैं। पोसिक्स संस्करण की तुलना में जीएनयू सीपी के निकट कई अतिरिक्त विकल्प हैं।<ref>{{cite web|url=https://www.gnu.org/software/coreutils/manual/html_node/cp-invocation.html#cp-invocation|title=GNU Coreutils: cp invocation|website=www.gnu.org}}</ref>


कमांड [[ एकीकृत एक्सटेंसिबल फर्मवेयर इंटरफ़ेस |एकीकृत एक्सटेंसिबल फर्मवेयर इंटरफ़ेस]] में भी उपलब्ध है।<ref name="EFI-Shells-and-Scripting">{{cite web
अतः कमांड [[ एकीकृत एक्सटेंसिबल फर्मवेयर इंटरफ़ेस |एकीकृत एक्सटेंसिबल फर्मवेयर इंटरफ़ेस]] में भी उपलब्ध है।<ref name="EFI-Shells-and-Scripting">{{cite web
  | url = http://software.intel.com/en-us/articles/efi-shells-and-scripting/
  | url = http://software.intel.com/en-us/articles/efi-shells-and-scripting/
  | title = EFI Shells and Scripting
  | title = EFI Shells and Scripting
Line 28: Line 28:
}}</ref>
}}</ref>
== इतिहास ==
== इतिहास ==
सीपी [[संस्करण 1 यूनिक्स]] का भाग था।<ref name="reader">{{cite techreport |first1=M. D. |last1=McIlroy |author-link1=Doug McIlroy |year=1987 |url=http://www.cs.dartmouth.edu/~doug/reader.pdf |title=A Research Unix reader: annotated excerpts from the Programmer's Manual, 1971–1986 |series=CSTR |number=139 |institution=Bell Labs}}</ref> जीएनयू [[coreutils|कोरुटिल्स]] में बंडल किए गए सीपी का संस्करण टोरबॉर्न ग्रानलुंड, डेविड मैकेंज़ी और जिम मेयरिंग द्वारा लिखा गया था।<ref>{{Cite web|url=https://linux.die.net/man/1/cp|title=Cp(1): Copy files/Directories - Linux man page}}</ref>
इस प्रकार से सीपी [[संस्करण 1 यूनिक्स]] का भाग था।<ref name="reader">{{cite techreport |first1=M. D. |last1=McIlroy |author-link1=Doug McIlroy |year=1987 |url=http://www.cs.dartmouth.edu/~doug/reader.pdf |title=A Research Unix reader: annotated excerpts from the Programmer's Manual, 1971–1986 |series=CSTR |number=139 |institution=Bell Labs}}</ref> अतः जीएनयू [[coreutils|कोरुटिल्स]] में बंडल किए गए सीपी का संस्करण टोरबॉर्न ग्रानलुंड, डेविड मैकेंज़ी और जिम मेयरिंग द्वारा लिखा गया था।<ref>{{Cite web|url=https://linux.die.net/man/1/cp|title=Cp(1): Copy files/Directories - Linux man page}}</ref>
== ऑपरेटिंग मोड ==
== ऑपरेटिंग मोड ==
cp के संचालन की तीन प्रमुख विधियाँ हैं। आह्वान पर प्रोग्राम में प्रस्तुत किए गए तर्कों के प्रकार और गणना से इन विधियों का अनुमान लगाया जाता है।
cp के संचालन की तीन प्रमुख विधियाँ हैं। आह्वान पर प्रोग्राम में प्रस्तुत किए गए तर्कों के प्रकार और गणना से इन विधियों का अनुमान लगाया जाता है।
*जब प्रोग्राम में फाइलों के पथ नामों के दो तर्क होते हैं, तो प्रोग्राम पहली फाइल के विवरण को दूसरी फाइल में कॉपी करता है, यदि आवश्यक हो तो दूसरी फाइल बनाता है।
*जब प्रोग्राम में फाइलों के पथ नामों के दो तर्क होते हैं, तो प्रोग्राम पहली फाइल के विवरण को दूसरी फाइल में कॉपी करता है, यदि आवश्यक हो तो दूसरी फाइल बनाता है।
* जब प्रोग्राम में फ़ाइलों के पथ नामों के या अधिक तर्क होते हैं और उन तर्कों का अनुसरण करते हैं जो किसी निर्देशिका के पथ के लिए होते हैं, तो प्रोग्राम प्रत्येक स्रोत फ़ाइल को गंतव्य निर्देशिका में कॉपी करता है, ऐसी कोई भी फ़ाइल बनाता है जो पूर्व से स्थित नहीं है।
* जब प्रोग्राम में फ़ाइलों के पथ नामों के या अधिक तर्क होते हैं और उन तर्कों का अनुसरण करते हैं जो किसी निर्देशिका के पथ के लिए होते हैं, तो प्रोग्राम प्रत्येक स्रोत फ़ाइल को गंतव्य निर्देशिका में कॉपी करता है, ऐसी कोई भी फ़ाइल बनाता है जो पूर्व से स्थित नहीं है।
*जब प्रोग्राम के तर्क दो निर्देशिकाओं के लिए पथ नाम होते हैं, तो सीपी स्रोत निर्देशिका में सभी फ़ाइलों को गंतव्य निर्देशिका में कॉपी करता है, आवश्यक फ़ाइलों या निर्देशिकाओं का निर्माण करता है। ऑपरेशन के इस मोड में निर्देशिकाओं की पुनरावर्ती प्रतिलिपि को इंगित करने के लिए अतिरिक्त विकल्प फ्लैग, सामान्यतः ''आर'' की आवश्यकता होती है। यदि गंतव्य निर्देशिका पूर्व से स्थित है, तो स्रोत को गंतव्य में कॉपी किया जाता है, जबकि गंतव्य स्थित नहीं होने पर नवीन निर्देशिका बनाई जाती है।
*जब प्रोग्राम के तर्क दो निर्देशिकाओं के लिए पथ नाम होते हैं, तो सीपी स्रोत निर्देशिका में सभी फ़ाइलों को गंतव्य निर्देशिका में कॉपी करता है, आवश्यक फ़ाइलों या निर्देशिकाओं का निर्माण करता है। इस प्रकार से ऑपरेशन के इस मोड में निर्देशिकाओं की पुनरावर्ती प्रतिलिपि को इंगित करने के लिए अतिरिक्त विकल्प फ्लैग, सामान्यतः ''आर'' की आवश्यकता होती है। यदि गंतव्य निर्देशिका पूर्व से स्थित है, तो स्रोत को गंतव्य में कॉपी किया जाता है, जबकि गंतव्य स्थित नहीं होने पर नवीन निर्देशिका बनाई जाती है।


== उपयोग ==
== उपयोग ==
एक फाइल को दूसरी फाइल में कॉपी करना:
इस प्रकार से एक फाइल को दूसरी फाइल में कॉपी करना:
  cp [-fHip] [--] sourcefile targetfile
  cp [-fHip] [--] sourcefile targetfile


किसी निर्देशिका में फ़ाइल (फ़ाइलों) की प्रतिलिपि बनाना
अतः किसी निर्देशिका में फ़ाइल (फ़ाइलों) की प्रतिलिपि बनाना
  cp [-fHip] [--] sourcefile... targetdirectory
  cp [-fHip] [--] sourcefile... targetdirectory


Line 46: Line 46:


== विकल्प फ्लैग ==
== विकल्प फ्लैग ==
*<code>-f</code> (बल) - लक्ष्य फ़ाइल को हटाने को निर्दिष्ट करता है यदि इसे लेखन ऑपरेशन के लिए नहीं खोला जा सकता है। निष्कासन <code>cp</code> कमांड द्वारा की गई किसी भी प्रतिलिपि से पहले होता है।
*<code>-f</code> (बल) - लक्ष्य फ़ाइल को हटाने को निर्दिष्ट करता है यदि इसे लेखन ऑपरेशन के लिए नहीं खोला जा सकता है। इस प्रकार से निष्कासन <code>cp</code> कमांड द्वारा की गई किसी भी प्रतिलिपि से पहले होता है।
* <code>-H</code> (भिन्नता) - <code>cp</code> कमांड को प्रतीकात्मक लिंक (सिम्लिंक) का पालन करता है ताकि गंतव्य के निकट लक्ष्य के लिए सिम्लिंक के अतिरिक्त लक्ष्य फ़ाइल हो।
* <code>-H</code> (भिन्नता) - <code>cp</code> कमांड को प्रतीकात्मक लिंक (सिम्लिंक) का पालन करता है ताकि गंतव्य के निकट लक्ष्य के लिए सिम्लिंक के अतिरिक्त लक्ष्य फ़ाइल हो।
*<code>-i</code> (इंटरैक्टिव) - अधिलेखित होने वाली फ़ाइल के नाम के साथ संकेत देता है। यह तब होता है जब लक्ष्यनिर्देशिका या लक्ष्यफाइल पैरामीटर में फ़ाइल होती है जिसका नाम SourceFile या SourceDirectory पैरामीटर में निर्दिष्ट फ़ाइल के समान होता है। यदि कोई प्रवेश करता है <code>y</code> (या लोकेल के समकक्ष <code>y</code>), द सीपी आदेश जारी है। कोई अन्य उत्तर रोकता है सीपी फ़ाइल को अधिलेखित करने से आदेश।
*<code>-i</code> (अन्योन्य क्रिया) - अधिलेखित की जाने वाली फ़ाइल के नाम के साथ संकेत देता है। ऐसा तब होता है जब लक्ष्यनिर्देशिका या लक्ष्यफ़ाइल पैरामीटर में सोर्सफाइल या सोर्सडायरेक्टरी पैरामीटर में निर्दिष्ट फ़ाइल के समान नाम वाली फ़ाइल होती है। इस प्रकार से यदि कोई <code>y</code> (या स्थानीय भाषा <code>y</code>के समतुल्य) में प्रवेश करता है, तो <code>cp</code> कमांड जारी रहता है। इस प्रकार से कोई अन्य उत्तर <code>cp</code> कमांड को फ़ाइल को ओवरराइट करने से रोकता है।
*<code>-n</code> (नो [[ clobbering |clobbering]] ) - गलती से किसी भी फाइल को ओवरराइट करने से रोकता है
*<code>-n</code> (नो [[ clobbering |क्लोब्बेरिंग]]) - किसी भी फाइल को संयोगवश ओवरराइट करने से रोकता है
*<code>-p</code> (संरक्षित) - <code>-p</code>फ्लैग संबंधित लक्ष्य में प्रत्येक स्रोत पथ की निम्नलिखित विशेषताओं को संरक्षित करता है: अंतिम डेटा संशोधन का समय और अंतिम पहुंच का समय, स्वामित्व (केवल अगर इसे ऐसा करने की अनुमति है), और फ़ाइल अनुमति-बिट्स।
*<code>-p</code> (संरक्षित) - <code>-p</code>फ्लैग संबंधित लक्ष्य में प्रत्येक स्रोत पथ की निम्नलिखित विशेषताओं को संरक्षित करता है: अंतिम डेटा संशोधन का समय और अंतिम पहुंच का समय, स्वामित्व (मात्र यदि उसके निकट ऐसा करने की अनुमति है), और फ़ाइल अनुमति-बिट।
*<code>-R</code> या <code>-r</code> (पुनरावर्ती) - निर्देशिकाओं को पुनरावर्ती रूप से कॉपी करें
*<code>-R</code> या <code>-r</code> (पुनरावर्ती) - निर्देशिकाओं को पुनरावर्ती रूप से कॉपी करें


== उदाहरण ==
== उदाहरण ==
वर्तमान निर्देशिका में फ़ाइल की प्रतिलिपि बनाना:
अतः वर्तमान निर्देशिका में फ़ाइल की प्रतिलिपि बनाना:
  cp prog.c prog.bak
  cp prog.c prog.bak
यह prog.c को prog.bak में कॉपी करता है। यदि prog.bak फ़ाइल पूर्व से स्थित नहीं है, तो सीपी कमांड इसे बनाता है। यदि यह स्थित है, तो सीपी कमांड इसकी विवरण को prog.c फ़ाइल की विवरण से बदल देता है।
इस प्रकार से यह prog.c को prog.bak में कॉपी करता है। यदि prog.bak फ़ाइल पूर्व से स्थित नहीं है, तो सीपी कमांड इसे बनाता है। यदि यह स्थित है, तो सीपी कमांड इसकी विवरण को prog.c फ़ाइल की विवरण से परिवर्तित कर देता है।


वर्तमान निर्देशिका में दो फ़ाइलों को दूसरी निर्देशिका में कॉपी करें:
अतः वर्तमान निर्देशिका में दो फ़ाइलों को दूसरी निर्देशिका में कॉपी करें:
  सीपी जोन्स स्मिथ / होम / निक / क्लाइंट्स
  cp jones smith /home/nick/clients
यह फ़ाइलों को जोन्स को /home/nick/clients/jones और smith को /home/nick/clients/smith में कॉपी करता है।
इस प्रकार से यह फाइल जोन्स को / होम / निक / क्लाइंट्स / जोन्स और स्मिथ को / होम / निक / क्लाइंट्स / स्मिथ में कॉपी करता है।


फ़ाइल को नवीन फ़ाइल में कॉपी करें और स्रोत फ़ाइल से संबद्ध संशोधन दिनांक, समय और अभिगम नियंत्रण सूची को संरक्षित करें:
अतः फ़ाइल को नवीन फ़ाइल में कॉपी करें और स्रोत फ़ाइल से संबद्ध संशोधन दिनांक, समय और अभिगम नियंत्रण सूची को संरक्षित करें:
  सीपी-पी स्मिथ स्मिथ जूनियर
  cp -p smith smith.jr
यह स्मिथ फ़ाइल को smith.jr फ़ाइल में कॉपी करता है। वर्तमान दिनांक और समय स्टाम्प के साथ फ़ाइल बनाने के बजाय, सिस्टम smith.jr फ़ाइल को स्मिथ फ़ाइल के समान दिनांक और समय देता है। smith.jr फ़ाइल भी स्मिथ फ़ाइल की पहुँच नियंत्रण सुरक्षा को इनहेरिट करती है।
इस प्रकार से यह स्मिथ फ़ाइल को smith.jr फ़ाइल में कॉपी करता है। वर्तमान दिनांक और समय स्टाम्प के साथ फ़ाइल बनाने के अतिरिक्त, सिस्टम smith.jr फ़ाइल को स्मिथ फ़ाइल के समान दिनांक और समय देता है। अतः smith.jr फ़ाइल भी स्मिथ फ़ाइल की पहुँच नियंत्रण सुरक्षा को प्राप्त करती है।


किसी अन्य निर्देशिका में उसकी सभी फ़ाइलों और उपनिर्देशिकाओं सहित निर्देशिका की प्रतिलिपि बनाएँ:
किसी अन्य निर्देशिका में उसकी सभी फ़ाइलों और उपनिर्देशिकाओं सहित निर्देशिका की प्रतिलिपि बनाएँ:
  cp -R /home/nick/client /home/nick/customers
  cp -R /home/nick/client /home/nick/customers
यह डायरेक्टरी क्लाइंट्स को कॉपी करता है, जिसमें इसकी सभी फाइलें, सबडायरेक्टरीज और उन सबडायरेक्टरीज की फाइलें डायरेक्टरी कस्टमर्स/क्लाइंट्स में होती हैं। कुछ यूनिक्स सिस्टम इस मोड में अलग तरह से व्यवहार करते हैं, जो निर्देशिका पथों की समाप्ति पर निर्भर करता है। का उपयोग करते हुए सीपी <code>-R /home/nick/clients/ /home/nick/customers</code> जीएनयू सिस्टम पर यह उम्मीद के मुताबिक व्यवहार करता है; हालाँकि, BSD सिस्टम पर, यह क्लाइंट डायरेक्टरी की सभी विवरण को डायरेक्टरी क्लाइंट के अतिरिक्त कॉपी करता है। यदि स्रोत निर्देशिका का पथ . या .. (पिछला स्लैश के साथ या बिना)
इस प्रकार से यह डायरेक्टरी क्लाइंट्स को कॉपी करता है, जिसमें इसकी सभी फाइलें, उपडायरेक्टरीज और उन उपडायरेक्टरीज की फाइलें डायरेक्टरी कस्टमर्स/क्लाइंट्स में होती हैं। कुछ यूनिक्स सिस्टम इस मोड में अलग रूप से व्यवहार करते हैं, जो निर्देशिका पथों की समाप्ति पर निर्भर करता है। अतः जीएनयू सिस्टम पर <code>cp-R /home/nick/clients/ /home/nick/customers</code> का उपयोग करने पर यह अपेक्षा के अनुरूप व्यवहार करता है; यद्यपि, बीएसडी सिस्टम पर, यह डायरेक्ट्री क्लाइंट के अतिरिक्त "क्लाइंट" डायरेक्टरी के सभी विवरणों को कॉपी करता है। जीएनयू और बीएसडी दोनों प्रणालियों में ऐसा ही होता है यदि स्रोत निर्देशिका का पथ या .. (ट्रेलिंग स्लैश के साथ या उसके बिना) समाप्त होता है।


फ़ाइल को किसी वर्तमान फ़ाइल में कॉपी करने के लिए वर्तमान फ़ाइल को अपडेट मोड में खोलकर निष्पादित किया जाता है, जिससे फ़ाइल इनोड को संरक्षित किया जाता है, जिसके लिए राइट एक्सेस की आवश्यकता होती है और लक्ष्य फ़ाइल में परिणाम मूल रूप से अनुमतियों को बनाए रखते हैं।
इस प्रकार से फ़ाइल को किसी वर्तमान फ़ाइल में कॉपी करने के लिए वर्तमान फ़ाइल को अपडेट मोड में खोलकर निष्पादित किया जाता है, जिससे फ़ाइल इनोड को संरक्षित किया जाता है, जिसके लिए लेखन अभिगम की आवश्यकता होती है और लक्ष्य फ़ाइल में परिणाम मूल रूप से अनुमतियों को बनाए रखते हैं।


== संबंधित यूनिक्स आदेश ==
== संबंधित यूनिक्स कमांड ==
* [[cpio]] - संपूर्ण निर्देशिका संरचना को स्थान से दूसरे स्थान पर कॉपी करें
* [[cpio]] - संपूर्ण निर्देशिका संरचना को स्थान से दूसरे स्थान पर कॉपी करें
* [[टार (कंप्यूटिंग)]] - फाइलों का संग्रह बनाएं
* [[टार (कंप्यूटिंग)|tar (कंप्यूटिंग)]] - फाइलों का संग्रह बनाएं
* [[लिंक (यूनिक्स)]] - फ़ाइल या निर्देशिका के लिए लिंक बनाने के लिए सिस्टम कॉल
* [[लिंक (यूनिक्स)|link (यूनिक्स)]] - फ़ाइल या निर्देशिका के लिए लिंक बनाने के लिए सिस्टम कॉल
* ln (यूनिक्स) - फ़ाइल या निर्देशिका के लिए लिंक बनाएँ
* ln (यूनिक्स) - फ़ाइल या निर्देशिका के लिए लिंक बनाएँ
* [[एमवी (यूनिक्स)]] - फ़ाइल या निर्देशिका को स्थानांतरित करें
* [[एमवी (यूनिक्स)|mv (यूनिक्स)]] - फ़ाइल या निर्देशिका को स्थानांतरित करें
* [[आरएम (यूनिक्स)]] - फ़ाइल या निर्देशिका को हटा दें
* [[आरएम (यूनिक्स)|rm (यूनिक्स)]] - फ़ाइल या निर्देशिका को हटा दें
* [[अनलिंक (यूनिक्स)]] - फ़ाइल या निर्देशिका को हटाने के लिए सिस्टम कॉल
* [[अनलिंक (यूनिक्स)|unlink (यूनिक्स)]] - फ़ाइल या निर्देशिका को हटाने के लिए सिस्टम कॉल
* [[chmod]] - फ़ाइल या निर्देशिका पर मोड (उर्फ अनुमतियाँ) बदलें
* [[chmod]] - फ़ाइल या निर्देशिका पर मोड (अर्थात अनुमतियाँ) परिवर्तित करें
* [[चाउन]] - फ़ाइल या निर्देशिका पर स्वामित्व बदलें
* [[चाउन|chown]] - फ़ाइल या निर्देशिका पर स्वामित्व परिवर्तित करें
* [[chgrp]] - फ़ाइल या निर्देशिका पर समूह बदलें
* [[chgrp]] - फ़ाइल या निर्देशिका पर समूह परिवर्तित करें
* [[ यूयूकेपी | यूयूकेपी]] - यूनिक्स टू यूनिक्स कॉपी
* [[ यूयूकेपी |uucp]] - यूनिक्स टू यूनिक्स कॉपी
* [[ सुरक्षित प्रति | सुरक्षित प्रति]] - SSH पर सिक्योर कॉपी
* [[ सुरक्षित प्रति |scp]] - एसएसएच पर सिक्योर कॉपी
* प्रगति,<ref>{{Cite web|url=https://linux.die.net/man/1/progress|title=Progress(1) - Linux man page}}</ref><ref>{{Cite web|url=https://github.com/Xfennec/progress|title = प्रगति - कोरुटिल्स प्रगति दर्शक|website = [[GitHub]]|date = 14 November 2021}}</ref> Linux टूल cp, mv, dd की प्रगति दिखाने के लिए।
* progress,<ref>{{Cite web|url=https://linux.die.net/man/1/progress|title=Progress(1) - Linux man page}}</ref><ref>{{Cite web|url=https://github.com/Xfennec/progress|title = प्रगति - कोरुटिल्स प्रगति दर्शक|website = [[GitHub]]|date = 14 November 2021}}</ref> लिनक्स टूल cp, mv, dd की प्रगति दिखाने के लिए है।


== यह भी देखें ==
== यह भी देखें ==
Line 91: Line 91:
* [[जीएनयू कोर यूटिलिटीज]]
* [[जीएनयू कोर यूटिलिटीज]]
* [[यूनिक्स कमांड की सूची]]
* [[यूनिक्स कमांड की सूची]]
* [[rsync]]
* [[rsync|आरसिंक]]


==संदर्भ==
==संदर्भ==

Revision as of 20:32, 4 July 2023

cp
Original author(s)AT&T Bell Laboratories
Developer(s)Various open-source and commercial developers
Initial releaseNovember 3, 1971; 53 years ago (1971-11-03)
Written inPlan 9: C
Operating systemUnix, Unix-like, Plan 9, Inferno, KolibriOS
PlatformCross-platform
TypeCommand
Licensecoreutils: GPLv3
Plan 9: MIT License

कम्प्यूटिंग में,cp विभिन्न यूनिक्स और यूनिक्स जैसे ऑपरेटिंग सिस्टम में कम्प्यूटर फाइल और निर्देशिका (कंप्यूटिंग) की प्रतिलिपि बनाने के लिए कमांड (कंप्यूटिंग) है। इस प्रकार से कमांड में ऑपरेशन की तीन प्रमुख विधियाँ हैं, जो फाइल को दूसरी फाइल में कॉपी करने के लिए, या से अधिक फाइलों को डायरेक्टरी में कॉपी करने के लिए, या पूर्ण डायरेक्टरी को दूसरी डायरेक्टरी में कॉपी करने के लिए प्रस्तुत किए गए तर्कों के प्रकार द्वारा व्यक्त किए जाते हैं।[1]

इस प्रकार से यूटिलिटी निष्पादित ऑपरेशन का विवरण देने के लिए विभिन्न कमांड लाइन विकल्प फ़्लैग को भी स्वीकार करती है। पोसिक्स सीपी और जीएनयू सीपी दो प्रमुख विनिर्देश हैं। पोसिक्स संस्करण की तुलना में जीएनयू सीपी के निकट कई अतिरिक्त विकल्प हैं।[2]

अतः कमांड एकीकृत एक्सटेंसिबल फर्मवेयर इंटरफ़ेस में भी उपलब्ध है।[3]

इतिहास

इस प्रकार से सीपी संस्करण 1 यूनिक्स का भाग था।[4] अतः जीएनयू कोरुटिल्स में बंडल किए गए सीपी का संस्करण टोरबॉर्न ग्रानलुंड, डेविड मैकेंज़ी और जिम मेयरिंग द्वारा लिखा गया था।[5]

ऑपरेटिंग मोड

cp के संचालन की तीन प्रमुख विधियाँ हैं। आह्वान पर प्रोग्राम में प्रस्तुत किए गए तर्कों के प्रकार और गणना से इन विधियों का अनुमान लगाया जाता है।

  • जब प्रोग्राम में फाइलों के पथ नामों के दो तर्क होते हैं, तो प्रोग्राम पहली फाइल के विवरण को दूसरी फाइल में कॉपी करता है, यदि आवश्यक हो तो दूसरी फाइल बनाता है।
  • जब प्रोग्राम में फ़ाइलों के पथ नामों के या अधिक तर्क होते हैं और उन तर्कों का अनुसरण करते हैं जो किसी निर्देशिका के पथ के लिए होते हैं, तो प्रोग्राम प्रत्येक स्रोत फ़ाइल को गंतव्य निर्देशिका में कॉपी करता है, ऐसी कोई भी फ़ाइल बनाता है जो पूर्व से स्थित नहीं है।
  • जब प्रोग्राम के तर्क दो निर्देशिकाओं के लिए पथ नाम होते हैं, तो सीपी स्रोत निर्देशिका में सभी फ़ाइलों को गंतव्य निर्देशिका में कॉपी करता है, आवश्यक फ़ाइलों या निर्देशिकाओं का निर्माण करता है। इस प्रकार से ऑपरेशन के इस मोड में निर्देशिकाओं की पुनरावर्ती प्रतिलिपि को इंगित करने के लिए अतिरिक्त विकल्प फ्लैग, सामान्यतः आर की आवश्यकता होती है। यदि गंतव्य निर्देशिका पूर्व से स्थित है, तो स्रोत को गंतव्य में कॉपी किया जाता है, जबकि गंतव्य स्थित नहीं होने पर नवीन निर्देशिका बनाई जाती है।

उपयोग

इस प्रकार से एक फाइल को दूसरी फाइल में कॉपी करना:

cp [-fHip] [--] sourcefile targetfile

अतः किसी निर्देशिका में फ़ाइल (फ़ाइलों) की प्रतिलिपि बनाना

cp [-fHip] [--] sourcefile... targetdirectory

एक निर्देशिका को निर्देशिका में कॉपी करना (-r या -R का उपयोग किया जाना चाहिए)

cp -r|-R [-fHip] [--] sourcedirectory... targetdirectory

विकल्प फ्लैग

  • -f (बल) - लक्ष्य फ़ाइल को हटाने को निर्दिष्ट करता है यदि इसे लेखन ऑपरेशन के लिए नहीं खोला जा सकता है। इस प्रकार से निष्कासन cp कमांड द्वारा की गई किसी भी प्रतिलिपि से पहले होता है।
  • -H (भिन्नता) - cp कमांड को प्रतीकात्मक लिंक (सिम्लिंक) का पालन करता है ताकि गंतव्य के निकट लक्ष्य के लिए सिम्लिंक के अतिरिक्त लक्ष्य फ़ाइल हो।
  • -i (अन्योन्य क्रिया) - अधिलेखित की जाने वाली फ़ाइल के नाम के साथ संकेत देता है। ऐसा तब होता है जब लक्ष्यनिर्देशिका या लक्ष्यफ़ाइल पैरामीटर में सोर्सफाइल या सोर्सडायरेक्टरी पैरामीटर में निर्दिष्ट फ़ाइल के समान नाम वाली फ़ाइल होती है। इस प्रकार से यदि कोई y (या स्थानीय भाषा yके समतुल्य) में प्रवेश करता है, तो cp कमांड जारी रहता है। इस प्रकार से कोई अन्य उत्तर cp कमांड को फ़ाइल को ओवरराइट करने से रोकता है।
  • -n (नो क्लोब्बेरिंग) - किसी भी फाइल को संयोगवश ओवरराइट करने से रोकता है
  • -p (संरक्षित) - -pफ्लैग संबंधित लक्ष्य में प्रत्येक स्रोत पथ की निम्नलिखित विशेषताओं को संरक्षित करता है: अंतिम डेटा संशोधन का समय और अंतिम पहुंच का समय, स्वामित्व (मात्र यदि उसके निकट ऐसा करने की अनुमति है), और फ़ाइल अनुमति-बिट।
  • -R या -r (पुनरावर्ती) - निर्देशिकाओं को पुनरावर्ती रूप से कॉपी करें

उदाहरण

अतः वर्तमान निर्देशिका में फ़ाइल की प्रतिलिपि बनाना:

cp prog.c prog.bak

इस प्रकार से यह prog.c को prog.bak में कॉपी करता है। यदि prog.bak फ़ाइल पूर्व से स्थित नहीं है, तो सीपी कमांड इसे बनाता है। यदि यह स्थित है, तो सीपी कमांड इसकी विवरण को prog.c फ़ाइल की विवरण से परिवर्तित कर देता है।

अतः वर्तमान निर्देशिका में दो फ़ाइलों को दूसरी निर्देशिका में कॉपी करें:

cp jones smith /home/nick/clients

इस प्रकार से यह फाइल जोन्स को / होम / निक / क्लाइंट्स / जोन्स और स्मिथ को / होम / निक / क्लाइंट्स / स्मिथ में कॉपी करता है।

अतः फ़ाइल को नवीन फ़ाइल में कॉपी करें और स्रोत फ़ाइल से संबद्ध संशोधन दिनांक, समय और अभिगम नियंत्रण सूची को संरक्षित करें:

cp -p smith smith.jr

इस प्रकार से यह स्मिथ फ़ाइल को smith.jr फ़ाइल में कॉपी करता है। वर्तमान दिनांक और समय स्टाम्प के साथ फ़ाइल बनाने के अतिरिक्त, सिस्टम smith.jr फ़ाइल को स्मिथ फ़ाइल के समान दिनांक और समय देता है। अतः smith.jr फ़ाइल भी स्मिथ फ़ाइल की पहुँच नियंत्रण सुरक्षा को प्राप्त करती है।

किसी अन्य निर्देशिका में उसकी सभी फ़ाइलों और उपनिर्देशिकाओं सहित निर्देशिका की प्रतिलिपि बनाएँ:

cp -R /home/nick/client /home/nick/customers

इस प्रकार से यह डायरेक्टरी क्लाइंट्स को कॉपी करता है, जिसमें इसकी सभी फाइलें, उपडायरेक्टरीज और उन उपडायरेक्टरीज की फाइलें डायरेक्टरी कस्टमर्स/क्लाइंट्स में होती हैं। कुछ यूनिक्स सिस्टम इस मोड में अलग रूप से व्यवहार करते हैं, जो निर्देशिका पथों की समाप्ति पर निर्भर करता है। अतः जीएनयू सिस्टम पर cp-R /home/nick/clients/ /home/nick/customers का उपयोग करने पर यह अपेक्षा के अनुरूप व्यवहार करता है; यद्यपि, बीएसडी सिस्टम पर, यह डायरेक्ट्री क्लाइंट के अतिरिक्त "क्लाइंट" डायरेक्टरी के सभी विवरणों को कॉपी करता है। जीएनयू और बीएसडी दोनों प्रणालियों में ऐसा ही होता है यदि स्रोत निर्देशिका का पथ या .. (ट्रेलिंग स्लैश के साथ या उसके बिना) समाप्त होता है।

इस प्रकार से फ़ाइल को किसी वर्तमान फ़ाइल में कॉपी करने के लिए वर्तमान फ़ाइल को अपडेट मोड में खोलकर निष्पादित किया जाता है, जिससे फ़ाइल इनोड को संरक्षित किया जाता है, जिसके लिए लेखन अभिगम की आवश्यकता होती है और लक्ष्य फ़ाइल में परिणाम मूल रूप से अनुमतियों को बनाए रखते हैं।

संबंधित यूनिक्स कमांड

  • cpio - संपूर्ण निर्देशिका संरचना को स्थान से दूसरे स्थान पर कॉपी करें
  • tar (कंप्यूटिंग) - फाइलों का संग्रह बनाएं
  • link (यूनिक्स) - फ़ाइल या निर्देशिका के लिए लिंक बनाने के लिए सिस्टम कॉल
  • ln (यूनिक्स) - फ़ाइल या निर्देशिका के लिए लिंक बनाएँ
  • mv (यूनिक्स) - फ़ाइल या निर्देशिका को स्थानांतरित करें
  • rm (यूनिक्स) - फ़ाइल या निर्देशिका को हटा दें
  • unlink (यूनिक्स) - फ़ाइल या निर्देशिका को हटाने के लिए सिस्टम कॉल
  • chmod - फ़ाइल या निर्देशिका पर मोड (अर्थात अनुमतियाँ) परिवर्तित करें
  • chown - फ़ाइल या निर्देशिका पर स्वामित्व परिवर्तित करें
  • chgrp - फ़ाइल या निर्देशिका पर समूह परिवर्तित करें
  • uucp - यूनिक्स टू यूनिक्स कॉपी
  • scp - एसएसएच पर सिक्योर कॉपी
  • progress,[6][7] लिनक्स टूल cp, mv, dd की प्रगति दिखाने के लिए है।

यह भी देखें

संदर्भ

  1. "Cp(1) - Linux manual page".
  2. "GNU Coreutils: cp invocation". www.gnu.org.
  3. "EFI Shells and Scripting". Intel. Retrieved 2013-09-25.
  4. McIlroy, M. D. (1987). A Research Unix reader: annotated excerpts from the Programmer's Manual, 1971–1986 (PDF) (Technical report). CSTR. Bell Labs. 139.
  5. "Cp(1): Copy files/Directories - Linux man page".
  6. "Progress(1) - Linux man page".
  7. "प्रगति - कोरुटिल्स प्रगति दर्शक". GitHub. 14 November 2021.

बाहरी संबंध