چگونه از rsync برای همگام سازی (Sync ) دایرکتوریهای Remote و Local بر روی یک VPS استفاده کنیم:

مقدمه :

Rsync که پایه و اساس remote sync است، یک ابزار برای همگام سازی فایل های Local و Remote می باشد. با استفاده از این الگوریتم مقدار اطلاعات کپی شده تنها با حرکت بخش هایی از فایلهایی که تغییر کرده اند به حداقل می رسد. در این مقاله کاربردهای اساسی این ابزار سودمند را ارائه می دهیم. ما در این مثال ها از سرور مجازی Ubuntu 12.04 استفاده میکنیم اما شما می توانید از هر توزیع لینوکس استفاده کنید.


Rsync چیست؟

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

هنگامی که ما در این مقاله به Rsyns رجوع می کنیم درواقع به سودمندی این ابزار اشاره می کنیم نه پروتکل.

با توجه به اینکه لینوکس و سیستم های Unix-like در همه جا حضور دارند و بعنوان یک ابزار دارای اسکریپت سیستم ، محبوبیت بسیاری دارند باعث شده که این مورد در اکثر توزیع های لینوکس بصورت پیش فرض قرار داده شود.


Basic Syntax :

سوئیچ های پایه ای Rsync بسیار ساده می باشند و اجرای آنها شبیه به ssh, scp, و cp می باشد.

ما می خواهیم دو دایرکتوری برای تست ایجاد کنیم و با دستورات زیر برخی از فایلها را تست کنیم :

cd ~ mkdir dir1 mkdir dir2 touch dir1/file{1..100}

درحال حاضر ما یک دایرکتوری به نام dir1 با 100 فایل خالی درون آن داریم.

ls dir1 file1 file18 file27 file36 file45 file54 file63 file72 file81 file90 file10 file19 file28 file37 file46 file55 file64 file73 file82 file91 file100 file2 file29 file38 file47 file56 file65 file74 file83 file92 file11 file20 file3 file39 file48 file57 file66 file75 file84 file93 file12 file21 file30 file4 file49 file58 file67 file76 file85 file94 file13 file22 file31 file40 file5 file59 file68 file77 file86 file95 file14 file23 file32 file41 file50 file6 file69 file78 file87 file96 file15 file24 file33 file42 file51 file60 file7 file79 file88 file97 file16 file25 file34 file43 file52 file61 file70 file8 file89 file98 file17 file26 file35 file44 file53 file62 file71 file80 file9 file99

ما همچنین یک دایرکتوری خالی به نام dir2 داریم.

برای یکی کردن محتویات dir1 به dir2 در همان سیستم دستور زیر را تایپ کنید:

rsync -r dir1/ dir2

گزینه r- بر ای تمامی زیرپوشه ها نیزعمل می کند و برای یکی کردن دایرکتوری لازم است.

همچنین می توانیم از سوئیچ a- به جای آن استفاده کنیم.

rsync -a dir1/ dir2

گزینه a- یک سوئیچ ترکیبی است.

این یک پایه برای archive و همگام سازی بصورت بازگشتی و حفظ لینک های نمادین ، فایلهای دستگاه و خاص، زمان ویرایش، گروه ، مالک و سطح دسترسی می باشد.

به همین دلیل معمولا از r- استفاده می شود و این چیزی است که معمولا شما می خواهید استفاده کنید.

یک نکته مهم :

ممکن است که متوجه شده باشید که یک / در پایان اولین آرگومان در دستورات بالا وجود دارد.

rsync -a dir1/ dir2

این کار لازم است و به معنی محتویات درون dir1 می باشد.

در موارد جایگزین ، بدون / باید مکان dir1 ، محتوی دایرکتوری درون dir2 باشد. به اینصورت سلسله مراتبی ایجاد می شود که مانند زیر بنظر می رسد:

~/dir2/dir1/[files]

همیشه آرگومانها را قبل از اجرای یک دستور rsync مجددا چک کنید.

Rsync با عبور از گزینه های n- یا dir- روشهایی برای انجام این کار فراهم می کند. سوئیچ v- برای دریافت خروجی مناسب است.

rsync -anv dir1/ dir2 sending incremental file list ./ file1 file10 file100 file11 file12 file13 file14 file15 file16 file17 file18 . . .

این خروجی را با خروجی که هنگام حذف / بدست می آورید مقایسه کنید.

rsync -anv dir1 dir2 sending incremental file list dir1/ dir1/file1 dir1/file10 dir1/file100 dir1/file11 dir1/file12 dir1/file13 dir1/file14 dir1/file15 dir1/file16 dir1/file17 dir1/file18 . . .

در اینجا می بینید که دایرکتوری هایتان منتقل شدند.


چگونه از rsync برای همگام سازی یک Remote system استفاده کنیم؟

همگام سازی به یک Remote system بسیار واضح و بدیهی می باشد اگر دسترسی SSH به یک remote machine داشته باشید و Rsync درهر دو سمت نصب شده باشد. اگر نیاز به راه اندازی کلید SSH دارید set up SSH keys را کلیک کنید.

هنگامی که شما دسترسی SSH بین دو ماشین دارید، می توانید قبل از remote computer با استفاده از syntax همگام سازی کنید. ( توجه داشته باشید که ما می خواهیم دایرکتوری های واقعی را در این مورد انتقال دهیم، بنابراین / را حذف می کنیم.)

rsync -a ~/dir1 username@remote_host:destination_directory

این کار Push عملیات نامیده می شود چون دایرکتوری را از یک سیستم Local به یک Remote سیستم فشار(Push) می دهد.

pull" عملیات مخالف با Push است. عمل Pull برای همگام سازی یک دایرکتوری از Remote سیستم به یک سیستم Local است. اگر dir1 به جای سیستم Local بر روی Remote سیستم قرار داشته باشد Syntax بصورت زیر می باشد:

rsync -a username@remote_host:/home/username/dir1 place_to_sync_on_local_machine
مانند CP و ابزارهای مشابه، اولین آرگومان بعنوان مبدا و دومین آرگومان مقصد می باشد.

گزینه های مفید برای Rsync :

Rsync گزینه های بسیاری برای تغییر رفتار پیش فرض ارائه می کند. ما در حال حاضر در مورد بعضی از پرچم های ضروری گفتگو میکنیم.

اگر شما درحال انتقال فایلهایی هستید که فشرده شده نیستند، مانند فایلهای متنی، می توانید با اضافه کردن گزینه z- فایلها را فشرده کنید و انتقال را کاهش دهید.

rsync -az source destination

سوئیچ p- خیلی مفید است. این سوئیچ ترکیب سوئیچ های progress -- و partial -- می باشد. اولین مورد پیشرفت انتقال را نشان می دهد و دومی به شما اجازه می دهد تا انتقال قطع شده را مجددا ارسال کنید.

rsync -azP source destination sending incremental file list ./ file1 0 100% 0.00kB/s 0:00:00 (xfer#1, to-check=99/101) file10 0 100% 0.00kB/s 0:00:00 (xfer#2, to-check=98/101) file100 0 100% 0.00kB/s 0:00:00 (xfer#3, to-check=97/101) file11 0 100% 0.00kB/s 0:00:00 (xfer#4, to-check=96/101)

اگر دستور را دوباره اجرا کنیم خروجی کوتاهتری خواهیم داشت چون هیچ تغییری ایجاد نشده است.

این مورد قابلیت rsync را بیان می کند که با استفاده از تاریخ تغییر فایلها بتواند مشخس کند که آیا تغییراتی بر روی فایلها اعمال شده است یا نه.

rsync -azP source destination sending incremental file list sent 818 bytes received 12 bytes 1660.00 bytes/sec total size is 0 speedup is 0.00

ما می توانیم زمان اصلاح را در برخی از فایلها بروزرسانی کنیم و می بینیم که Rsync هوشمندانه فایلهای تغییر یافته را مجددا کپی می کند.

touch dir1/file{1..10} rsync -azP source destination sending incremental file list file1 0 100% 0.00kB/s 0:00:00 (xfer#1, to-check=99/101) file10 0 100% 0.00kB/s 0:00:00 (xfer#2, to-check=98/101) file2 0 100% 0.00kB/s 0:00:00 (xfer#3, to-check=87/101) file3 0 100% 0.00kB/s 0:00:00 (xfer#4, to-check=76/101) . . .

به منظور اینکه هر دو دایرکتوری که بدرستی همگام شده را حفظ کنیم، اگر این فایلها از منبع حذف شده باشند لازم است که فایلها را از دایرکتوری مقصد حذف کنیم. Rsync بطور پیش فرض هیچ فایلی را از دایرکتوری مقصد حذف نمی کند.
ما می توانیم این رفتار را با گزینه delete - تغییر دهیم. قبل از استفاده از این گزینه از گزینه dry --run- استفاده کنید و این تست را برای آزمایش از دست دادن اطلاعات انجام دهید.

rsync -a --delete source destination

اگر مایل به حذف فایلهای خاص یا دایرکتوری واقع در دایرکتوری که درحال همگام سازی آن هستید می توانید بعد از گزینه --exclude= آنها را در یک لیست با کاما از هم جدا کنید.
rsync -a --exclude=pattern_to_exclude source destination

اگر ما یک الگوی مشخص برای حذف کردن داشته باشیم ، می توانیم برای فایلهایی که با الگوی متفاوت مطابق هستند با استفاده از گزینه --include= استثنا ایجاد کنیم.

rsync -a --exclude=pattern_to_exclude --include=pattern_to_include source destination


نتیجه :

Rsync می تواند به سادگی فایلهای شما را بر روی بستر شبکه منتقل کند و همچنین با قدرت بالا پوشه های موجود بر روی سیستم شما را همگام (sync) کند. انعطاف پذیری Rsync گزینه های خوبی برای عملیات بر روی فایلها سطوح مختلف ایجاد می کند.
منبع مقاله

آیا این پاسخ به شما کمک کرد؟

انجمن پشتیبانی میزبانی زاگریو

انجمن پرسش و پاسخ میزبانی زاگریو
پاسخ به پرسش های شما در زمینه فن آوری اطلاعات و صنعت میزبانی وب

 چاپ این مقاله

خوانده شده

تعیین حداکثر تعداد کلاینت ها برای Apache/Prefork

چگونه حداکثر کلاینت ها را برای Apache/Prefork تنظیم کنیم : اصول اولیه : 1-    تعیین مقدار RAM...

18 دستور برای نظارت بر پهنای باند شبکه در سرور های لینوکسی

نظارت بر شبکه های لینوکسی: این مقاله به برخی از ابزارهای خط فرمان لینوکس اشاره میکند که می...

نحوه پیدا کردن فایلهای حجیم در سرورهای لینوکس از طریق SSH

دستور خاصی جهت پیدا کردن فایلهای حجیم در سیستم عامل های لینوکس وجود ندارد، با این حال شما می...

نحوه حذف مطمئن Kernel های قدیمی چیست؟

مرحله اول ابتدا با دستور زیر Kernel فعال را پیدا کنید: uname -r نمونه خروجی:...

آموزش نصب Apache، MySQL و PHP بر روی سیستم عامل های لینوکس RHEL/CentOS و Fedora

در این مقاله نحوه نصب وب سرور آپاچی (آخرین نسخه)، بانک اطلاعاتی مای اس کیو ال (آخرین نسخه) و پی...

Powered by WHMCompleteSolution