ডিরেক্টরি কাঠামোর পরিবর্তন কীভাবে স্থানান্তরিত করবেন?


1

আমি আমার ডিজিটাল ফটো এবং ভিডিওগুলির রিমোট ব্যাকআপ আপডেট করতে rsync ব্যবহার করি। আমার প্রায় 100 জিবি ডেটা আছে।

এখন আমি আমার মিডিয়া ফোল্ডারটিকে আরও লজিক্যাল কাঠামোয় পুনরায় সাজিয়েছি। ম্যানুয়ালি হয়ে গেছে, যেমন কিছু স্ক্রিপ্ট ব্যবহার করা হয় না exiftool। সমস্যাটি হল যে আরএসআইএনসি-র জন্য রিমোট ডিরেক্টরিটি সম্পূর্ণ আলাদা দেখায়। যদি আমি একটি আপডেট চালনা করি তবে এটি প্রকৃতপক্ষে বিদ্যমান ফাইলগুলি মুছে ফেলবে (অন্য স্থানে থাকলেও) এটি একই ফাইলগুলি আবার আপলোড করবে upload

আমার ধীর আপলোডের গতিতে এটি যুগে যুগে সময় নেবে।

যেহেতু সমস্ত ফাইলের নাম অনন্য are আমি মনে করি স্থানীয় একটি অনুসারে দূরবর্তী ফোল্ডারটি পুনরায় সাজানোর জন্য কোনও স্ক্রিপ্ট লেখা সম্ভব হবে।

কেউ কি এই সমস্যার সমাধান জানেন?

উত্তর:


1

বিকল্প 1: সময়মতো ফিরে যান এবং এটি পড়ুন: http://lincolnloop.com/blog/2012/jan/6/detecting-file-moves-renames-rsync/ এই অপারেশনটি অনুকূলকরণের জন্য হার্ডলিঙ্কগুলি সহ একটি কৌশল ব্যবহার করে (সাবধানে নোট করুন উদাহরণস্বরূপ "/" অনুসরণ করার বাদ দিলেও, এটি আপনার ব্যবহারের চেয়ে আলাদা হতে পারে)। যদি আপনার কাছে পুনর্গঠনের পূর্বে একটি স্থানীয় ব্যাকআপ অনুলিপি থাকে, আপনি সম্ভবত এটি পুনরুদ্ধার করতে এবং ব্যবহার করতে পারেন (জটিলতাটি হার্ডলিংক অনুলিপি প্রয়োজনীয়ভাবে তৈরি করতে সক্ষম হচ্ছে)।

বিকল্প 2: আপনার যদি আপনার ফাইল বা ডিরেক্টরিগুলির নামগুলিতে কোনও ফাঁকা / কোট না থাকে এবং কোনও নকল রাখার ইচ্ছা না থাকে তবে আপনি এটির মতো একটি দ্রুত এবং নোংরা অনুলিপি / পুনর্নবীকরণ স্ক্রিপ্ট তৈরি করতে পারেন।

উত্স উপর:

cd /wherever
find . -type f | xargs sha1sum | sort > /tmp/src.out

গন্তব্যস্থলে

cd /wherever
find . -type f | xargs sha1sum | sort > /tmp/dst.out

dst.outউত্স থেকে ফাইল অনুলিপি করুন , এবং তারপরে উত্স থেকে:

join -j 1 /tmp/src.out /tmp/dst.out | while read sum src dst; do
    if [ "$src" != "$dst" ]; then
        echo mkdir -p $(dirname "$src")
        echo cp -ipl "$dst" "$src"
    fi
done > fixup.sh

এটি mkdir/cpকমান্ডের একটি সেট আউটপুট দেবে যা আপনি fixup.shগন্তব্যে আপনার অনুলির শীর্ষ ডিরেক্টরিতে ( ) চালাতে পারেন । স্ক্রিপ্ট আউটপুট আপনার যা করার প্রয়োজন তা করবে তা নিশ্চিত করুনcp -iplঅনুরোধ ছাড়াই ওভাররাইট করা হবে না, এবং হার্ড লিঙ্কিং দ্বারা অনুলিপি করা হবে। পরবর্তী rsync --delete ...পুরাতন ফাইল মুছে দিন ভেবে যে তারা একটি অভিন্ন কপি চান। rsync --dry-run ...পরবর্তী কোনও পার্থক্যের মাত্রা নিশ্চিত করতে ব্যবহার করুন ।

( সদৃশ এবং ক্লিনআপ সংরক্ষণ করে mv -iঅ-ধ্বংসাত্মক " cp -ipl" এর পরিবর্তে " " ব্যবহার করা সম্ভব ))

আপনার যদি সমস্যাযুক্ত ফাইল / ডিরেক্টরি নামগুলি থাকে তবে আপনাকে ফাইলের নামগুলির কিছু মধ্যবর্তী প্রক্রিয়াজাতকরণ করতে হবে, বা সমাধানগুলির একটি এখানে চেষ্টা করতে হবে: https://unix.stackexchange.com/questions/6411/any-way-to-sync -directory-কাঠামো-যখন-ফাইল-হয়-ইতিমধ্যে-অন-উভয়-পক্ষের

আপডেট: আপনি যদি sedকমান্ড লাইনের জন্য যায় এমন বিরাম-বিহীন-কারখানার বিস্ফোরণ সহ্য করতে পারেন :

find . -type f -print0 | xargs -0 sha1sum | 
sed -re $'s/(^[0-9a-z]*)  /\\1__/; 
    s/ /\\\\x20/g;  s/\'/\\\\\'/g; 
    s/(^[0-9a-z]*)__/\\1  /; 
    s/  (.*)$/  $\'\\1\'/g;'

এটি স্পেস এবং একক / ডাবল উদ্ধৃতিগুলি হ্যান্ডেল করবে (যদিও আমরা perlসঠিক ভারী উত্তোলনের জন্য অঞ্চলে পৌঁছাচ্ছি)। এটি ঝামেলার $''স্ট্রিং উদ্ধৃত করার জন্য বাশ নির্মাণ ব্যবহার করে।


বিকল্প 1 টিতে আমি বুঝতে পারি না এমন কিছু আছে যা এতে বলেছে "গাছের স্বাভাবিক সিঙ্ক্রোনাইজেশন করে শুরু করুন"। এটি আমার কাছে কোনও অর্থবহ নয়, কারণ আমি যদি আমার ডিরেক্টরিটির কাঠামো পুরোপুরি বদলে ফেলেছি, তবে প্রাথমিক সিঙ্ক্রোনাইজেশন হ'ল আমি যা এড়াতে চাই ঠিক তার সব কিছুই আপলোড করার চেষ্টা করবে। আমি যদি কিছু ভুল না বুঝি।
মারারার

অপশন 2 অন্যদিকে কাজ বলে মনে হচ্ছে! এটি ধীর গতির থেকে এটি বড় ভিডিও ফাইলগুলির sha1sum গণনা করে তবে পুরো গোছাটিকে আবার আপলোড করার চেয়ে অবশ্যই এটি আরও দ্রুত। আমার ফাইল এবং দির নামগুলিতে আমার ফাঁকা স্থান রয়েছে তবে এটি এই ছোট্ট পরিবর্তনটি দিয়ে ভাল কাজ করে:find . -type f -print0 | xargs -0 sha1sum | sort > /tmp/src.out
মারারার

আহ, বিকল্প 1 আবার পড়ার পরে, আমি মনে করি আমি বুঝতে পেরেছি। হার্ডলিঙ্কিং ইত্যাদির সাথে প্রস্তুতিটি ফোল্ডারটি পুনর্গঠনের আগে করা উচিত যাতে আপনার একটি নতুন এবং পুরানো কাঠামো শেষ হয় যা হার্ডলিঙ্কের কারণে খুব বেশি জায়গা নেয় না। আমার ক্ষেত্রে
পুনরায় অর্ডারিং

আপনাকে উত্পন্ন স্ক্রিপ্টটি পরিবর্তন করতে হবে কারণ স্পেসগুলি কোডটিও ভেঙে দেবে read sum src dst। লিঙ্কটির একটি সমাধান sedচেকসাম আউটপুট দেওয়ার পরে সমস্ত কিছু উদ্ধৃত করতে ব্যবহার করে, আপনার সহজেই তা মানিয়ে নিতে সক্ষম হওয়া উচিত।
মিঃ স্পুর্যাটিক

হার্ডলিঙ্ক পুনর্বিন্যাসটি আগে থেকে না করেও ব্যবহার করা সম্ভব হয়েছে। উভয় পক্ষের একটি ডিরেক্টরিতে সাধারণ ফাইলগুলিকে কেবল সিপি -আরল্প করুন ...
ডেভিড ফ্রেজার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.