একই ফাইললিস্ট ব্যবহার করে একাধিক গন্তব্যগুলিতে rsync করবেন?


22

আমি ভাবছি যে আরএসসিঙ্কের পক্ষে একসাথে একসাথে, এমনকি সমান্তরালেও একাধিক দূরবর্তী গন্তব্যগুলিতে একটি ডিরেক্টরি অনুলিপি করা সম্ভব কিনা। (প্রয়োজনীয় নয়, তবে দরকারী হবে))

সাধারণত, নীচের মত কিছু ঠিক কাজ করবে:

$ rsync -Pav /junk user@host1:/backup
$ rsync -Pav /junk user@host2:/backup
$ rsync -Pav /junk user@host3:/backup

এবং যদি এটি একমাত্র বিকল্প হয় তবে আমি এটি ব্যবহার করব। তবে / জাঙ্কটি বেশ কয়েকটি ফাইল সহ ধীর ড্রাইভে অবস্থিত এবং প্রতিবারের জন্য প্রায় 12,000 ডলার ফাইলের ফাইললিস্টটি পুনর্নির্মাণ প্রকৃত স্থানান্তর / আপডেটের তুলনায় যন্ত্রণাদায়কভাবে ধীর (~ 5 মিনিট) চলছে। একই জিনিস সম্পাদন করা কি এই জাতীয় কিছু করা সম্ভব:

$ rsync -Pav /junk user@host1:/backup user@host2:/backup user@host3:/backup 

দেখার জন্য ধন্যবাদ!

উত্তর:


12

ব্যাচ মোড সম্পর্কে rsync এর জন্য ম্যান পৃষ্ঠা থেকে এখানে তথ্য দেওয়া আছে।

মোড

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

একাধিক গন্তব্য গাছ আপডেট করার সময় একবার ব্যাচ ফাইল তৈরি করা ফাইল স্থিতি, চেকসাম এবং ডেটা ব্লক জেনারেশন সম্পাদন করে ves মাল্টিস্টাস্ট ট্রান্সপোর্ট প্রোটোকলগুলি পৃথকভাবে প্রতিটি হোস্টে একই ডেটা প্রেরণের পরিবর্তে বহু হোস্টের সমান্তরালে ব্যাচ আপডেট ফাইলগুলি স্থানান্তর করতে ব্যবহার করা যেতে পারে।

অন্য গন্তব্য ট্রিতে রেকর্ডকৃত পরিবর্তনগুলি প্রয়োগ করতে, একই ব্যাচের ফাইলের নাম এবং গন্তব্য গাছের উল্লেখ করে রিড-ব্যাচ বিকল্পের সাথে rsync চালান। Rsync ব্যাচ ফাইলে সঞ্চিত তথ্য ব্যবহার করে গন্তব্য ট্রি আপডেট করে।

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

   Examples:

          $ rsync --write-batch=foo -a host:/source/dir/ /adest/dir/
          $ scp foo* remote:
          $ ssh remote ./foo.sh /bdest/dir/

          $ rsync --write-batch=foo -a /source/dir/ /adest/dir/
          $ ssh remote rsync --read-batch=- -a /bdest/dir/ <foo

এই উদাহরণগুলিতে, rsync আপডেট / অ্যাডেস্ট / দির / থেকে / উত্স / দির / ব্যবহার করতে ব্যবহৃত হয় এবং এই ক্রিয়াকলাপটির পুনরাবৃত্তি করার তথ্য "foo" এবং "foo.sh" এ সংরক্ষণ করা হয়। হোস্ট "রিমোট" তারপরে ব্যাচযুক্ত ডেটা ডিরেক্টরি / বিডেস্ট / ডিরের সাথে আপডেট করা হয়। দুটি উদাহরণের মধ্যে পার্থক্যগুলি আপনি ব্যাচগুলির সাথে কীভাবে আচরণ করেন তাতে কিছুটা নমনীয়তা প্রকাশ করে:

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

  • প্রথম উদাহরণটি দূরবর্তী হোস্টে রিড-ব্যাচ কমান্ডটি চালনার সময় সঠিক আরএসসিএনসি বিকল্পগুলি পেতে তৈরি "foo.sh" ফাইলটি ব্যবহার করে।

  • দ্বিতীয় উদাহরণটি স্ট্যান্ডার্ড ইনপুটটির মাধ্যমে ব্যাচের ডেটা পড়বে যাতে ব্যাচ ফাইলটি প্রথমে রিমোট মেশিনে অনুলিপি করার প্রয়োজন হয় না। এই উদাহরণটি foo.sh স্ক্রিপ্ট এড়িয়ে চলেছে কারণ এটি পরিবর্তিত - রিড-ব্যাচের বিকল্পটি ব্যবহার করার প্রয়োজন ছিল, তবে আপনি যদি স্ক্রিপ্ট ফাইলটি ব্যবহার করতে চান তবে এটি সম্পাদনা করতে পারবেন (কেবলমাত্র নিশ্চিত হন যে অন্য কোনও বিকল্প স্ট্যান্ডার্ড ব্যবহারের চেষ্টা করছে না ইনপুট, যেমন "--exclude-from = -" বিকল্প)।

    আদেশ সহকারে:

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

    সমস্ত গন্তব্যগুলিতে ব্যবহৃত আরএসসিএনসি সংস্করণটি ব্যাচ ফাইল তৈরি করতে ব্যবহৃত হিসাবে কমপক্ষে নতুন হওয়া উচিত। ব্যাচ-ফাইলের প্রোটোকল সংস্করণ যদি ব্যাচ-রিডিং আরএসসিএনসি হ্যান্ডেল করার জন্য খুব নতুন হয় তবে রাইঙ্ক একটি ত্রুটির সাথে মারা যাবে। কোনও পুরানো আরএসসিএনসি বুঝতে পারে এমন একটি ব্যাচ ফাইল তৈরি করার পদ্ধতি তৈরির জন্য একটি উপায়ের জন্যও - প্রোটোকল বিকল্পটি দেখুন। (নোট করুন যে ব্যাচ ফাইলগুলি ২.6.৩ সংস্করণে ম্যাটের জন্য পরিবর্তিত হয়েছে, সুতরাং নতুন সংস্করণগুলির চেয়ে পুরানো সংস্করণগুলি মিশ্রণ কার্যকর হবে না))

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

    BATCH.sh ফাইল তৈরি করে এমন কোডটি যে কোনও ফিল্টারকে / অন্তর্ভুক্ত / বাদ দেওয়ার বিকল্পগুলিকে শেল স্ক্রিপ্ট ফাইলটিতে "এখানে" নথি হিসাবে সংযুক্ত করা হয়েছে এমন একক তালিকায় রূপান্তর করে। উন্নত ব্যবহারকারী এইটিকে বাদ দিয়ে তালিকার সংশোধন করতে ব্যবহার করতে পারেন - যদি ডেলিট দ্বারা মুছে ফেলা হয় এমন কোনও পরিবর্তন চান। একটি সাধারণ ব্যবহারকারী এই বিশদটি উপেক্ষা করতে পারেন এবং ব্যাচযুক্ত ডেটার জন্য উপযুক্ত --্রেড-ব্যাচ কমান্ড চালানোর সহজ উপায় হিসাবে শেল স্ক্রিপ্টটি ব্যবহার করতে পারেন।

    আরএসআইএনসি-তে মূল ব্যাচ মোড "আরএসসিএনসি +" ভিত্তিক ছিল তবে সর্বশেষতম সংস্করণটি একটি নতুন বাস্তবায়ন ব্যবহার করে।

আমি ভাবতে পারি আপনি চেষ্টা করতে পারেন

rsync --write-batch=foo -Pav /junk user@host1:/backup
foo.sh user@host2:/backup
foo.sh user@host3:/backup

প্রস্তাবিত কমান্ডটি কাজ করে না:remote destination is not allowed with --read-batch
কিননান

সম্পূর্ণ কমান্ড প্রদর্শন করুন। -কোনও ফাইলের নাম মানে স্ট্যান্ডার্ড ইনপুট থেকে পড়া, এবং এসটিডিআইএনও fooউদাহরণ থেকে স্থানীয় একটি ফাইল পড়ে নেওয়া হচ্ছে ।
ক্লো

2
এটি আমি যা করার চেষ্টা করছিলাম তার সর্বাধিক সঠিক সমাধান বলে মনে হয়, যদিও এর জন্য আমার ব্যবহারের কেসটি দীর্ঘকাল থেকেই ইথারের মধ্যে বাষ্প হয়ে গেছে। : ডি
জেসি

4

আপনি একযোগ ব্যবহার করার চেষ্টা করতে পারেন । ফাইল তালিকা তৈরির ক্ষেত্রে এটি আরও দ্রুত হওয়া উচিত কারণ এটি ফাইলগুলির একটি ক্যাশে রাখে।


2
দ্রষ্টব্য: একত্রীকরণ ফাইলগুলির একটি 'ক্যাশে' রাখে না। এটি কেবলমাত্র ফাইলের নাম, টাইমস্ট্যাম্পস, চেকসামগুলির একটি ডাটাবেস রাখে। এটি এখনও ফাইল সিস্টেমের স্ক্যান করে এবং রিমোটের সাথে তুলনা করার জন্য একটি চেকসাম তৈরি করে। ইউনিিসনের একমাত্র সুবিধা হ'ল দ্বিমুখী সিঙ্ক। আমি একত্রীকরণের পরামর্শ দিচ্ছি, তবে এটি এখানে সাহায্য করবে না।
ক্লো

4

rsync --batch-modeসমর্থন মাল্টিকাস্ট। আপনার নেটওয়ার্কে এটি যদি সম্ভব হয় তবে এটি সন্ধান করা উপযুক্ত।


2

ফাইল সিস্টেম পরিবর্তন সম্পর্কে কীভাবে?

কিছু সময় আগে, আমি এক্স-এফএস 3 থেকে বহু-টেরাবাইট এফএস পরিবর্তন করেছিলাম। ডিরেক্টরিগুলি স্ক্যান করার সময় (প্রায় 600,000 ফাইলের সাথে শেষ বার যাচাই করেছিলাম) 15-17 মিনিট থেকে 30 সেকেন্ডেরও কম চলে গেল!


1

সরাসরি উত্তর নয়, তবে আপনি যদি rsync সংস্করণ 3+ ব্যবহার করেন তবে এটি পুরো ফাইললিস্ট তৈরি করার আগেই এটি স্থানান্তর শুরু করবে।

আরেকটি বিকল্প, এখনও খুব দক্ষ নয়, তাদের চাকরি হিসাবে চালানো হবে যাতে একই সাথে কয়েকটি রান।

এছাড়াও, আমি কেবল এই গলা টিপে ভাবলাম যদি আপনি টার ব্যবহার না করে:

tar cf - . | tee >(ssh localhost 'cat > test1.tar') >(ssh localhost 'cat > test2.tar') >/dev/null

যেখানে প্রতিটি লোকালহোস্ট অবশ্যই আলাদা আলাদা সার্ভার (ধরে নিবে কী-ভিত্তিক লগইন)। যদিও উপরের আগে কখনও ব্যবহার করেন নি।


হুম! আশ্চর্যজনকভাবে যথেষ্ট, cwrsync (rsync 3.0.7) এটি করতে পারে না বলে মনে হচ্ছে। আমাকে কেন তা দেখতে হবে, যদিও এটি এই বিরাট রানটাইমগুলি কেটে ফেলার ক্ষেত্রে একটি বড় সহায়তা হবে। ধন্যবাদ!
জেসি

উভয় পক্ষের যে সংস্করণ?
কাইল ব্র্যান্ড্ট

আসলে কিছুই না; লোকাল মেশিনটি সিআরসিঙ্ক 3.0.০..7 এবং রিমোট হোস্ট (ভাল, আমি এখন যার সাথে কাজ করছি) ডিএসিয়ান লেনির উপর আরএসসিএন ৩.০.৩ রয়েছে। মনে হচ্ছে না যে এটির পক্ষে দুর্ব্যবহারের পক্ষে সংস্করণটির পার্থক্য খুব বড় হবে, তবে আমি জানি না .. আমি দেবিয়ান পক্ষকে উন্নত করতে দেখব।
জেসি

1
কি অদ্ভুত ছোট্ট এক-লাইনার। এটি সম্ভবত কাজ করবে, যদিও আমি যদি এই সত্যটি কাজে লাগাতে না পারি যে বেশিরভাগ স্লো লিঙ্কগুলির মধ্যে আরএসসিএনকে কিছু জিগের তথ্য নকল করার দরকার নেই, সর্বাধিকত, কেবলমাত্র কয়েকশ 'কেবি এর পরিবর্তিত হয়েছে। এছাড়াও, উভয় প্রান্তকে (সিডাব্লু) আরএসসিএনসি 3.0.0 এ পাওয়া এখনও ফাইল-তালিকা তৈরি এবং সিরিয়ালি স্থানান্তরিত করে। যদিও এটি নিয়ে খুব বেশি উদ্বিগ্ন নন।
জেসি

"টার সিএফ -" নয়। "টার সি।" এর মতোই। ?
জোহান বুলি

1

হোস্ট 1, হোস্ট 2 এবং হোস্ট 3 থেকে আরএসইএনসি কাজগুলি চালনা সম্পর্কে কীভাবে? অথবা, হোস্ট 1 এ অনুলিপি করতে একটি চাকরী চালান এবং তারপরে হোস্ট 1 থেকে এটি পেতে হোস্ট 2 এবং হোস্ট 3 এ চালান।


1

আরও ভাল সমাধান হ'ল গিট দিয়ে একটি সংগ্রহস্থল তৈরি করা এবং কেবল 3 হোস্টের দিকে ঠেলাঠেলি করা। দ্রুততর, আপনার ফাইল তালিকার অংশের প্রয়োজন হবে না এবং এটি কম সংস্থান গ্রহণ করে।

শুভকামনা,
জোও মিগুয়েল নেভেস


10
গিটটি পরিবর্তনের সময় বা অনুমতিগুলি সংরক্ষণ করে না (এক্সিকিউট বিট ব্যতীত) এবং গিট অবজেক্ট হিসাবে ডাটাটির দ্বিতীয় কপি সংরক্ষণ করতে হবে .git/যদিও রিমোটগুলিতে ইতিমধ্যে ধাক্কা লেগে গেছে যা ইতিমধ্যে বেশিরভাগ ডেটা দ্রুত হবে। গিটটি আরএসআইএনসি-র প্রতিস্থাপন নয়।
ড্যান ডি

এছাড়াও, গিটটি প্রকাশ্যভাবে দেখার যোগ্য, যদি আপনি অর্থ প্রদান করেন না।
ক্লো

8
@ চ্লো, আপনি গিটহাবের পক্ষে গিট ভুল করেছেন। গিট নিজেই ফ্রি ওপেনসোর্স বিতরণ সংস্করণ নিয়ন্ত্রণ সিস্টেম, এবং যে কেউ গিট সংগ্রহস্থলকে যেকোন উপায়ে http, nfsএবং সহ , হোস্ট করতে পারে afp। গিটহাব এমন একটি ওয়েবসাইট যা আপনার জন্য গিট রেপো তৈরি এবং রক্ষণাবেক্ষণের যত্ন নেয় এবং এগুলি সর্বজনীন করে তোলে (যদি আপনি অর্থ প্রদান না করেন)।
toriningen

1
@ ক্ল্লো গিটহাবটি সর্বজনীনভাবে দেখতে পাওয়া যায় তবে বিটবকেট ব্যক্তিগত রেপো সরবরাহ করে।
সা

2
এছাড়াও, গিট খালি ডিরেক্টরিগুলি ট্র্যাক করে না।
ফ্লিম

1

এই উত্তরটির সন্ধানের জন্য আমি নিজেই মনে করি, আপনাকে প্রথমে আরএসসিএনসি ব্যবহার করে একটি ব্যাচ তৈরি করতে হবে এবং তারপরে তাদের সকলের কাছে প্রেরণ করা দরকার, যা এটি তৈরি করবে যাতে ফাইল তালিকাটি কেবল একবারে ক্র্যাঞ্চ করা দরকার, এবং তারপরে আপনি ঠিক করতে পারেন এগুলি সমান্তরালভাবে চালাতে তিনটি rsync গুলি পটভূমি


1

আপনার আর একটি সম্ভাব্য সমাধান সমান্তরালভাবে যতগুলি আরএসসিএনসি প্রক্রিয়া চলছে তার সমান্তরালে যেমন আপনার হোস্ট রয়েছে, যেমন কাঁটাচামচ রয়েছে।

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