2012-01-27 13 views
5

मेरे पास एक ऐसी साइट है जिसके लिए एक डेटाबेस में एक डेटाबेस डेटाबेस को धक्का देने के लिए व्यवस्थापक में लॉग इन करने की क्षमता की आवश्यकता होती है। पहली चीज यह करता है एसक्यूएल डंप और लक्ष्य डेटाबेस को धक्का। यह ठीक काम करता है, लेकिन जब मैं अपलोड की गई सामग्री वाले फ़ोल्डर को rsync पर जाता हूं, तो मुझे एक त्रुटि मिलती है। यह केवल तब होता है जब स्क्रिप्ट को दृश्य के भीतर से बुलाया जाता है, कमांड लाइन या पायथन शेल से नहीं। यहां फ़ंक्शन है:Django व्यू से स्थानीय फ़ोल्डर में rsync कैसे करें

def copy_media(self, origin_folder, target_folder): 
    command_string = "rsync -a %s %s" % (origin_folder, target_folder) 
    return_code = subprocess.call(command_string, shell=True) 
    return return_code 

रिटर्न कोड त्रुटियों पर "12" है। मेरा सबसे अच्छा अनुमान यह है कि स्क्रिप्ट खत्म होने से पहले काफी देरी हो रही है, इसलिए यह नहीं पता कि इसे समाप्त होने के लिए उचित तरीके से इंतजार कैसे किया जाए। मेरा अनुमान था कि किसी भी तरह से पथ दृश्य के भीतर से खराब हो जाते हैं।

+0

क्या यह संभावित रूप से फाइलों पर उपयोगकर्ता लेख सेट के कारण हो सकता है? आप -o विकल्प का प्रयास कर सकते हैं। क्या आपने यह देखने के लिए rsync पर -v विकल्प का प्रयास किया था कि कोई चेतावनी जारी की गई है या नहीं? – Priyeshj

+0

मैं कोशिश करूँगा ... किसी विचार से rsync को कॉल करने के सर्वोत्तम तरीके पर कोई विचार? – Sebastian

+0

इस कोड का उत्पादन तब तक न करें जब तक आप सुनिश्चित न हों कि 'origin_folder' और' target_folder', अन्यथा आप एक खोल इंजेक्शन के लिए प्रवण हैं। –

उत्तर

1

अपने सर्वर की अनुमतियों की जांच करें, जब आप कमांड लाइन का उपयोग करते हैं तो यह अलग-अलग उपयोगकर्ता/अनुमतियां हो सकती है और इस प्रकार वह आदेश करने में सक्षम नहीं होती है।

2

जब आप दृश्य के माध्यम से आदेश चलाते हैं, तो 'django' उपयोगकर्ता कमांड को कॉल कर रहा है और उसे करने की अनुमति नहीं हो सकती है। आप rsync os.chown(path, uid, gid) चलाने से पहले निर्देशिका के मालिक को बदलने का प्रयास कर सकते हैं और देख सकते हैं कि यह आपको कहीं भी ले जाता है या नहीं।

इसके अलावा

, यदि आप rsync -avzP चलाने आप अतिरिक्त वर्बोज़, आंशिक/प्रगति विकल्प है जो आप डिबग मदद करने के लिए और अधिक जानकारी प्रदान कर सकते हैं मिल सेक, और होगा।

+0

आप दोनों को यह मिला। – Sebastian

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