Rsync یک لغت دو بخشی مختصر شده از لغت Remote Sync است یکی از ابزارهای کاربردی برای کپی، سینک فایلها و دایرکتوریها و بک آپ گیری بر روی خود سرور، سرور راه دور یا دستگاههای تحت شبکه در سیستم عاملهای لینوکس/یونیکس میباشد که تقریبا در تمام توزیعها یا به صورت پیشفرض وجود دارد یا به راحتی قایل نصب بوده و کامندهای استفاده از آن در تمامی توزیعها یکسان است.
فهرست مطلب
- کاربرد و ویژگی rsync
- 10 کامند پرکاربرد rsync
- 1 – کپی/سینک فایل و دایرکتوری در سرور محلی
- 2- کپی/سینک یک فایل یا دایرکتوری از یا به یک سرور دیگر
- 3 – Rsync بر روی SSH
- 4 – نمایش وضعیت پیشرفت (progress) در حین انتقال اطلاعات با استفاده از rsync
- 5 – استفاده از گزینه شامل شدن یا شامل نشدن در rsync
- 6 – استفاده از گزینه حذف –delete
- 7 – مشخص کردن حداقل و حداکثر حجم فایل برای کپی/سینک
- 8 – حذف فایل در مبدأ پس از کپی/سینک موفق با rsync
- 9 – آزمایش کامند قبل از اجرای واقعی
- 10 – قرار دادن محدودیت سرعت
- نکته آخر در خصوص گزینه -W یا –whole-file
- سوالات متداول در خصوص rsync
کاربرد و ویژگی 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
نتیجه تست بالا به شکل زیر خواهد بود

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
یکی از ابزارهای کاربردی برای کپی، همسانسازی فایلها و دایرکتوریها و بک آپ گیری بر روی خود سرور، سرور راه دور یا دستگاههای تحت شبکه در سیستم عاملهای لینوکس/یونیکس میباشد.
کلمه سینک (sync) به طور کلی به معنی همسانسازی است. همسانسازی یا همانند ساختن را میتوان به عنوان بهترین معنای این کلمه باشد.
پاسخ این سوال قطعا مثبت است با استفاده از کامندهای موجود در این مقاله شما خواهید توانست به سادگی وب سایت خود را همزمان بر روی دو سرور میزبانی کنید و نگران هیچ چیز در خصوص سینک اطلاعات نباشید.
این کامند بسیار کارامد در زمیه بک آپ گیری از اطلاعات است، با استفاده از این کامند شما قادر هستید به سادگی از سایت و اطلاعات سینگین سرور خود بک آپ گیری کنید.
2 نظر
آموزش خیلی کامل و عالی بود لطفا آموزش کامل برای سینک کردن یه سایت داخل دو تا سرور را هم قرار بدید
(◔‿◔) چقد این rsync خوبه واسه بک آپ کلی هزینه ترافیک ماهانم کم میشه چون من از بک آپ خود کنترل پنل استفاده میکردم هر روز حدود ۴۰ گیگ مصرف میشد تا ارسال بشه به سرور بک آپ اما الان از این استفاده کردم فقط ۵۰ مگ شد که اونم فایلای جدیدی بود که اضافه کرده بودیم به سایت
عالی بود این آموزش