দুটি ডিরেক্টরি সিঙ্ক্রোনাইজ করার সফ্টওয়্যার (স্থানীয় / দূরবর্তী)


9

আমার এমন সফ্টওয়্যার দরকার যা প্রতি 5 সেকেন্ড বা তার পরে ডিরেক্টরি (এ) এর পরিবর্তনগুলি সনাক্ত করে এবং / বি (বি) দূরবর্তী ডিরেক্টরি থেকে পরিবর্তন করা ফাইলগুলি আপলোড / মুছবে।

আমি অ-বাণিজ্যিক সফ্টওয়্যার, https://github.com/devstruct/doubledown পেয়েছি । আমি ভাবছি কোন বাণিজ্যিক বিকল্প আছে কিনা?

উত্তর:


12

rsync অবশ্যই এই কাজের জন্য সঠিক সরঞ্জাম। ডিরেক্টরিগুলি সিঙ্কে রাখার জন্য এটি বিদ্যমান এবং এটি মোটামুটি স্মার্টগুলির সাথে এটি করতে পারে। উদাহরণস্বরূপ: এটি যখনই পারে কেবলমাত্র ডেল্টা স্থানান্তর করবে এবং এটি এসএসএস টানেলের মাধ্যমে কাজ করতে পারে।

ধরা যাক আপনার কাছে এমন একটি মেশিন উত্স রয়েছে যা ডিরেক্টরি গাছ /my/treeএবং মেশিন সিঙ্কের আপনার লাইভ সংস্করণটিকে হোস্ট করে যা আপনি এটির সাথে সংলগ্ন রাখতে চান। আপনি একটি SSH অ্যাকাউন্ট ছিল বেসিনে আপনি করতে পারে, থেকে উৎস নিম্নরূপ ব্যবহার rsync:

rsync -avz --delete -e ssh /my/tree/ remoteuser@sink:/my/tree

এটি ধরে নেওয়া হয় যে আপনি উত্সের মতো /my/treeএটি ডোবার ঠিক একই জায়গায় চান । অবশ্যই, আপনার এটি ঠিক একই জায়গায় রাখার দরকার নেই।

কমান্ড লাইন ভেঙে:

  • -avz: সংরক্ষণাগার মোড, ভারবোজ আউট, স্থানান্তর করার সময় সংক্ষেপণ ব্যবহার করুন
  • --delete: চালু ফাইল মুছে দিন সিঙ্ক যে উপস্থিত না উৎস
  • -e ssh: সংযোগ পদ্ধতি হিসাবে ssh ব্যবহার করুন

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

এই rysnc এর জন্য আপনার কী জুটি সেট আপ করতে আপনার উত্স মেশিনে নিম্নলিখিত কমান্ডটি চালান :

> ssh-keygen -t rsa -b 2048 -f ~/.ssh/my-rsync-key 
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase): [press enter here] 
Enter same passphrase again: [press enter here] 
Your identification has been saved in ~/.ssh/my-rsync-key. 
Your public key has been saved in ~/.ssh/my-rsync-key.pub. 
The key fingerprint is: 
2e:28:d9:ec:85:21:e7:ff:73:df:2e:07:78:f0:d0:a0 root@source

> chmod 600 ~/.ssh/my-rsync-key

এই কী-পেয়ারটি কাজ করার জন্য আমাদের সিঙ্ক মেশিনে ~/.ssh/my-rsync-key.pubথাকা ~<remoteuser>/.ssh/authorized_keysফাইলের সামগ্রীগুলি যুক্ত করতে হবে ।

প্রথমে সিঙ্ক মেশিনে ফাইলটি অনুলিপি করুন :

scp ~/.ssh/my-rsync-key.pub remoteuser@sink:~

তারপরে সিঙ্ক মেশিনে এসএসএস করুন এবং মেশিনে নিম্নোক্ত ব্যবহারকারী হিসাবে নিম্নলিখিতটি চালিয়ে কীটি আমদানি করুন :

> if [ ! -d ~/.ssh ]; then mkdir ~/.ssh ; chmod 700 ~/.ssh ; fi
cd ~/.ssh/ 
if [ ! -f authorized_keys ]; then touch authorized_keys ; chmod 600 authorized_keys ; fi 
cat ~/my-rsync-key.pub >> authorized_keys
rm ~/my-rsync-key.pub

আপনার উত্স এবং সিঙ্ক মেশিনগুলির মধ্যে এসএসএস সংযোগটি লক করার বিষয়ে অতিরিক্ত টিপসের জন্য আমি এই পৃষ্ঠাটি একবার দেখার পরামর্শ দিই ।

আপনার উত্স মেশিন থেকে আপনি পরীক্ষা করতে পারেন যে এই সেটআপটি চালিয়ে কাজ করে:

rsync -avz --dry-run -e "ssh -i ~/.ssh/my-rsync-key" /my/tree/ remoteuser@sink:/my/tree

এটি একটি rsync এর শুকনো রান করবে। আপনি যদি rsync কমান্ডটি ফাইলগুলি সংযুক্ত করে এবং তুলনা করতে দেখেন তবে আপনি জানেন যে জিনিসগুলি সঠিকভাবে সেটআপ করা আছে।

এই সাইটে এই সহায়কটির উত্তর হিসাবে প্রদর্শিত একটি LaunchD কনফিগারেশন ফাইল থেকে এই rsync কমান্ড কল করার এখন আমাদের একটি সহজ উপায় প্রয়োজন । যেহেতু আপনি চান এই কলটি একটি দৃop় লুপে ঘটুক, আপনাকে অবশ্যই নিশ্চিত করতে হবে যে আপনার কাছে একই সময়ে আরএসএনসি-র একাধিক কপি চলমান নেই। আপনি একটি মুটেক্স তৈরি করতে পশুপাল ব্যবহার করতে পারেন যা নিশ্চিত করে যে ব্যাশ স্ক্রিপ্টটি সিঙ্গলটন: মেশিনে একবারে এটি প্রতিবার সঞ্চালিত হয়। সুতরাং আমরা ডিস্কে নিম্নলিখিত স্ক্রিপ্ট তৈরি করতে যাচ্ছি:

#!/bin/sh
SINK_INSTANCE=remoteuser@sink
DIR=/my/tree
KEY=~/.ssh/my-rsync-key
LOG = ~/my_rsync.log
LOCK = ~/my_rsync.lock
SOURCE=/my/tree

exec 9>${LOCK}
if ! flock -n 9  ; then
    echo "Another instance of your rsync is already running";
    exit 1
fi

echo "----------" >> ${LOG}
echo `date` >> ${LOG}

rsync -avz --delete -e "ssh -i ${KEY}" \
    ${SOURCE}/ {SINK_INSTANCE}:${SOURCE} 2>&1 >> ${LOG}

হিসাবে সংরক্ষণ করুন ~/my_rsync.sh

এই স্ক্রিপ্টটি আপনার জন্য rsync করার যত্ন নেবে। আপনাকে এখন যা করতে হবে তা লঞ্চডি এর মাধ্যমে সেট আপ করা এবং এটি একটি শক্ত লুপে চালিত করা উচিত। এখান থেকে দিকনির্দেশগুলি অনুসরণ করে এবং আমাদের চাহিদা পূরণের জন্য এটি সংশোধন করে আমরা ~/Library/LaunchAgents/my-rsync.plistএকটি পাঠ্য সম্পাদক তৈরি করতে এবং সামগ্রীগুলি তৈরি করতে যাচ্ছি :

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
 "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>My Rsync</string>
    <key>Program</key>
    <string>/bin/sh</string>
    <key>ProgramArguments</key>
    <array>
        <string>sh</string>
        <string>-c</string>
        <string>while sleep 5s; /Users/my/my_rsync.sh; done</string>
    </array>
    <key>ServiceDescription</key>
    <string>Keep /my/tree synchronized with the machine sink</string>
    <key>KeepAlive</key>
    <true/>
</dict>
</plist>

এটি জিনিস যত্ন নেওয়া উচিত।

সাধারণ সতর্কতা প্রয়োগ হয়: আমি এটিকে স্মৃতি থেকে লিখেছিলাম এবং এটি পরীক্ষা করি নি। সুতরাং অন্ধভাবে অনুসরণ করবেন না। পথে সাবধানে পরীক্ষা। যখনই আপনি সন্দেহ করছি ব্যবহার --dry-runrsync বিকল্পটি। এটি আসলে কিছু না করে এটি কী করে তা মুদ্রণ করবে


2

rsyncপ্রতি 5 সেকেন্ড চলার পরিবর্তে , আপনি ডিরেক্টরি ট্রি দেখতে lsyncd ডিমন ব্যবহার করতে পারেন।

এটি ওএস এক্স এর মাধ্যমে কাজ করে /dev/fseventsতবে আমার কাছে প্লাগইন প্রস্তুত .debফাইল নেই। এটি সংকলিত এবং ইনস্টল করার জন্য এটি কিছুটা মজাদার। আমি 2.0.0 সংস্করণ প্রকাশ না করা (শীঘ্রই) আমি জিআইটি হেড ব্যবহার করার পরামর্শ দিচ্ছি, যেহেতু lsyncd 2.0.5 কিছু পরিচিত ওএস এক্স বাগ পেয়েছে।


আমি সবেমাত্র একটি ওএসএক্সের স্থির সংস্করণ প্রকাশ করেছি। কিছু না হলেও সম্ভবত 5 সেকেন্ডে কিছু চালিয়ে রিসোর্সগুলি নষ্ট করার চেয়ে ভিন্ন, Lsyncd কেবল তখনই কিছু ঘটেছে যখন rsync কল করবে।
axkibe

1

আরএসসিএনসি এটির জন্য দুর্দান্ত সরঞ্জাম হবে এবং এটি ম্যাক ওএসে অন্তর্নির্মিত। এটি দুটি অবস্থানের মধ্যে পার্থক্য পরীক্ষা করবে এবং তারপরে কেবল নেটওয়ার্ক জুড়ে বদ্বীপের পরিবর্তনগুলি অনুলিপি করবে। কোনও অতিরিক্ত পতাকাবিহীন আরএসসিএনসি ঠিক আপনি যা খুঁজছেন তা করে।

কেবলমাত্র সংযোজন হ'ল পরিবর্তনগুলি পরীক্ষা করতে আপনার প্রতি 5 সেকেন্ড এটি চালানো উচিত। আপনি এই সাইটে ইতিমধ্যে দুর্দান্ত উদাহরণ সহ লঞ্চ ব্যবহার করে এটি করতে পারেন । এই উদাহরণে দেখে মনে হচ্ছে স্ক্রিপ্টটি চলমান রাখা আছে, এবং তারপরে 5 সেকেন্ড ঘুমানো, আবার চালানো।

এটিকে প্রায়শই চালানোর সমস্যাটি হ'ল সরঞ্জামটিও পার্থক্যগুলি পরীক্ষা করতে হবে এবং 5 সেকেন্ডের মধ্যে যদি এতগুলি পরিবর্তন হয় তবে এই পরিবর্তনগুলি রেকর্ড করতে ও সেগুলি স্থানান্তর করতে ওভারহেডটি 5 সেকেন্ডেরও বেশি সময় নিতে পারে।


0

ফোল্ডারওয়াচ একটি অ্যাপস্টোর কেবল $ 11.99 বাণিজ্যিক বিকল্প। বাহ্যিক ড্রাইভ এবং এএফপি ফাইল সার্ভারগুলিতে রিয়েল-টাইমে এইচএফএস-প্লাস ফর্ম্যাট করা ভলিউমের ফোল্ডারওয়াচ সিঙ্ক (আয়না)। http://itunes.apple.com/us/app/folderwatch/id408224368?mt=12


0

আমি ফোল্ডারসিঙ্ক (8.99 অ্যাপ স্টোর) ব্যবহার করেছি এবং এটি সত্যিই পছন্দ করি। দুটি প্যানে সিঙ্ক্রোনাইজ করা ব্রাউজিং সহ দুর্দান্ত ইউআই। আপনাকে পুনরায় ব্যবহারের জন্য একটি সিঙ্ক জব সংরক্ষণ করতে অনুমতি দেয়।

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