2013-02-05 12 views
5

हाय मैं है /ifshk5/BC_IP/परियोजना/टी 1 1073/T11073_RICljiR/विभाजन/AG19_235/120225_I872_FCC0HN2ACXX_L8_RICljiRSYHSD2-1-आईपी AAPEK-17_1.fq.gzSCP और दूरदराज के mkdir -p

जैसे कुछ फ़ाइल पथ

मुझे एक ftp सर्वर से अन्य फ़ाइलों की प्रतिलिपि बनाने की आवश्यकता है। और अगर यह सर्वर में मौजूद नहीं है तो निर्देशिका बनाने की भी आवश्यकता है। मैं Sever जो उन फ़ाइल के लिए लॉग इन तो इस कोड

#! /bin/bash 

while read myline 
do 
    for i in $myline 
    do 
    if [ -f $i ] 
    then 
    location=$(echo "$i" | awk -F "/" '{ print "", $6, $7, $8 }' OFS="/") 
     #location shows /T11073_RICekkR/Fq/AS59_59304 
    location="/opt/CLiMB/Storage3/ftp/ftp_climb/100033"$location 
    echo $location 

    ssh [email protected] mkdir -p $location 
    scp -r $i [email protected]:$location 

    fi 
    done 
done < /ifshk5/BC_IP/PROJECT/T11073/T11073_all_3254.fq.list 

यह कुछ समस्या है, 1. यह हमेशा काम नहीं कर सकता से पता चलता चलाने अनुमति नहीं दी, पुन: प्रयास करें। लेकिन जब मैं प्रत्यक्ष प्रकार

ssh [email protected] mkdir -p /sample/xxxx 

यह काम कर सकते हैं, और नए dir स्थान सही यह /opt/चढ़ाई/Storage3/एफ़टीपी/ftp_climb/100,033/T11073_RICekkR/fq/AS59_59304

+1

का उपयोग क्यों न करें rsync का उपयोग करें? –

+0

क्या आप मुझे और अधिक विस्तार समाधान दे सकते हैं? धन्यवाद, – Jessesiu

उत्तर

5

तरह से पता चलता है मुझे नहीं पता कि "अनुमति अस्वीकार" त्रुटि कहां से आ सकती है; त्रुटि का कारण बनने वाले आदेश को देखने के लिए bash -x के साथ स्क्रिप्ट चलाएं। शायद यह वही नहीं है जो आप उम्मीद करते हैं।

इसके अलावा बजाय पहिया फिर से खोज करने की कोशिश rsync:

rsync --dirs $i [email protected]:$b 

--dirs दूरदराज के पक्ष में आवश्यक फ़ोल्डर बना होगा (और यह जब कुछ विफल रहता है तो आप अच्छा त्रुटि संदेश देना होगा)।

यह भले ही आप दोनों पक्षों पर एक ही फ़ोल्डर संरचना है rsync लिए एक कॉल के साथ सब कुछ करने के लिए संभव हो सकता है:

rsync -avP /ifshk5/BC_IP/PROJECT/T11073/ [email protected]:/opt/CLiMB/Storage3/ftp/ftp_climb/100033/ 

नोट / रास्तों के बाद! उन्हें मत छोड़ो।

rsync पता लगाएगा कि किन फ़ाइलों को स्थानांतरित करने की आवश्यकता है और केवल उनको कॉपी करें। यदि आप केवल एक सबसेट स्थानांतरित करना चाहते हैं, तो --include-from

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