2015-12-17 12 views
7

मैं स्रोत से स्थान पर फ़ाइलों की प्रतिलिपि बना रहा हूं। स्रोत मेरे स्वामित्व में नहीं है और स्रोत पर फ़ाइलों के लिए अनुमति है ---- rwx ---। गंतव्य निर्देशिका में कॉपी की गई फ़ाइलों की अनुमति जो मेरे स्वामित्व में है ---- आर-एक्स --- है। गंतव्य निर्देशिका की अनुमति drwxrwsrwx है। मेरे पास गंतव्य निर्देशिका की एक ही अनुमति वाली फ़ाइलें कैसे हैं I मैंने "cp --no-preserve = all" की कोशिश की लेकिन यह काम नहीं किया (अभी भी वही अनुमति)।फ़ाइलों की प्रतिलिपि बनाने और उन्हें गंतव्य निर्देशिका की अनुमति देने के लिए

उत्तर

11

इस प्रयास करें:

cp --no-preserve=mode,ownership $backupfile $destination 
1

मुझे उस को अलग तरीके से व्यक्त करने दें "कैसे कॉपी पर गंतव्य निर्देशिका की अनुमतियों को संरक्षित करने के लिए?"
मैं जवाब के लिए क्रेडिट नहीं ले सकता क्योंकि मैंने जंगली पर पाए गए कुछ उत्तरों को जोड़ा है। तो यहाँ यह आता है।

Firstly

अनुमतियां आम तौर पर निर्देशिका है कि फाइलों में, बल्कि नई अनुमतियों उपयोगकर्ता के umask द्वारा नियंत्रित कर रहे कॉपी किया जा रहा है द्वारा प्रचारित नहीं कर रहे हैं। हालांकि जब आप किसी स्थान से दूसरे स्थान पर फ़ाइल कॉपी करते हैं तो यह एक विशेष मामला है जहां उपयोगकर्ता का उमास्क अनिवार्य रूप से अनदेखा किया जाता है और फ़ाइल पर मौजूदा अनुमतियां संरक्षित होती हैं।

कौन बताता है कि क्यों आप सीधेsrc की अनुमतियों डीएसटी निर्देशिका के लिए प्रचार नहीं कर सकते।

हालांकि, इसके लिए दो-चरण का कार्यवाही है।

  1. cp-metadata: गुण और केवल गुण कॉपी तुम वापस स्रोत निर्देशिका के लिए सुरक्षित रखना चाहते हैं।
#!/bin/bash 
# Filename: cp-metadata 

myecho=echo 
src_path="$1" 
dst_path="$2" 

find "$src_path" | 
    while read src_file; do 
    dst_file="$dst_path${src_file#$src_path}" 
    $myecho chmod --reference="$src_file" "$dst_file" 
    $myecho chown --reference="$src_file" "$dst_file" 
    $myecho touch --reference="$src_file" "$dst_file" 
    done 

आप touch आदेश बाहर छोड़ सकते हैं अगर आप टाइमस्टैम्प रखने नहीं करना चाहती: यहाँ एक त्वरित स्क्रिप्ट कि यह कर सकते हैं है। myecho=echomyecho= के साथ वास्तव में आदेशों को करने के लिए बदलें।
मन है कि इस स्क्रिप्ट क्रम में sudo मोड में चलने दिया जाना चाहिए चलाने के लिए सक्षम होने के लिए chown और chmod प्रभावी रूप से

  1. cp --preserve: आप सफलतापूर्वक अब पहले आदेश तक चलाने के बाद अब सामग्री के साथ dst निर्देशिका में गुणों की प्रतिलिपि बनाने का समय है।

    --preserve [= ATTR_LIST]
    निर्दिष्ट विशेषताओं की रक्षा:, (डिफ़ॉल्ट मोड, स्वामित्व, timestamps) यदि संभव हो तो अतिरिक्त गुण: संदर्भ, लिंक, xattr, सभी

    \cp -rfp $src_dir $dst_dir करना चाहिए आपको क्या चाहिए।

संबंधित मुद्दे

 संबंधित मुद्दे