लिनक्स में निर्देशिका संरक्षण पथ फ़ाइल की प्रतिलिपि कैसे करें?


88

मेरे पास ग्रहण परियोजनाएं हैं और उनमें ".project" फ़ाइल है, निर्देशिका संरचना ' myProject/.project' जैसी दिखती है । मैं इन '.project' फाइलों को दूसरी डायरेक्टरी में कॉपी करना चाहता हूं, लेकिन मैं चाहता हूं कि इनक्लोजिंग डायरेक्टरी नाम को संरक्षित रखा जाए।

मान लीजिए कि मेरे पास ' a/myProject/.project' है, मैं ' myProject/.project' से ' b' की नकल करना चाहता हूं , इसलिए यह ' b/myProject/.project' है, लेकिन ' b/myProject' मौजूद नहीं है। जब में कोशिश करता हूँ:

 cp -r ./myProject/.project ../b

यह केवल 'myproject' निर्देशिका के बिना '.project' फ़ाइल को कॉपी करता है। कृपया सलाह दें।

जवाबों:


153

आपको जो स्विच चाहिए --parents, वह है :

jim@prometheus:~$ cp --parents test/1/.moo test2/
jim@prometheus:~$ ls -la test2/
total 42
drwxr-xr-x   3 jim jim    72 2010-09-14 09:32 .
drwxr-xr-x 356 jim jim 43136 2010-09-14 09:32 ..
drwxr-xr-x   3 jim jim    72 2010-09-14 09:32 test
jim@prometheus:~$ ls -la test2/test/1/.moo
-rw-r--r-- 1 jim jim 0 2010-09-14 09:32 test2/test/1/.moo


7

tarकुछ इस तरह का उपयोग करें :

mkdir b; tar cpf - myProject/ | tar xpf - -C b/

(परीक्षण नहीं किया गया है। इसे पहले सूखा रन दें या मॉकअप परिदृश्य में प्रयास करें।)


आश्चर्यजनक रूप से अच्छी तरह से काम करता है! मैक पर: mkdir b; tar -c -f new.tar $ (cat myP); tar -x -f new.tar -C b /; #myP पाठ फ़ाइल की प्रतिलिपि के साथ पथ-टू-फाइल्स की सूची है
अलेक्सई

4

पहले mkdir -pपुनरावर्ती मूल पथ निर्माण के साथ गंतव्य फ़ोल्डर बनाने के लिए उपयोग करें। तब सामग्री को गंतव्य फ़ोल्डर में कॉपी करें:

mkdir -p b/myProject/.project
cp -r a/myProject/.project/file b/myProject/.project

3
cp -P a/myProject/.project b

man cpअधिक जानकारी के लिए देखें ।


यह मदद करने के लिए प्रतीत नहीं होता है। यह केवल '.project' को ही b में कॉपी करता है, लेकिन यह 'myProject' को कॉपी नहीं करता है।
ढबला

3

मैं खोजने के साथ संयोजन में cpio का उपयोग करता हूं। यहाँ स्पष्टीकरण

आपके उपयोग के मामले के लिए उदाहरण:

find /a/myProject/.project/ -type f | cpio -p -dumv /b/.

यह कमांड /a/myProject/.project/पथ को संरक्षित करते हुए सभी फ़ाइलों और प्रतियों को ढूँढता है , किसी भी फाइल को समाहित करता है।


1
.project एक फ़ाइल है, dir नहीं!
ddbug

1

इसके अतिरिक्त सबसे आंतरिक निर्देशिका की प्रतिलिपि को छोड़ने से बचने के लिए विकल्प --parentsजोड़ना भी आवश्यक है-r

$ cp --parents test/1/.moo test2/
cp: omitting directory ‘test/1/.moo’

तो मेरे लिए काम करने वाली आज्ञा है

$ cp --parents -r test/1/.moo test2/

0

कृपया ध्यान रखें कि इसमें एक बग दिखाई देता है cp --parents। जब मैंने --parentsसाथ में प्रयोग किया था --preserve=all, कुछ गंतव्य निर्देशिकाओं की तारीख और समय की विशेषताओं को संरक्षित नहीं किया गया था।

निम्न लिंक यह पुष्टि करने के लिए लगता है कि यह एक बग है: बग # 8767: cp: --preserve = सभी माता-पिता के लिए काम नहीं करता है जब - अपरेंट का उपयोग किया जाता है

तो ऐसा लगता है जैसे आप --parentsइस तरह के रूप में --preserve=allया साथ का उपयोग करते समय संरक्षित किया जा रहा विशेषताओं पर भरोसा नहीं कर सकते -p


-3

मैंने कमांड के --parentsसाथ प्रयोग किया cpऔर मेरे साथ पूर्णता का काम किया। अधिक जानकारी के लिए हमेशा मैनुअल का उपयोग करें। धन्यवाद।


3
अन्य 5 उत्तरों में कुछ भी नहीं जोड़ा जाता है।
हिरण हंटर

उत्तरदाता कृपया ध्यान दें कि .project में .project एक फाइल है, डायरेक्टरी नहीं है। इसलिए उदा। Mkdir -pa / .project का कोई मतलब नहीं है।
ddbug
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.