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


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

मान लें कि मेरे पास 'a/myProject/.project', मैं कॉपी करना चाहता हूं'myProject/.project' सेवा मेरे 'b', तो यह'b/myProject/.project', परंतु 'b/myProject'अस्तित्व में नहीं है। जब मैं एक कोशिश करता हूं:

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

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


71
2017-09-14 07:52


मूल




जवाब:


आपको जिस स्विच की आवश्यकता है वह है --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

128
2017-09-14 08:34





आप भी उपयोग कर सकते हैं rsync -R, जो ओएसएक्स पर काम करता है cp --parents उपलब्ध नहीं है

https://stackoverflow.com/a/13855290/598940


13
2017-12-24 05:22





उपयोग tar कुछ के साथ:

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

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


6
2017-09-14 08:39



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


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

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

4
2018-06-02 22:59





cp -P a/myProject/.project b

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


3
2017-09-14 08:06



यह मदद नहीं प्रतीत होता है। यह केवल 'प्रोजेक्ट' को प्रतिलिपि बनाता है, लेकिन यह 'myProject' की प्रतिलिपि नहीं बनाता है। - dhblah


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

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

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

यह आदेश सभी फाइलें पाता है /a/myProject/.project/ और प्रतियां, पथ को संरक्षित करते समय, किसी भी फाइल के भीतर निहित है।


2
2018-03-17 09:40



प्रोजेक्ट एक फाइल है, नहीं प्रिय! - ddbug


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

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

तो आदेश जो मेरे लिए काम करता है वह है

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

1
2017-07-29 19:59





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

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

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


0
2017-10-15 11:38