एक निर्देशिका, फ़ाइल को फ़ाइल में कैसे स्थानांतरित करें? ("कॉपी फिर निकालें" के बजाय)


20

मेरे कंप्यूटर में एक 500GB ड्राइव है।

मैं से डेटा के 400GB ले जाना चाहते /unencryptedकरने के लिए /encrypted

दोनों निर्देशिकाएं एक ही पार्टीशन पर हैं, लेकिन इकोक्रिप्ट/encrypted द्वारा नियंत्रित किया जाता है , इसलिए :mv /uncrypted/* /encrypted

  1. गंतव्य के लिए सभी फ़ाइलों की प्रतिलिपि बनाएँ
  2. फिर उन्हें स्रोत से हटा दें

... जिसे मैं बर्दाश्त नहीं कर सकता, क्योंकि इसके लिए 800GB की आवश्यकता है।
यदि फाइलें एक-एक करके स्थानांतरित की जाती हैं, तो कोई समस्या नहीं होगी (ecryptfs क्षेत्र गतिशील है)।

क्या कोई mvविकल्प या कोई अन्य उपकरण है, जो निर्देशिका फ़ाइल-दर-फ़ाइल स्थानांतरित करता है?
फ़ाइलों की एक बड़ी संख्या है, इसलिए ARG_MAX स्क्रिप्ट-आधारित समाधान के लिए एक समस्या हो सकती है।

जवाबों:


20

यदि आपके पास है rsync( --dry-runवास्तविक के लिए इसे हटाने के लिए):

rsync --dry-run --remove-source-files -avHAX /unencrypted/ /encrypted

अन्यथा, bash4 + और GNU स्टेट का उपयोग कर:

#!/bin/bash

set -e

shopt -s nullglob globstar

for from in /unencrypted/**/*; do
    to="${from/\/un//}"
    if [[ -d "$from" ]]; then
        echo mkdir -p "$to"
        echo chmod "$(stat -c %a "$from")" "$to"
        echo chown "$(stat -c %u:%g "$from")" "$to"
    else
        echo cp -a "$from" "$to" && echo rm "$from"
    fi
done

echo rm -r /unencrypted

इसे वास्तविक के लिए चलाने के लिए, echoप्रत्येक कमांड से निकालें ।


मैं rsync विचार प्यार करता हूँ! जाहिरा तौर पर फ़ाइलों को हटा दिया जाता है क्योंकि वे स्थानांतरित हो जाती हैं: superuser.com/questions/405761
निकोलस राउल

@ निकोलस राउल यदि मुझे सही तरीके से याद है, तो निष्कासन बफ़र किए जाते हैं, लेकिन यह एक-से-एक प्रति / हटाने के करीब है।
क्रिस डाउन

चंक्स मेरे लिए ठीक है, जब तक कि प्रत्येक चंक वज़न 50GB से कम न हो।
निकोलस राउल

क्या आपको --dry-runrsync कमांड लाइन से भी हटाने की आवश्यकता नहीं होगी ?
एक CVn

1
@meduz vवैकल्पिक है और केवल फ़ाइल नाम को स्थानांतरित करने के लिए प्रिंट करता है। aHAXसभी संभव फ़ाइल विशेषताओं को रखने के लिए आवश्यक है - aसंग्रह है, HAX"हार्डलिंक, एसीएल और विस्तारित विशेषताओं को रखें"।
क्रिस डाउन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.