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

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

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

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

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

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

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

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

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

विकल्प फ्लैग

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

उदाहरण
अतः वर्तमान निर्देशिका में फ़ाइल की प्रतिलिपि बनाना: 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 इस प्रकार से यह डायरेक्टरी क्लाइंट्स को कॉपी करता है, जिसमें इसकी सभी फाइलें, उपडायरेक्टरीज और उन उपडायरेक्टरीज की फाइलें डायरेक्टरी कस्टमर्स/क्लाइंट्स में होती हैं। कुछ यूनिक्स सिस्टम इस मोड में अलग रूप से व्यवहार करते हैं, जो निर्देशिका पथों की समाप्ति पर निर्भर करता है। अतः जीएनयू सिस्टम पर  का उपयोग करने पर यह अपेक्षा के अनुरूप व्यवहार करता है; यद्यपि, बीएसडी सिस्टम पर, यह डायरेक्ट्री क्लाइंट के अतिरिक्त "क्लाइंट" डायरेक्टरी के सभी विवरणों को कॉपी करता है। जीएनयू और बीएसडी दोनों प्रणालियों में ऐसा ही होता है यदि स्रोत निर्देशिका का पथ या .. (ट्रेलिंग स्लैश के साथ या उसके बिना) समाप्त होता है।

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

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

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

यह भी देखें

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