सीपी (यूनिक्स)

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

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

इतिहास
सीपी संस्करण 1 यूनिक्स का हिस्सा था। का संस्करण सीपी बंडल्ड इन जीएनयू coreutils को Torbjorn Granlund, David MacKenzie, और Jim Meyering ने लिखा था।

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

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

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

एक निर्देशिका को निर्देशिका में कॉपी करना (-r या -R का उपयोग किया जाना चाहिए) cp -r|-R [-fHip] [--] स्रोतनिर्देशिका... लक्ष्यनिर्देशिका

विकल्प झंडे

 * (बल) - लक्ष्य फ़ाइल को हटाने को निर्दिष्ट करता है यदि इसे लेखन कार्यों के लिए नहीं खोला जा सकता है। निष्कासन द्वारा निष्पादित किसी भी प्रतिलिपि से पहले सीपी आज्ञा।
 * (डीरेफरेंस) - बनाता है सीपी आदेश सांकेतिक लिंक (सिम्लिंक) का अनुसरण करता है ताकि लक्ष्य के लिए सिमलिंक के बजाय गंतव्य में लक्ष्य फ़ाइल हो।
 * (इंटरैक्टिव) - अधिलेखित होने वाली फ़ाइल के नाम के साथ संकेत देता है। यह तब होता है जब लक्ष्यनिर्देशिका या लक्ष्यफाइल पैरामीटर में फ़ाइल होती है जिसका नाम SourceFile या SourceDirectory पैरामीटर में निर्दिष्ट फ़ाइल के समान होता है। यदि कोई प्रवेश करता है  (या लोकेल के समकक्ष  ), द सीपी आदेश जारी है। कोई अन्य उत्तर रोकता है सीपी फ़ाइल को अधिलेखित करने से आदेश।
 * (नो clobbering ) - गलती से किसी भी फाइल को ओवरराइट करने से रोकता है
 * (संरक्षित) - द ध्वज संबंधित लक्ष्य में प्रत्येक स्रोत पथ की निम्नलिखित विशेषताओं को संरक्षित करता है: अंतिम डेटा संशोधन का समय और अंतिम पहुंच का समय, स्वामित्व (केवल अगर इसे ऐसा करने की अनुमति है), और फ़ाइल अनुमति-बिट्स।
 * या  (पुनरावर्ती) - निर्देशिकाओं को पुनरावर्ती रूप से कॉपी करें

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

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

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

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

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

संबंधित यूनिक्स आदेश

 * cpio - संपूर्ण निर्देशिका संरचना को स्थान से दूसरे स्थान पर कॉपी करें
 * टार (कंप्यूटिंग) - फाइलों का संग्रह बनाएं
 * लिंक (यूनिक्स) - फ़ाइल या निर्देशिका के लिए लिंक बनाने के लिए सिस्टम कॉल
 * ln (यूनिक्स) - फ़ाइल या निर्देशिका के लिए लिंक बनाएँ
 * एमवी (यूनिक्स) - फ़ाइल या निर्देशिका को स्थानांतरित करें
 * आरएम (यूनिक्स) - फ़ाइल या निर्देशिका को हटा दें
 * अनलिंक (यूनिक्स) - फ़ाइल या निर्देशिका को हटाने के लिए सिस्टम कॉल
 * chmod - फ़ाइल या निर्देशिका पर मोड (उर्फ अनुमतियाँ) बदलें
 * चाउन - फ़ाइल या निर्देशिका पर स्वामित्व बदलें
 * chgrp - फ़ाइल या निर्देशिका पर समूह बदलें
 * यूयूकेपी - यूनिक्स टू यूनिक्स कॉपी
 * सुरक्षित प्रति - SSH पर सिक्योर कॉपी
 * प्रगति, Linux टूल cp, mv, dd की प्रगति दिखाने के लिए।

यह भी देखें

 * जीएनयू कोर यूटिलिटीज
 * यूनिक्स कमांड की सूची
 * rsync