बाहरी HD से लैपटॉप में निर्देशिकाओं के यादृच्छिक चयन को कैसे स्थानांतरित करें और कुल डेटा की सीमा निर्दिष्ट करें


1

मेरा लैपटॉप HD 120GB SSD है। मेरे पास एक टीबी एक्सटर्नल एचडी है जो मैं अपने म्यूजिक, फोटो और वीडियो को स्टोर करने के लिए इस्तेमाल करता था। मुझे अपने लैपटॉप पर कुछ संगीत पसंद है अगर मैं कुछ सुनना चाहता हूं और मेरे पास इंटरनेट नहीं है (मैं आमतौर पर अपने बाहरी एचडी के आसपास नहीं जाता हूं)। लेकिन अगर मेरे लैपटॉप पर मेरा पूरा संगीत संग्रह था, तो यह मेरे खाली स्थान का एक बड़ा हिस्सा ले जाएगा। मैं एक ऐसा उपकरण चाहता था जिसे मेरे बाहरी HD से एल्बमों का एक यादृच्छिक चयन मिले और उन्हें अपने लैपटॉप पर मेरे संगीत संग्रह में स्थानांतरित कर दिया। स्थानांतरण के लिए मैं केवल वह अधिकतम डेटा निर्दिष्ट करना चाहूंगा जिसे मैं स्थानांतरित करना चाहता हूं। उदाहरण के लिए, मैं निर्दिष्ट करने में सक्षम होना चाहता हूं, मुझे अपने बाहरी HD में संगीत संग्रह से 10GB मूल्य के यादृच्छिक एल्बम प्राप्त करें और उन्हें अपने लैपटॉप की संगीत निर्देशिका में डाल दें, जो पहले मेरे लैपटॉप पर उपलब्ध थे, को समाप्त कर दिया। ' संगीत निर्देशिका है। क्या कोई ऐसा उपकरण है जो मुझे इसे हासिल करने में मदद कर सकता है? यह संगीत को मेरे स्मार्ट-फोन में स्थानांतरित करने के लिए भी उपयोगी होगा। PS मैं एक Ubuntu उपयोगकर्ता हूँ।

जवाबों:


1

जब तक आपको ठीक 10GB डेटा की आवश्यकता नहीं है , बस लगभग 10GB लेकिन अधिक नहीं है, तो आप एक bash फ़ंक्शन लिख सकते हैं जो ऐसा करता है। इन पंक्तियों को अपनी $HOME/.bashrcफ़ाइल में जोड़ें :

function random_copy(){
    size=0; 
    tries=0;
    dirs=(); 
  ## The maximum size, change this to whatever you want
    limit=10000000
  ## The maximum number of times we will try to get 
  ## another dir if the current one is too big.
    maxtries=20
  ## While we have not reached the size limit
    while [[ $size -lt $limit ]] ; do 
  ## Find a random, non-empty directory from the source. 
  ## sort -R does a  random sort and head -n 1 prints the first line.
    dir="$(find $1/*/  -not -empty -type d | sort -R | head -n 1)"
  ## Get this dir's size
    dsize=$(du -s "$dir" | cut -f 1)
  ## If this dir does not make us pass the limit
    if [[  $((size + $dsize)) -le $limit ]]; then
        echo "Copying $dir" 1>&2
    ## Copy it to target
        cp -r "$dir" $2
    ## Add its size to $size
        let size+=$dsize
  ## If this dir makes us pass the limit
  ## try $maxtries times to find another that does not
    else
        let tries++;
        if [[ $tries -gt $maxtries ]]; then
        echo "" 1>&2;
        echo "Final size =  $size"
        break;
        fi
    fi
    done; 
}

फिर आप फ़ंक्शन को कॉल करके चला सकते हैं

random_copy /path/to/source /path/to/destination

उदाहरण के लिए

random_copy ~/Music /tmp/music

टिप्पणियाँ

  • फ़ंक्शन स्रोत निर्देशिका के अंतर्गत आने वाले फ़ोल्डरों के लिए दिखेगा । मैं मान रहा हूं कि आपका प्रत्येक एल्बम अपने स्वयं के फ़ोल्डर में है।
  • हर बार जब आप कार्य करते हैं तो वास्तविक आकार भिन्न होता है। यदि कोई विशेष निर्देशिका आकार की सीमा को पार कर जाती है, तो वह तब तक फिर से कोशिश करेगी जब तक कि $maxtriesवह पहुँच न जाए। आप maxtries=20जो चाहें बदलकर इसे नियंत्रित कर सकते हैं।

धन्यवाद! मुझे लगा कि मैं शायद बैश स्क्रिप्ट करूंगा। यह एक बहुत अच्छी हेड स्टार्ट है, धन्यवाद।
tatsuhirosatou

1

रैंडम कॉपी टूल का इस्तेमाल करें

रैंडम कॉपी में तीन मोड हैं:

  • एक file-based mode: विभिन्न स्रोत फ़ोल्डर से बाहर एक संगीत संग्रह बनाने के लिए सामान्य मोड।

  • एक directory-based Mode: एक संगीत संग्रह बनाने के लिए, अलग-अलग स्रोत निर्देशिकाओं के आधार पर भी, लेकिन फ़ाइल-आधारित मोड में अलग-अलग निर्देशिका की पूर्ण सामग्री की प्रतिलिपि बनाई जाती है।

  • CD-based Mode: गीतों के साथ सीडी या डीवीडी के आकार को फिट करने के लिए एक मोड विशेष है, इसलिए कम जगह बची है। गंतव्य फाइलें आंतरिक रूपांतरण के बाद स्रोत फाइलें या लहर फाइलें हो सकती हैं।

यहां छवि विवरण दर्ज करें

वैकल्पिक लिनक्स

एक विकल्प Linux Mix2Stix के लिए होगा ।

स्थापना के लिए कदम और कैसे उपयोग करें, यह पृष्ठ पर वर्णित है ।

यहां छवि विवरण दर्ज करें

नोट: Mix2Stix को जावा की आवश्यकता होती है जिसे सिस्टम पर इंस्टॉल किया जाना है। स्रोत वितरण में शामिल है।


Find / cp कमांड का उपयोग करना

find -L ~ -type f -name "*.mp3" | sort -R | tail -n50 | while read file; do cp "$file" /media/<yourdisk>; done

findआदेश अपने उपयोगकर्ता फ़ोल्डर में एमपी 3 फ़ाइलें के लिए खोज करेंगे ~-n50यह दर्शाता है कि कितनी फाइलें कॉपी होने जा रही हैं।


यह बहुत अच्छा लग रहा है, क्या आप लिनक्स विकल्प के बारे में जानते हैं?
tatsuhirosatou

@climatewarrior: मेरा जवाब अपडेट किया गया। मैं एक स्क्रिप्ट बनाने की कोशिश करूंगा जो वह करता है।
stderr
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.