2012-11-16 8 views
34

का उपयोग करते समय फ़ाइलों की ओवरराइटिंग को रोकें मैं एसपीपी का उपयोग करके कुछ फाइलों की प्रतिलिपि बना रहा था और मैं पहले से मौजूद फाइलों को ओवरराइट नहीं करना चाहता हूं।एसपीपी

अगर मैं सीपी कमांड का उपयोग कर रहा था, तो मुझे लगता है कि यह सीपी-एन का उपयोग करके किया जा सकता है।

क्या एसपीपी के लिए एक समान विकल्प है, मैं एससीपी के दस्तावेज के माध्यम से चला गया और ऐसा कोई विकल्प नहीं लगता है।

क्या इस समस्या को हल करने के लिए rsync या sftp तरीका है?

अलावा जानकारी:

ओएस: Ubuntu 12.04

उत्तर

33

rsync आपकी समस्या का समाधान प्रतीत होता है। यहाँ एक उदाहरण मैं here से मिल गया है:

rsync -avz foo:src/bar /data/tmp 

-एक विकल्प की अनुमति, निर्देशिका संरचना, स्वामित्व, और सिमलिंक सुरक्षित करेगा। आप व्यक्तिगत रूप से इनमें से किसी भी विकल्प को भी निर्दिष्ट कर सकते हैं।

-v और -z मतलब वर्बोज़ और क्रमशः संपीड़ित है। आपको वास्तव में उनकी आवश्यकता नहीं है हालांकि -ज अच्छा है अगर आप बड़ी फाइलों की प्रतिलिपि बना रहे हैं।

-1

मैंने इसका परीक्षण नहीं किया लेकिन शायद पहले sshfs के माध्यम से माउंटंग किया गया और फिर cp का उपयोग करके चाल चल जाएगी।

0

मैंने इसके लिए अतीत में rsync का उपयोग किया है, लेकिन मुझे खुद को एक विंडोज़ बॉक्स से पकड़ने की कोशिश कर रहा है जिसमें कॉपएसएसएच और कोई rsync नहीं है :-(निम्नलिखित फाइलों को खत्म करने के लिए फ़ाइल परीक्षणों का उपयोग करके मेरे लिए ठीक काम किया गया है ओवरराइट किया, और एकाधिक पैदा एक SFTP उदाहरण के लिए अनुरोध 'प्राप्त'।

( echo 'cd work/ftp/' ; 
    ssh <user>@<machine> 'cd work/ftp/ && ls -1 ITEM_SALE_SUMMARY_V.*.dat.xz' | 
    while read line; do [[ -f "$line" ]] || echo get "$line"; done 
) | sftp <user>@<machine> 

बस में मामला दूसरों एक गैर rsync समाधान की जरूरत है!

15

मैं बस एक साधारण हैक पाया। पढ़ा गया चिह्नित करें मौजूदा फ़ाइलों -ऑनली।

+0

सही समझ में आता है कि अगर आप मौजूदा फ़ाइलों को अधिलेखित नहीं करना चाहते : 'chmod uw srcfile; scp -p srcfile $ USER @ $ होस्ट: $ निर्देशिका/'। एसपीपी मैन पेज से: '-पी मूल फ़ाइल से संशोधन समय, एक्सेस समय और मोड को संरक्षित करता है।' –

7
rsync -avz --ignore-existing /source folder/* [email protected]:/dstfolder/ 

--ignore-existing दूरस्थ सर्वर या गंतव्य सर्वर * पर फ़ाइलों को ओवरराइट नहीं करेगा।

0

बस के पूरक के लिए अन्य समाधान:

एक ascii/बिन फ़ाइल के लिए, आप इसके साथ कर सकते हैं:

cat source_file | ssh host "test ! -f target_file && cat > target_file"

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