जब मैं उपयोग करता हूं
cp -R inputFolder outputFolder
परिणाम संदर्भ-निर्भर है :
- यदि
outputFolderमौजूद नहीं है, तो यह बनाया जाएगा, और क्लोन फ़ोल्डर पथ होगाoutputFolder। - यदि
outputFolderमौजूद है, तो बनाया गया क्लोन होगाoutputFolder/inputFolder
यह भयानक है , क्योंकि मैं कुछ इंस्टॉलेशन स्क्रिप्ट बनाना चाहता हूं, और यदि उपयोगकर्ता इसे दो बार गलती से चलाता है, तो उसने outputFolderपहली बार बनाया होगा , फिर दूसरे रन पर सभी सामान एक बार फिर से बनाए जाएंगे outputFolder/inputFolder।
- मैं हमेशा पहला व्यवहार चाहता हूं: मूल (एक भाई के रूप में) के बगल में एक क्लोन बनाएं।
- मैं
cpपोर्टेबल होना चाहता हूं (जैसे MINGW के पासrsyncशिप नहीं है ) - मैंने जाँच की
cp -R --parentsलेकिन यह डाइरेक्टरी ट्री के सारे रास्ते को फिर से बनाता है (इसलिए क्लोन नहीं होगाoutputFolderलेकिनsome/path/outputFolder) --remove-destinationया--updateमामले 2 में कुछ भी नहीं बदला है, फिर भी चीजें कॉपी की जाती हैंoutputFolder/inputFolder
क्या इसके अस्तित्व के लिए पहली जाँच के बिना ऐसा करने का एक तरीका है outputFolder(यदि फ़ोल्डर तब मौजूद नहीं है ...) या उपयोग कर रहा है rm -rf outputFolder?
क्या करने के लिए सहमत, पोर्टेबल UNIX तरीका है?
rsync?
cp, तो tarपेड़ों को कॉपी करने के लिए दो आदेशों के बीच पाइपिंग एक अच्छा विश्वसनीय तरीका है।
rsyncशिप नहीं है ।
tar -C input -cf - . | tar -C output -xf -काम करता है। -Cवर्किंग डाइरेक्टरी को बदल देता है, लेकिन यह एक मानक विकल्प नहीं है, इसलिए यदि इसका समर्थन नहीं किया गया है तो आपको शुरू करने के लिए सही कार्य निर्देशिकाओं में दो टार चलाने की आवश्यकता है, जैसे ( cd input && tar -cf - . ) | ( cd output && tar -xf - )कि यदि आप विंडोज के साथ काम कर रहे हैं तो मैं सिर्फ रोइमा के उत्तर का उपयोग करूंगा।
mvसे कैसे रोकें ?