কীভাবে দুটি ফোল্ডার স্বয়ংক্রিয়ভাবে সিঙ্ক্রোনাইজ করা যায়?


92

আমি তার সমস্ত সাবট্রি সহ একটি ফোল্ডারের একটি সিঙ্ক্রোনাইজড কপি রাখতে চাই।

এটি এইভাবে স্বয়ংক্রিয়ভাবে কাজ করা উচিত: আমি যখনই মূল ফোল্ডার থেকে স্টাফ তৈরি করি, সংশোধন করব বা মুছব তখন সেই পরিবর্তনগুলি স্বয়ংক্রিয়ভাবে সিঙ্ক-ফোল্ডারে প্রয়োগ করা উচিত।

কোনটি এই কাজের সেরা পন্থা?

বিটিডাব্লু: আমি উবুন্টু 12.04 এ আছি

চূড়ান্ত লক্ষ্য হ'ল সিমলিংক বা মাউন্ট ব্যবহার না করে একটি পৃথক রিয়েল-টাইম ব্যাকআপ কপি রাখা। আমি আমার কম্পিউটারগুলির মধ্যে ডেটা সিঙ্ক্রোনাইজ করতে উবুন্টু ওয়ান ব্যবহার করেছি এবং কিছুক্ষণ পরে কিছু ভুল হয়ে গেছে এবং একটি সিঙ্ক্রোনাইজেশনের সময় আমার সমস্ত ডেটা হারিয়ে গেছে।

সুতরাং আমি আমার ডেটার ব্যাকআপ কপি রাখতে আরও একটি পদক্ষেপ যুক্ত করার চিন্তা করেছি:

  • আমি আমার ডেটা "ফোল্ডার এ" এ সঞ্চয় করি
  • "ফোল্ডার এ" এর "ফোল্ডার বি" তে cronএকটি স্ক্রিপ্ট সিঙ্ক তৈরি করতে আমার বর্তমান প্রশ্নের উত্তর দরকার (এর সাথে কোনও স্ক্রিপ্ট rsync? হতে পারে?)। আমার এটিকে কেবল এ থেকে বি পর্যন্ত একমুখী হতে হবে বিতে যে কোনও পরিবর্তন অবশ্যই প্রয়োগ করা উচিত নয়
  • আমি কেবল উবুন্টু ওয়ান এর সাথে "ফোল্ডার বি" সিঙ্ক্রোনাইজ রাখি

    এই পদ্ধতিতে এ-এর যে কোনও পরিবর্তন বি-তে প্রয়োগ করা হবে, যা ইউ 1 থেকে সনাক্ত হবে এবং মেঘের সাথে সিঙ্ক্রোনাইজ হবে। যদি কোনও ভুল হয়ে যায় এবং U1 B- তে আমার ডেটা মুছে দেয় তবে আমি সবসময় এগুলিতে থাকি I

ল্যাঞ্জের মন্তব্যে অনুপ্রাণিত হয়ে আরেকটি ধারণা হ'ল উবুন্টু ওয়ান-এর অধীনে একটি ফোল্ডারের সামগ্রী ব্যাকআপ করার জন্য আরম্ভের সময় আরএসসিএন চালানো এবং আরএসসিএনসি শেষ হওয়ার পরে উবুন্টু ওয়ান চালু করা যেতে পারে।

তুমি এটা সম্পর্কে কী ভাব? আরএসসিএনসি শেষ হবে কিভাবে?


তুমি অর্জন করার জন্য কি চেষ্টা করতেছ? ফোল্ডারগুলি কি সত্যই পৃথক হওয়া দরকার, আপনি কি একটি নাম অন্যটির সাথে সিমলিংক করতে পারবেন না, বা ডিরেক্টরিটিকে গৌণ স্থানে বাঁধতে পারবেন না ? এছাড়াও, এই অনুসন্ধানের ফলাফলগুলি একবার দেখুন
ল্যান্জ

4
ক্রোনের মাধ্যমে পর্যায়ক্রমে আমি প্রকৃত লাইভ সিঙ্ক্রোনাইজেশনের (যেমন উত্স ডিরেক্টরিতে ফাইল পরিবর্তনের জন্য অবিচ্ছিন্নভাবে দেখার) বিরুদ্ধে পরামর্শ দেব rsync
ল্যান্জ

উত্তর:


103

আপনি inotifywait( modify,create,delete,moveসক্রিয় পতাকা সহ ) এবং ব্যবহার করতে পারেন rsync

while inotifywait -r -e modify,create,delete,move /directory; do
    rsync -avz /directory /target
done

inotifywaitআপনার সিস্টেমে না থাকলে চালানsudo apt-get install inotify-tools


4
আপনি যদি আপনার দূরবর্তী মেশিনটি অ্যাক্সেস করতে ট্রান্সপোর্ট হিসাবে এসএসএইচ ব্যবহার করতে চান তবে আপনি যুক্ত -e ssh user@remote:/targetকরতে বিবেচনা rsyncকরতে চান।
ফ্যালকন

4
ধন্যবাদ @ ফ্যালকন, আমি সাধারণত ব্যবহার করি rsync -avz --delete --exclude-from=.rsyncignore /directory user@server:path। তবে আমি একটি সহজ উত্তর লিখতে চেয়েছিলাম।
সিলগন

4
স্পষ্ট করে বলার জন্য: এটি কি এক সময়ের চালিত জিনিস, বা আপনি এটি বাশার্ক বা কিছুতে যুক্ত করবেন?
ব্র্যাড জনসন

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

4
এটি ফাইলের modify,create,delete,move
পুনর্নবীকরণগুলি

25

আপনার এর মতো কিছু দরকার: https://github.com/axkibe/lsyncd এটি এমন একটি সরঞ্জাম যা rsync এবং ইনোটাইফাইয়ের সংমিশ্রণ করে - পূর্ববর্তীটি এমন একটি সরঞ্জাম যা মিরর করে, সঠিক বিকল্পগুলির সেট সহ, শেষ বিটের একটি ডিরেক্টরি। পরেরটি কার্নেলকে ডিরেক্টরি ও ফাইল ডিরেক্টরিতে পরিবর্তনের প্রোগ্রামকে অবহিত করতে বলে। এটা বলে:

এটি কয়েক সেকেন্ডের জন্য ইভেন্টগুলিকে একত্রিত করে এবং তারপরে পরিবর্তনগুলি সিঙ্ক্রোনাইজ করার জন্য একটি (বা আরও) প্রক্রিয়া (এসএস) তৈরি করে।

তবে - ডিজিটাল মহাসাগর অনুসারে https://www.digitalocean.com/commune/tutorials/how-to-mirror-local-and-remote-directories-on-a-vps-with-lsyncd- এ থাকা উচিত উবুন্টু সংগ্রহস্থল!

আমার অনুরূপ প্রয়োজনীয়তা রয়েছে, এবং এই সরঞ্জামটি, যা আমি এখনও চেষ্টা করতে পারি না, এই কাজের জন্য উপযুক্ত বলে মনে হচ্ছে।


4
lsyncd প্রথমে রূপোর বুলেট বলে মনে হয়েছিল তবে এতে প্রচুর প্রকাশ্য সমস্যা রয়েছে এবং সম্ভবত ম্যাকোস বাস্তবায়নটি "পুরানো এবং পুরানো"। আমি এটি 10.12 এ কাজ করতে পারি না।
অস্থির

@ পেইডনার্ড ন্যায্য বলতে, এটি 90 টি ইস্যু খোলা বনাম 420 বন্ধ রয়েছে। যদিও, গত বছর কেবল 10/40 ইস্যু বন্ধ ছিল were
মতিন উলহাক

8

@ সিলগন উত্তরের কেবল সাধারণ পরিবর্তন:

while true; do 
  inotifywait -r -e modify,create,delete /directory
  rsync -avz /directory /target
done

(@ সিলগন সংস্করণ কখনও কখনও উবুন্টু 16 এ ক্র্যাশ করে যদি আপনি ক্রোনটিতে চালনা করেন)


4
কেন আপনি ক্রোন এ চালাতে হবে?
saygley

@ সেগেলি একটি নির্দিষ্ট কাজের জন্য, উবুন্টু পুনরায় চালুর পরে সিঙ্ক প্রক্রিয়াটি স্বয়ংক্রিয়ভাবে চালিত হওয়া উচিত
ডেনিস কুজিন

4
আমি দেখছি .. তবুও, যেহেতু এটি সাধারণত একবারে শুরু করা উচিত এবং যতক্ষণ না সার্ভারটি চালু থাকে ততক্ষণ চলতে হবে; আমি পরিবর্তে rc.local এর মধ্যে অন্তর্ভুক্ত কিছু বিবেচনা করব।
সেগলেগি

2

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


0

আমি এই ফ্রি প্রোগ্রামটি স্থানীয় ফাইল এবং ডিরেক্টরিগুলি সমন্বয় করতে ব্যবহার করি: https://github.com/Fitus/Zaloha.sh । ভান্ডারটিতে একটি সাধারণ ডেমোও রয়েছে।

ভাল পয়েন্ট: এটি বাশ শেল স্ক্রিপ্ট (কেবল একটি ফাইল)। অন্যান্য প্রোগ্রামের মতো কোনও ব্ল্যাক বক্স নয়। ডকুমেন্টেশন পাশাপাশি আছে। এছাড়াও, কিছু প্রযুক্তিগত প্রতিভা দিয়ে, আপনি পছন্দ করেন এমন চূড়ান্ত সমাধান তৈরি করতে আপনি এটি "বাঁক" এবং "সংহত" করতে পারেন।

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