خانه » سیستم عامل » لینوکس » Rsync چیست و 10 کامند پرکاربرد دستور rsync

Rsync چیست و 10 کامند پرکاربرد دستور rsync

با مرتضی
12 دقیقه زمان خواندن

Rsync یک لغت دو بخشی مختصر شده از لغت Remote Sync است یکی از ابزارهای کاربردی برای کپی، سینک فایل‌ها و دایرکتوری‌ها و بک آپ گیری بر روی خود سرور، سرور راه دور یا دستگاه‌های تحت شبکه در سیستم عامل‌های لینوکس/یونیکس می‌باشد که تقریبا در تمام توزیع‌ها یا به صورت پیش‌فرض وجود دارد یا به راحتی قایل نصب بوده و کامند‌های استفاده از آن در تمامی توزیع‌ها یکسان است.

کاربرد و ویژگی rsync

  • کاربرد rsync برای کپی و سینک فایل‌ها و دایکتوری‌ها از یک سرور راه دور
  • پشتیبانی از کپی تمامی انواع فایل حتی دستگاه‌ها(Device) و همچنین مشخصه های آن‌ها از جمله گروه، تاریخ، مجوز‌ها و دارنده(owner) کاربرد rsync برای کپی و سینک فایل‌ها و دایکتوری‌ها از یک سرور راه دور
  • سریعتر از SCP (Secure Copy) عمل می‌کند چرا که از پروتکل بروزرسانی از راه دور (remote-update) پشتیبانی می‌کند که این پروتکل امکان تشخیص تغییرات فایل‌ها در مبدأ کپی را می‌دهد و به این ترتیب rsync می‌تواند تنها فایل‌هایی را که دچار تغییر شده‌اند کپی کند که این موضوع باعث افزایش سرعت و همچنین صرفه جویی مصرف منابع سخت افزاری و ترافیک شبکه می‌شود.
  • rsync باعث کاهش مصرف پهنای باند می‌شود چرا که از روش فشرده سازی در مبدأ نیز استفاده می‌کند.
  • امکان کپی/سینک ایمن بر روی پروتکل SSH

بالاتر به صورت موردی به ویژگی‌های rsync اشاره کردیم اما به صورت مختصر یکی از جذابترین ویژگی rsync سینک و پشتیانی آن از پروتکل Remote-update است که در بک آپ گیری از سرورهای با حجم بالا یا تعداد فایل زیاد و همچنین انتقال اینگونه سرورها بسیار کاربردی است.

دستورات پایه rsync

-v شفاف سازی اطلاعات نمایشی در خروجی دستور

 -r تودرتو (recursive) کپی تودرتوی فایل‌ها اما بدون حفظ و نگهداری اطلاعات زمانی و مجوزها

-a حالت آرشیو، حالت آرشیو علاوه بر کپی تودرتو تمامی خصوصیات فایل‌ها و همچنین symlink ها را نیز حفظ میکند

-z فشرده‌سازی اطلاعات 

-h تبدیل اعداد به فرمت قابل خواندن (human-readable)

-W غیر فعالسازی قابلیت سینک بایت به بایت و تغییرات بلاک

نصب rsync در Centos/fedora/debian/ubuntu

برای نصب rsync یکی از کامنت‌های زیر را متناسب با سیستم عامل خود در SSH وارد کنید.

#centos 6 & centos 7
yum -y install rsync
#centos 8 & fedora
dnf -y install rsync
#debian & ubuntu
apt-get -y install rsync

10 کامند پرکاربرد rsync

در ادامه مطلب سعی کردیم به چند کامند کاربردی rsync بپردازیم که می‌توانید بسته به نیاز خود از آن‌ها استفاده کنید.

1 – کپی/سینک فایل و دایرکتوری در سرور محلی

1-1. کپی یک فایل به مسیر دیگر در سرور محلی

با استفاده از کامند زیر میتوانید یک فایل را در سرور خود از یک محل به محل دیگری کپی کنید. در مثال زیر فایل user-backup.tar.gz را از محل خود به دایرکتوری /tmp/backup کپی می‌کنیم.

rsync -zvh user-backup.tar.gz /tmp/backups/

در مثال بالا اگر مسیر /tmp/backups وجود نداشته باشد به صورت خودکار ایجاد و سپس فایل کپی خواهد شد.

2-1. کپی یک دایرکتوری به محل دیگر در سرور محلی

کامند rsync زیر دایرکتوری /root/rpmpkgs در سرور شما را به همراه تمام فایل‌های درون آن را در /tmp/backups کپی می‌کند.

rsync -avzh /root/rpmpkgs /tmp/backups/

2- کپی/سینک یک فایل یا دایرکتوری از یا به یک سرور دیگر

2-1. کپی/سینک یک دایرکتوری از سرور محلی به یک سرور راه دور

این کامند دایرکتوری مورد نظر شما را از روی سرور محلی شما با دایرکتوری مورد نظر در سرور ریموت(راه دور) سینک می‌کند.

در مثال زیر یک دایرکتوری با نام users در سرور خود داریم که قصد داریم تمام محتویات داخل آن را به یک سرور ریموت ارسال کنیم.

rsync -avz /home/users [email protected]:/home/

2-2. کپی/سینک یک دایرکتوری از سرور راه دور به سرور محلی 

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

در مثال زیر قصد داریم با استفاده از وارد کردن دستور زیر دایرکتوری /home/user در سرور دیگری را به مسیر /home سرور خود کپی کنیم

rsync -avzh [email protected]:/home/user /home/

3 – Rsync بر روی SSH

با استفاده از rsync برای انتقال داده‌ها می‌توانیم از پروتکل SSH نیز استفاده کنیم، همانطور که می‌دانید داده‌های در حال انتقال توسط این پروتکل کدگذاری می‌شوند تا در مسیر انتقال بروی اینترنت یا شبکه توسط هیچکس قابل شنود و کنترل نباشند.

همچنین زمانی که از rsync بر روی SSH استفاده می‌کنیم پسورد user/root وارد شده نیز کدگذاری شده و به این ترتیب پسورد سرور نیز ایمن خواهد ماند.

3-1. کپی/سینک یک فایل با rsync بر روی SSH از یک سرور ریموت به سرور محلی

در مثال زیر با استفاده از rsync بر روی پروتکل SSH یک فایل بر روی سرور دیگری را به سرور خود کپی می‌کنیم.

rsync -avzhe ssh [email protected]:/home/backup.tar /home/
 

3-2.کپی/سینک یک فایل با rsync بر روی SSH از سرور خود (سرور محلی) به سرور ریموت

در مثال زیر با استفاده از rsync بر روی پروتکل SSH یک فایل را از سرور خود به سرور دیگر کپی می‌کنیم.

rsync -avzhe ssh /home/backup.tar [email protected]:/home/

4 – نمایش وضعیت پیشرفت (progress) در حین انتقال اطلاعات با استفاده از rsync 

برای نشان دادن پیشرفت هنگام انتقال داده‌ها از یک سرور به سرور دیگر ، می توانیم از گزینه --progress برای آن استفاده کنیم. این گزینه پرونده‌ها و زمان باقی مانده برای تکمیل انتقال را به ما نشان خواهد داد.

نحوه استفاده از این گزینه را در مثال زیر می‌توانید مشاهده کنید.

rsync -avzhe ssh --progress /home/rpmpkgs [email protected]:/root/rpmpkgs

5 – استفاده از گزینه شامل شدن یا شامل نشدن در rsync

rsync این امکان را برای شما فراهم می‌کند تا بتوانید فایل‌ها یا دایرکتوری‌هایی که دارای خصوصیات مورد نظر شما هستند را در انتقال فاکتور گرفته یعنی منتقل نکنید یا فقط فایل‌ها یا دایرکتوری‌هایی که دارای خصوصیات دلخواه شما هستند را انتقال دهید. برای مثال اگر می‌خواهید فقط فایل‌هایی با فرمت .sql را کپی/سینک کنید یا قصد دارید تمامی فایل‌های یک دایرکتوری بجز فایل‌های دارای فرمت .log را کپی/سینک کنید با استفاده از دو گزینه --include و --exclude این امکان در اختیار شما قرار دارد و همچنین میتوانید از این دو گزینه به طور همزمان نیز استفاده کنید، برای درک بهتر این مطلب به مثال زیر توجه کنید.

در مثال زیر قصد داریم در دایرکتوری /home/user تمامی فایل‌هایی که نام آن‌ها با حرف R آغاز می‌شوند را کپی کنیم و علاوه بر آن قصد انتقال فایل‌هایی که با نام آن‌ها با g به اتمام می‌رسند را نیز نداریم، برای این منظور از دستور زیر استفاده می‌کنیم. 

rsync -avze ssh --include 'R*' --exclude '*g' [email protected]:/home/user/ /home/user/

6 – استفاده از گزینه حذف –delete

اگر قصد داشته باشید فایل‌های موجود در مبدا انتقال را که در مقصد وجود ندارند حذف کنید می‌توانید از گزینه --delete استفاده کنید، در مثال زیر یک فایل با نام test.txt در سرور خود ایجاد میکنیم و سپس اقدام به سینک همین دایرکتوری با یک سرور ریموت می‌کنیم با توجه به اینکه فایل test.txt در سرور مقصد ما وجود ندارد این فایل در سرور ما حذف خواهد شد.

با استفاده از این گزینه فایل‌های سرور ما تماما با فایل‌های سرور ریموت سینک (همسان) خواهند شد.

cd /var/lib/rpm/
touch test.txt
rsync -avz --delete [email protected]:/var/lib/rpm/ /var/lib/rpm

نتیجه تست بالا به شکل زیر خواهد بود 

سینک دو دایرکتوری توسط rsync

7 – مشخص کردن حداقل و حداکثر حجم فایل برای کپی/سینک

شما می‌توانید با استفاده از گرینه --max-file و --min-file در کامند rsync فقط فایل‌های در این بازه را سینک یا کپی نمایید، از این گزینه می‌توان به صورت همزمان و یا یکی از آن‌ها استفاده کنید، در مثال زیر فقط فایل‌هایی که حداکثر 300 کیلوبایت هست را کپی/سینک می‌کنیم. 

rsync -avzhe ssh --max-size='300k' /home/user/ [email protected]:/home/user/

8 – حذف فایل در مبدأ پس از کپی/سینک موفق با rsync

سناریویی را تصور کنید که شما یک سرور میزبانی برای سایت خود دارید که به صورت روزانه از آن بک آپ تهیه می‌کنید و قصد دارید پس از انتقال این بک آپ به سرور ذخیره‌سازی خود فایل بک آپ را از سرور میزبانی حذف کنید rsync این امکان را برای شما فراهم می‌کند تا با استفاده از گزینه --remove-source-files پس از انتقال فایل بک آپ این فایل را از روی سرور میزبانی خود حذف کنید. 

شاید در وهله اول اهمیت این گزینه را به خوبی درک نکنید اما نکته اول اینکه rsync قطعا تا زمان انتقال کامل و صحیح فایل به سرور بک  آپ آن را حذف نخواهد کرد و نکته دوم اینکه شما میتوانید از این کامند در یک فایل بش استفاده کنید و کل این عملیات را به صورت خودکار مدیریت کنید. 

rsync --remove-source-files -avzhe ssh backup.tar [email protected]:/backups/

9 – آزمایش کامند قبل از اجرای واقعی

اگر برای اجرای یک کامند rsync مردد هستید و قصد دارید قبل از اجرای عملیاتی آن از نتیجه دستور اطمینان حاصل کنید می‌توانید از گزینه --dry-run استفاده کنید، این کامند بدون اینکه فایلی جابجا یا حذف کند نتیجه خروجی دستور شما را نمایش خواهد داد تا پس از اطمینان گزینه --dry-run را حذف و با اطمینان کامل دستور خود را اجرا کنید. 

نحو استفاده از این گزینه را می‌توانید در مثال زیر مشاهده کنید.

rsync --dry-run --remove-source-files -zvh backup.tar /tmp/backups/

10 – قرار دادن محدودیت سرعت 

با استفاده از گزینه --bwlimit می‌توانید هنگام انتقال اطلاعات بین دو سرور محدودیت سرعت انتقال را اعمال کنید، با این گزینه قادر خواهید بود بر روی سرعت دریافت و ارسال محدودیت اعمال کنید. 

همانند مثال‌های بالاتر استفاده از این گزینه هم مشابه موارد قبل و به شکل زیر خواهد بود.

rsync --bwlimit=100 -avzhe ssh  /home/user/  [email protected]:/home/user

نکته آخر در خصوص گزینه -W یا –whole-file

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

rsync -zvhW backup.tar /tmp/backups/backup.tar

سوالات متداول در خصوص rsync

rsync چیست و کاربرد کلی آن چیست ؟

یکی از ابزارهای کاربردی برای کپی، همسان‌سازی فایل‌ها و دایرکتوری‌ها و بک آپ گیری بر روی خود سرور، سرور راه دور یا دستگاه‌های تحت شبکه در سیستم عامل‌های لینوکس/یونیکس می‌باشد.

سینک به چه معناست ؟

کلمه سینک (sync) به طور کلی به معنی همسان‌سازی است. همسان‌سازی یا همانند ساختن را می‌توان به عنوان بهترین معنای این کلمه باشد.

آیا با استفاده از rsync می‌توانیم دو وب سایت را با هم در دو سرور مختلف سینک کنیم ؟

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

rsync برای بک آپ گیری چه کارایی دارد ؟

این کامند بسیار کارامد در زمیه بک آپ گیری از اطلاعات است، با استفاده از این کامند شما قادر هستید به سادگی از سایت و اطلاعات سینگین سرور خود بک آپ گیری کنید.

شاید خوشتون بیاد

2 نظر

حامد 21/12/2019 - 03:35

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

پاسخ
نعیمه 21/12/2019 - 03:40

⁦(◔‿◔)⁩ چقد این rsync خوبه واسه بک آپ کلی هزینه ترافیک ماهانم کم میشه چون من از بک آپ خود کنترل پنل استفاده میکردم هر روز حدود ۴۰ گیگ مصرف میشد تا ارسال بشه به سرور بک آپ اما الان از این استفاده کردم فقط ۵۰ مگ شد که اونم فایلای جدیدی بود که اضافه کرده بودیم به سایت
عالی بود این آموزش

پاسخ

یک نظر بذارید

با استفاده از فرم نظرات استفاده از کوکی‌ها را می‌پذیرید

مدیران هاست ارائه دهنده انواع خدمات هاست، سرور و دامنه