आप एक निर्देशिका और उसकी सामग्री को नए निर्देशिका नाम के तहत एक नए स्थान पर कैसे कॉपी करते हैं?


52

मैं लिनक्स कमांड लाइन के लिए नया हूं और फिलहाल कॉपी कमांड के साथ पकड़ बनाने की कोशिश कर रहा हूं।

क्या कोई मुझे बता सकता है कि क्या किसी निर्देशिका को अपनी उपनिर्देशिकाओं और संबद्ध फाइलों के साथ एक नई निर्देशिका जैसे एक नया नाम जैसे निर्देशिका में वापस करना संभव है?

किसी भी के लिए धन्यवाद और अग्रिम में सभी की मदद

जवाबों:


69

आप उपयोग करते हैं -r(पुनरावर्ती कॉपी करें) और नया नाम निर्दिष्ट करें

cp -r /path/to/directory /path/to/location/new-name

वास्तविक रास्तों से प्रतिस्थापित करें ... उदाहरण के लिए stuffमेरे घर की निर्देशिका से मौजूदा निर्देशिका में कॉपी backupकरें और नई निर्देशिका को नाम stuff-backupदें (यदि यह निर्देशिका पहले से मौजूद है, तो ध्यान दें कि इसे stuffकॉपी किया जाएगा, इसे अधिलेखित नहीं किया जाएगा)।

cp -r ~/stuff ~/backup/stuff-backup

~आपके घर निर्देशिका /home/$USERया /home/zannaमेरे मामले में एक शॉर्टकट है । यदि वर्तमान वर्किंग डाइरेक्टरी आपकी होम डाइरेक्टरी है, तो आप इसे छोड़ सकते हैं - आप इसे अपने प्रॉम्प्ट से देख सकते हैं

zanna@monster:~$
              ^--the ~ here is where I am - home!

आप प्रत्येक प्रतिलिपि की जा रही रिपोर्ट की रिपोर्ट -vबनाने के लिए क्रिया ध्वज को जोड़ सकते हैं cp...

$ cp -vr stuff backup/stuff-backup
'stuff/thing1' -> 'backup/stuff-backup/thing1'
'stuff/thing2' -> 'backup/stuff-backup/thing2
...

सॉरी ज़न्ना। मैं आपकी सलाह को अमल में लाऊँगा और देखूँगा कि मैं कैसे जाता हूँ। वर्बोज़ ध्वज के विचार की तरह। यह मानते हुए कि यह एक रिपोर्ट के रूप में भी काम करेगा जबकि अन्य कमांड काम कर रहे हैं .. चीयर्स।
एडमंडू

@Edmuntu क्या के लिए खेद है? हां, बहुत सारी कमांड्स का एक ध्वज -vया --verboseध्वज है:
ज़न्ना

प्रारंभिक लघु "धन्यवाद" के लिए खेद है .... त्रुटि में वापसी कुंजी मारा।
एडमंडू

10

आपको जिस कमांड की आवश्यकता है वह बस cp"कॉपी" के लिए है।

आप इनमें से किसी एक वाक्य रचना के साथ उदाहरण के लिए इसका उपयोग कर सकते हैं:

cp SOURCEFILE TARGETFILE
cp SOURCEFILE TARGETDIRECTORY

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

हालाँकि, cpडिफ़ॉल्ट रूप से केवल फाइलों पर काम करता है, निर्देशिकाओं पर नहीं। अपनी संपूर्ण सामग्री को पुनरावर्ती रूप से पूर्ण निर्देशिका की प्रतिलिपि बनाने के लिए, आपको -rविकल्प जोड़ना होगा :

cp -r SOURCEDIRECTORY TARGETDIRECTORY

आप अपने टर्मिनल में cpटाइप करके कमांड के बारे में अधिक जान सकते हैं man cp


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

@Edmuntu भविष्य में, एक पंक्ति नीचे जाने के लिए टिप्पणी करते हुए SHIFT + ENTER का उपयोग करें।
TheOdd

@OwHHines बस उस टिप्पणी को किसी भी लाइनब्रेक और अतिरिक्त व्हाट्सएप से अलग करता है और उन्हें संपादक में रखने से परिणाम में कुछ भी परिवर्तन नहीं होता है।
बाइट कमांडर

@ByteCommander ओह सही, कोई बात नहीं। खैर, अब वह जानता है।
TheOdd

6

आम तौर पर उपयोगी cp कमांड के विकल्प के रूप में आप rsync का उपयोग कर सकते हैं जिसमें मूल निर्देशिका संरचना की अनुमतियों / टाइमस्टैम्प्स को दोहराने का अतिरिक्त लाभ है:

rsync -av dir/ newdir

-एक अभिलेख -v क्रिया

स्रोत के बाद स्लेश पर ध्यान दें।


5

मुझे उस निर्देशिका को बदलना आसान है जिसे मैं पहले से कॉपी कर रहा हूं। इस उदाहरण के लिए एक निर्देशिका में परिवर्तन किया जाता है जिसे सभी ने बुलाया है /boot। कोई भी अपने टर्मिनल में नीचे दिए गए आदेशों को कॉपी और पेस्ट कर सकता है।

cd /boot
sudo mkdir /boot_backup
sudo cp -r . /boot_backup
du /boot_backup -h

752K    /boot_backup/extlinux/themes/debian-wheezy
756K    /boot_backup/extlinux/themes
832K    /boot_backup/extlinux
2.5M    /boot_backup/grub/i386-pc
20K     /boot_backup/grub/locale
2.3M    /boot_backup/grub/fonts
7.2M    /boot_backup/grub
565M    /boot_backup

के लिए cpआदेश वर्तमान निर्देशिका की पहचान की है के रूप में .जो है /bootनिर्देशिका हम करने के लिए बदल दिया है। -rविकल्प यह सब एक उप-निर्देशिका शामिल करने के लिए पुनरावर्ती बनाता है।

यह सुनिश्चित करने के लिए कि इस मामले में duनई निर्देशिका /boot_backupमें सभी उप-निर्देशिकाओं और कुल फ़ाइल आकारों को सूचीबद्ध करने के लिए काम किया जाए ।

इस वाक-थ्रू को समाप्त करने के बाद, sudo rm -r /boot_backupनई निर्देशिका को हटाने के लिए उपयोग करें और यह उप-निर्देशिका है।


1
हालांकि यह समझाता है कि आपके वर्तमान dir से दूसरे dir की सभी फ़ाइलों को कैसे कॉपी किया जाए, यह पूरी तरह से OPs सवाल का जवाब नहीं देता है कि कैसे एक dir (और उसकी सामग्री) को एक अलग नाम dir पर कॉपी किया जाए। छोटी कमांड (जैसे cp -r) हैं जो एक नई निर्देशिका बनाने और उसमें सभी फाइलों को कॉपी करने का ध्यान
रखेंगे

1
यह समझाता है कि कैसे कॉपी और डीआईआर करना है और यह सामग्री है - अंतर यह है कि यह एहतियातन आदत के रूप में पहले स्रोत निर्देशिका में बदल जाता है। cp -rजैसा कि आप अनुशंसा करते हैं पहले से ही तीसरी कमांड लाइन पर है। ट्यूटोरियल इस तथ्य पर आधारित है कि सभी के पास एक /bootनिर्देशिका है और वे अपनी मशीन पर यह कोशिश कर सकते हैं। अगर मैंने इस्तेमाल किया तो cp -r /home/GroundZero/Documents /home/GroundZero/Documents_backupपाठक उनके टर्मिनल में कॉपी और पेस्ट नहीं कर सकते थे - उनमें GroundZeroत्रुटि के लिए अधिक काम और संभावना पैदा करने वाले बदलाव होंगे । मैं तुम्हें एक एम्बेडेड ट्यूटोरियल के साथ इस उत्तर के KISS की सराहना करते हैं उम्मीद है।
विनयुनुच्स

1
@GroundZero cd ~/Documents/SomeObsucreFolder/2016/Nov/स्रोत निर्देशिका के रूप में वर्तमान निर्देशिका सेट करने के लिए कर रहा है यह सुनिश्चित करने के लिए टर्मिनल प्रॉम्प्ट को सही ढंग से वर्तनी है और फिर cp -r .स्रोत के रूप में उपयोग करने से स्रोत निर्देशिका को पुनः प्राप्त करना समाप्त हो जाता है। यह बस एक अच्छी आदत है। साथ ही एक बार स्रोत निर्देशिका के लिए बदल रहा यह करने के लिए आसान है ls FIleName1, ls FileName2आदि के लिए स्रोत निर्देशिका नाम को दोहराने के लिए बिना फ़ाइलों को आप देखते हैं बैकअप करना चाहते हैं esnure के lsआदेश।
विनयुनुच्स

5

निर्देशिका को एक स्थान से दूसरे उप निर्देशिका में कॉपी करने के लिए आप नीचे दिए गए कमांड का उपयोग कर सकते हैं।

cp -Rvp /home/edmuntu/data /home/edmuntu/mydata/

आदेश की व्याख्या:

  • -R = प्रतिलिपि निर्देशिका पुनरावर्ती
  • v = समझाएं कि क्या किया जा रहा है
  • p = यह आपकी अनुमति और टाइमस्टैम्प के साथ स्वामित्व को संरक्षित करने में आपकी सहायता करेगा

धन्यवाद @ राकेश चौहान। "टाइमस्टैम्प के साथ अपनी अनुमति और स्वामित्व को संरक्षित करें" ??? वाह .... मुझे इसे प्राप्त करने की आवश्यकता है !!!! फिर भी लाइन कमांड के एक और पहलू का पता लगाया जाना है। आपके जवाब के लिए धन्यवाद।
एडमंडू

4

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

cp -R source/ destination/

यह source/फ़ोल्डर और उसके सभी उप-निर्देशिकाओं की नकल करेगा destination/

यदि destination/मौजूद नहीं है, तो इसे बनाया जाएगा।

-Rझंडा पुनरावर्ती है, जो बताता है के लिए खड़ा है cpसभी उप-निर्देशिका कॉपी करने के लिए।


थैंक यू @ ओवेन हाइन्स। इस तरह ध्वनि निश्चित रूप से मेरे कार्य के लिए आदेश है। खीर्स
एडमंडतु

1
@Edmuntu खुशी है कि मैं आपकी मदद कर सकता हूं, अगर आपको अपनी समस्या का समाधान मिल गया है, तो क्या आप उस उत्तर को चिह्नित कर सकते हैं जो आपके लिए काम कर रहा है? यह उन लोगों को सतर्क करने में मदद करेगा जो प्रश्न के पृष्ठ को हल करते हुए देखते हैं।
21

1

आप आम तौर पर प्रतिलिपि बनाते समय फ़ाइल अनुमतियों को समान रखना चाहते हैं, डिफ़ॉल्ट निर्माण अनुमतियों का एक नया सेट नहीं। इसका मतलब है कि cp के लिए -a ध्वज का उपयोग करें।

cp -a file filenew
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.