গতি বাড়ানো / rsync ফাইল তালিকার গণনা এড়ানো


12

আমি দুটি ডিস্ক সিঙ্কে রাখতে rsync 3.1.1 ব্যবহার করি, যার মধ্যে একটি নেটওয়ার্কে রয়েছে এবং সাম্বা শেয়ার হিসাবে চালিত হয় /mnt/ROUTER_WD_2TB/। নেটওয়ার্কের সীমাবদ্ধতার কারণে 30-40MB / s সর্বাধিক গতি সহ এটি উত্স। অন্যটি, গন্তব্যটি স্থানীয়ভাবে মাউন্ট করা হয়েছে (শীর্ষস্থানীয় 110 এমবি / গুলি) এবং এটি /mnt/BACKUP_HITACHI_2TB/

আমি নিম্নলিখিত rsync কমান্ডটি ব্যবহার করছি:

rsync  -haAXi --quiet --append-verify --delete /mnt/ROUTER_WD_2TB/* /mnt/BACKUP_HITACHI_2TB/.

ডিস্কগুলিতে অনেকগুলি ফাইল থাকে , তাদের বেশিরভাগই ছোট।

সমস্যাটি হ'ল যে কোনও ফাইল সরানো শুরু করার আগে আরএসইএনসি বেশ দীর্ঘ সময় নেয় (10-20 মি) , আমার ধারণা, এটি খুব ছোট সংখ্যক ছোট ফাইলের জন্য ফাইল তালিকা গণনা করতে হবে। এই সময়কালে, নতুন কাজটির ব্যবহার কম 200-500KB / s এ বসে থাকে, যখন ফাইলগুলি স্থানান্তর করার সময় গতি প্রায় 40MB / s হয়।

এটি সাধারণত ঘটে থাকে যে শেষ পর্যন্ত এটি অনুলিপি করতে হবে এমন কিছু আবিষ্কার করতে rsync প্রায় 15 মিনিট সময় নেয়, তারপরে এটি অনুলিপি করতে 5 সেকেন্ড সময় নেয়, তারপরে আরও 5 মিনিটের জন্য অনান্য কিছু ফাইল অনুলিপি করে চেক করে চালিয়ে যান। সব মিলিয়ে একটি 5 সেকেন্ডের ফাইলের অনুলিপি 20 মিনিট স্থায়ী হবে!

ফোল্ডার বাদে অন্য ফাইলগুলি অনুলিপি করার আগে এই দীর্ঘ সময়টি এড়াতে আমি কী ব্যবস্থা নিতে পারি? কোনও ধরণের "ক্যাশে" আমি প্রয়োগ করতে পারি যাতে আরএসসিএনকে স্ক্র্যাচ থেকে সমস্ত ফাইল তালিকা পুনরায় তৈরি করতে না হয়?


1
আপনি কি এই থ্রেড থেকে সমাধানের চেষ্টা করেছেন? unix.stackexchange.com/questions/189878/…
ইউভিভি

@ ইউভিভি আমি এটি করিনি। আমি এটি করতে পারি, তবে 1) আরএসসিএন ইতিমধ্যে কোনও কারণে আমার সম্পূর্ণ কোর ব্যবহার করছে বলে মনে হয় না (= আমি নিশ্চিত না যে আমি সিপিইউ সীমিত থাকি বা সীমাবদ্ধতা অন্য কোথাও থাকে) এবং ২) এটি কেবলমাত্র ডুয়াল-কোর সিপিইউতে, সুতরাং উন্নতি 2 এক্স হলেও, উন্নতির জন্য এখনও বড় ব্যবধান থাকবে।
এএফ

হ্যাঁ এটি আমার কাছে পাগল বলে মনে হচ্ছে, আর এতে রিসাইক কেন এত ধীর? এমনকি "- সাইজ-কেবল" আরএসসিএনসি এর বর্ধিত ফাইল তালিকা তৈরি করতে চিরকালের জন্য নেয় বলে মনে হয়। কেন? আমি ম্যানুয়ালি ফাইলের আকারগুলি পরীক্ষা করতে পারি এবং নির্ধারণ করতে পারি যে কোনটি খুব দ্রুত পরিবর্তিত হয়েছে! এটি করতে এত সময় নষ্ট করা কী এবং আমি কীভাবে এই অভিনব বৈশিষ্ট্যগুলি বন্ধ করব? সম্পাদনা: আহা, কিছু মনে করবেন না, আমার দুর্ঘটনার কারণে 'সি' পতাকাটি ছিল। চেকসামগুলি ছাড়াই এটি খুব দ্রুত।
বেন ফার্মার

উত্তর:


5

যতদূর rsyncউদ্বিগ্ন আপনি দুটি স্থানীয় ফাইল গাছের মধ্যে অনুলিপি করছেন, সুতরাং এটি এর বেশিরভাগ অপটিমাইজেশন অক্ষম করে (এর বেল্ট অ্যালগরিদম যার জন্য এটি বিখ্যাত) famous যদি আপনি rsyncআপনার রিমোট সার্ভারে চালনা করতে পারেন (যাতে আপনি আপনার নেটওয়ার্ক জুড়ে একটি সত্য ক্লায়েন্ট-সার্ভারের দৃশ্য পান) আপনি একটি উল্লেখযোগ্য পরিমাণ ট্র্যাকশন অর্জন করতে পারবেন।

তবুও এখানে বিবেচনা করার জন্য অন্যান্য বিকল্প রয়েছে

  1. পুরানো ফাইলগুলি মোছার বিষয়ে চিন্তা না করে অনুলিপি করা। এটি আপনাকে আরও প্রায়শই দ্রুত স্থানান্তর করার অনুমতি দিতে পারে এবং দিনে মাত্র একবার ধীরে ধীরে পরিষ্কার করতে হবে:

    cp -au /mnt/ROUTER_WD_2TB/. /mnt/BACKUP_HITACHI_2TB/
    
  2. rsyncস্থানান্তর করার আগে ফাইলগুলির একটি সম্পূর্ণ তালিকা তৈরি করা এড়ানোর জন্য ডিফল্ট মুছে ফেলার আলগোরিদিমটির একটি প্রকরণটি ব্যবহার করুন :

    rsync -haAXi --quiet --delete --delete-during /mnt/ROUTER_WD_2TB/ /mnt/BACKUP_HITACHI_2TB/
    
  3. শীর্ষ-স্তরের ডিরেক্টরিগুলি পৃথক কার্যগুলিতে বিভক্ত করুন এবং এগুলি সমান্তরালে চালান। আপনি দেখতে পাচ্ছেন যে আপনি যদি ডিস্ক আইও-আবদ্ধ থাকেন তবে এটি সত্যিই সহায়তা করবে না এবং স্পিনিং প্লেটারগুলির জন্য এটি অবশ্যই পরিস্থিতি আরও খারাপ করে দেবে।

    for d in /mnt/ROUTER_WD_2TB/*
    do
        rsync -haAXi --quiet --delete --delete-during "$d" /mnt/BACKUP_HITACHI_2TB/ >"/tmp/rsync.${d/*\/}.log" 2>&1 &
    done
    wait
    cat /tmp/rsync.*.log
    rm -f /tmp/rsync.*.log
    

এই পরামর্শসমূহ কেউই তারপর সহায়তা করেন, তাহলে এটি অন্য জোড়ার মূল্য হবে --verboseথেকে rsyncদেখতে এটি কি করছে। আমার সন্দেহ হয় যে এটি অপরিবর্তিত সমস্ত ফাইলের মধ্যে ছড়াচ্ছে এবং আপনার যদি যথেষ্ট ফাইল থাকে তবে এটি কেবল দীর্ঘ সময় নেয় takes


--delete --delete-duringএটি আমার জন্য করেনি - এটি এখনও একটি ইনক্রিমেন্টাল ফাইলের তালিকা পাঠিয়েছিল - তবে --delete --delete-beforeসরাসরি গিয়েছিল: building file listযা বড় অগ্রগতির মতো বলে মনে হচ্ছে। আমি মনে করি.
mlissner

না, এটা পিছনের দিকে, আমি ভয় করি। আপনি যদি ব্যবহার করেন --delete-beforeতবে rsyncফাইল ট্রি জুড়ে দুটি পাস করুন: একটি মুছে ফেলার জন্য এবং তারপরে অনুলিপি করার জন্য।
রোয়াইমা

ধন্যবাদ। সেক্ষেত্রে ... ইনক্রিমেন্টাল ফাইল তালিকা তৈরি করা এড়াতে কোনও উপায়?
mlissner

@ মিলসনার এটি বিভিন্ন বিভিন্ন কারণের উপর নির্ভর করে। এখন পর্যন্ত সবচেয়ে বড়টি হচ্ছে আপনি স্থানীয় থেকে স্থানীয় বা স্থানীয় থেকে দূরবর্তী অনুলিপি করছেন কিনা।
রোয়াইমা

স্থানীয়দের মধ্যে এটি একটি ইউএসবি ডিস্ক থাকা সত্ত্বেও স্থানীয়ভাবে এটি আমার কাছে স্থানীয়?
mlissner

-2

আপনি -vvসম্পূর্ণ লগ দেখতে ব্যবহার করতে পারেন rsync


2
এটি কীভাবে এই প্রশ্নের উত্তর দেবে, অর্থাৎ কীভাবে এই গতি বাড়বে?
কুসালানন্দ

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