विंग के साथ मिररिंग - पुरानी फ़ाइलों को छोड़ दें


2

मैं एक ftp फ़ाइल-संग्रह को दर्पण करने के लिए wget का उपयोग कर रहा हूं।

यह मेरी आज्ञा है:
wget -m $mirror
(सभी अप्राकृतिक मापदंडों को छीन लिया गया)

अब तक, सब कुछ ठीक है, ऑनलाइन संग्रह के सभी अंतर सिंक किए जाएंगे।

लेकिन अब, एक स्क्रिप्ट है जो मेरी कॉपी से फ़ाइलों को हटा देती है क्योंकि उन्हें ज़रूरत नहीं है। इसलिए, अगर मैं फिर से शुरू करता हूं, तो यह इन फ़ाइलों (कई गीगाबाइट!) को भी फिर से डाउनलोड करेगा।

क्या फ़ाइलों को डाउनलोड से बाहर करने का विकल्प है, जो एक निश्चित टाइमस्टैम्प से अधिक पुरानी हैं?

मैंने पहले से ही देखा -A -R -I -X मापदंडों, लेकिन वे केवल फ़ाइल नाम के साथ काम करने लगते हैं ...


कर देता है -c (जारी) मदद?
vonbrand

नहीं, यह नहीं था। मैंने अभी देखा कि ncftp एक समाधान होगा - - - अगर कॉर्पोरेट फ़ायरवॉल नहीं होगा: /
Nippey

जवाबों:


0

आपका प्रश्न पढ़ते समय मेरा पहला विचार था "यह एक नौकरी की तरह लग रहा है rsync! ”। दुर्भाग्य से, जबकि rsync वास्तव में एक ही सीमा में ऊंची इमारतों को छलांग लगा सकता है, यह एफ़टीपी से निपट नहीं सकता है। यदि आपके पास दर्पण तक पहुंच है, तो चीजें बहुत आसान हो जाएंगी।

यदि आप नहीं मानते हैं, तो आप दूरस्थ एफ़टीपी निर्देशिका को स्थानीय रूप से माउंट करने का प्रयास कर सकते हैं, और फिर आप सरल का उपयोग कर सकते हैं cp (से प्रेरित इस ):

  1. कर्लफेट स्थापित करें। यदि आप एक डेबियन आधारित डिस्ट्रो पर हैं (मेरा मानना ​​है कि आप लिनक्स का उपयोग कर रहे हैं जब से आप उल्लेख करते हैं wget ), भागो

    apt-get install curlftpfs 
    
  2. स्थानीय माउंट पथ बनाएं

    mkdir -p /mnt/myftp
    
  3. गंतव्य ftp साइट का उपयोग करके माउंट करें curlftpfs

    curlftpfs -o allow_other ftp://user:pass@ftp.mirror.com /mnt/myftp
    
  4. उपयोग cp फ़ाइलों को कॉपी करने के लिए, इसे पास करना find एक तर्क के रूप में कमान:

    cd /mnt/myftp && \
    cp -v --parents `find . -type f -mtime -20` ~/foo/
    

स्पष्टीकरण:

  • find कमांड सभी को मिल जाएगी फ़ाइलें ( -type f ) दूरस्थ एफ़टीपी सर्वर में जो संशोधित किए गए हैं & lt; = 20 दिन पहले () -mtime 20 )।
  • cp कमांड उन फाइलों को कॉपी करेगा
    • यदि वे लक्ष्य निर्देशिका में संबंधित फ़ाइल से नए हैं ( -u )
    • उनकी मूल निर्देशिका को संरक्षित करना ( --parents )
  • cd /mnt/myftp बनाने के लिए बिट आवश्यक है cp गंतव्य फ़ोल्डर में सही मूल निर्देशिका बनाएँ। अगर तुम नहीं करते cd पहले ftp निर्देशिका के लिए, cp इस तरह से फ़ोल्डर बनाएंगे:

    ~/foo/mnt/myftp/bar
    

    इसके अलावा:

    ~/foo/bar
    

संयुक्त, इन कमांड / विकल्पों में पुरानी फ़ाइलों की अनदेखी करते हुए दूरस्थ सर्वर को मिरर करने का वांछित प्रभाव होना चाहिए।

चेतावनियां:

यह अपेक्षाकृत सरलीकृत मामला परिदृश्य है। यदि आपके पास अधिक उन्नत आवश्यकताएं हैं (उन सभी को wget आप जो विकल्प छोड़ गए हैं) आप उस पर एक नज़र रखना चाहते हैं man cp या, अधिक उन्नत विकल्पों के लिए, man rsync। आप अनिवार्य रूप से एक ही काम करने में सक्षम होंगे rsync के परिणाम को पारित करके find कमांड का उपयोग करना rsync की --include-from विकल्प।

यदि आप अपने प्रश्न को अधिक विशिष्ट आवश्यकताओं (लिंक, हार्ड लिंक, टाइमस्टैम्प, उपयोगकर्ता विशेषाधिकार, निर्देशिका पुनर्संरचना और इसी तरह संरक्षित करते हुए) के साथ अपडेट करते हैं, तो मुझे उनके अनुरूप अपना उत्तर संशोधित करने में सक्षम होना चाहिए।


ईमानदार होने के लिए, यह लिनक्स से भी बदतर है, लेकिन खिड़कियों से बेहतर है: मैं एक काम के माहौल में हूं जहां लिनक्स की अनुमति नहीं है (नेटवर्क नीति आदि ..), इसलिए मुझे साइगविन का उपयोग करना होगा .... मैं देखूंगा कि क्या मैं माउंट कर सकता हूं वहां चीजें और अगले सप्ताह वापस
Nippey

साइगविन में NTFS के अलावा फ़ाइल सिस्टम का कोई बढ़ते नहीं ... :(
Nippey
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.