منبع اصلی نوشتار زیر در این لینک قرار دارد

همگام سازی فایل ها میان دو ماشین لینوکسی

فرض کنید تعدادی فایل دارید که میان دو ماشین (سرور) لینوکسی تکرار (Replicate) شده اند و این فایل ها مستقل از هم تغییر می کنند و می خواهید تغییر بر روی یکی، بر روی ماشین دیگری هم خودکار انجام شود. برای این کار می توان از ابزار های rsync یا duplicati استفاده کرد. اما این ابزار ها یک طفه هستند و ما نیاز داریم تا تغییرات بصورت دو طرفه از هر ماشینی به ماشین دیگر اعمال شود.Unison ابزاریست اپن سورس که امکان همگام سازی دو طرف را فراهم می کند و قابل نصب و استفاده بر روی Linux/FreeBSD/Mac OS X و Window می باشد. در این مطلب چگونگی نصب و پیاده سازی آن در دو ماشین لینوکسی گفته خواهد شد.

Unison می تواند در مواردی مانند زیر مفید خواهد بود.

  • ایجاد پشتیبان
  • ایجاد کلاسترینگ برای وب سرور
  • ایجاد همگام سازی میان فایل های اداره (سازمان-دفتر کار) و خانه

نصب در توزیع های RHLE/CentOS/Fedora

yum install unison

نصب در توزیع های Ubuntu/Debian

apt-get install unison

دو ماشین داریم به آدرس های 192.168.244.130 و 192.168.244.131 در یک شبکه LAN. باید در هر دو ماشین Unison را نصب کنیم و سپس در هر دو ماشین تنظیماتی را در غالب ایجاد پروفایل.

ایجاد پروفایل

  • نخستین گامی که باید بر روی هر دو ماشین انجام دهید، ایجاد Unison profile است. Unison profile یک فایل متنی با پسوند prf بوده که تنظیمات Unison می باشد. فایل پروفایل را می توان در هر جایی از ماشین ایجاد کنید اما باید متغیری ایجاد کنیم که مسیر فایل را نگه داری کنید. اما اگر متغیر را تعریف نکنید، Unison در زیر دایرکتوری  HOME/.unison$ به دنبال آن می گردد. اگر دایرکتوری unison ایجاد نشده است پس زیر دایرکتوری خانگی root دایرکتوری را ایجاد کنید.

mkdir ~/.unison

  • گام دوم ایجاد کردن پروفایل می باشد.

touch unison.prf

  • باید در هر ماشین، یک پروفایل ایجاد کنید که شامل دو root Directory است

یکی root directory محلی، یعنی همان دایرکتوری که می خواهد با ماشین با ماشین دیگر sync شود و remote directory که تعیین کننده دایرکتوری راه دورری است که باید با این ماشین همگام شود. با تعیین این دو دایرکتوری، همگام سازی دو طرفه اتفاق می افتد. برای تعیین دایرکتوری محلی از پارامتر root بصورت زیر استفاده کنید.

root = /path/to/directory

برای تعیین دایرکتوری راه دور نیز باید از پارامتر root استفاده کنید با این تفاوت که از ssh یا rsh که مخفف remote shell است برای اتصال به ماشین راه دور و طبیعتن دایرکتوری راه دور استفاده کنید. فرمت های زیر شکل استفاده را نشان می دهد.

SSH

root = ssh://user@remote_host//absolute/path/to/root

root = ssh://user@remote_host/relative/path/to/root

RSH

root = rsh://user@remote_host//absolute/path/to/root

root = rsh://user@remote_host/relative/path/to/root

  • فایلی به نام unison130.prf بر روی ماشین 192.168.244.130 و فایلی به نام unison131.prf بر روی ماشین 192.168.244.131 ایجاد می کنیم.

vi ~/.unison/unison130.prf

و سپس پارامتر های زیر را در آن وارد می کنیم :

root = /home/amirnami/sync_file

root = ssh://[email protected]//home/amirnamipc2/sync_file

دو خط بالا در پروفایل ماشین 192.168.244.30 نشان می دهد که فایل های درون دایرکتوری home/amirnami/sync_file با فایل های دایرکتوری home/amirnamipc2/sync_file/  در ماشین 192.168.244131 باید همگام شوند. از نام کاربری amirnamipc2 برای اتصال به ماشین 192.168.244.131 استفاده کرده ایم.

تمامی گام های بالا را برای ماشین 192.168.244.131 انجام می دهیم. یعنی ایجاد دایرکتوری unison در صورتی که وجود ندارد و ایجاد یک پروفایل به نام unison131.prf و سپس تعیین پارامتر های root بصورت زیر.

root = /home/amirnamipc2/sync_file

root = ssh://[email protected]//home/amirnami/sync_file

  • پس از انجام گام های بالا و اطمینان از درستی تنظیمات پروفایل، باید دستور زیر را در هر ماشین اجرا کنید تا عملیات همگام سازی انجام گیرد.

unison PROFILE_NAME.prf

یعنی اگر می خواهید فایل های محلی ماشین 192.168.244.130 با ماشین 192.168.244.131 همگام شود دستور زیر را استفاده کنید

unison unison130.prf

آزمایش عملکرد Unison

در ماشین 192.168.244.130 در زیر دایرکتوری home/amirnami/sync_file/ فایل های و دایرکتوری زیر را بسازید. نخستین 1 در نامگذاری یعنی ماشین 1

cd /home/amirnami/sync_file

touch file1-1 file1-2

mkdir 1-1

در ماشین 192.168.244.131 در زیر دایرکتوری home/amirnamipc2/sync_file/ فایل های و دایرکتوری زیر را بسازید. نخستین 2 در نامگذاری یعنی ماشین 2

cd /home/amirnami/sync_file

touch file2-1 file2-2

mkdir dir2-1

سپس در ماشین 192.168.244.130 دستور زیر را اجرا کنید.

unison unison130.prf

پس از اجرای دستور بالا yes را در جلوی خط زیر وارد کنید.

Are you sure you want to continue connecting (yes/no)? yes

و مطابق با خط زیر باید پسورد کاربر راه دور را وارد کنید.

[email protected]′s password

مطابق شکل بالا جلوی قسمت مشخص شده با رنگ آی Enter بزنید. پس از Enter مانند شکل زیر نوبت به رد و بدل فایل ها/دایرکتوری ها میان دو سیستم می شود. تنها کافیست پشت سر هم Enter بزنید. مطابق شکل زیر و کادر آبی رنگ، فایل ها/دایرکتوری ها میان ماشین local (یعنی 192.168.244.130) و ماشین با hostname=ubuntupc در حال رد و بدل شدن است که فقط باید پشت سر هم Enter بزنید.

اگر در زیر هر کدام از دایرکتوری ها (یعنی sync_file در ماشین 192.168.244.130 یا در ماشین 192.168.244.131) نگاه کنید تمامی فایل ها در هر ماشین وجود دارد.



برچسب ها : , , , , ,