1. Voraussetzungen
برای اجرای rsync بین سیستم محلی و یک سرور راه دور نیاز دارید به:
دو دستگاه: یکی محلی (کامپیوتر شما) و یک سرور لینوکسی (VPS یا سرور اختصاصی)
rsyncنصب شده روی هر دو سیستمدسترسی SSH بین دو سیستم (بهطوری که بتوانید بدون وارد کردن مداوم پسورد، ارتباط برقرار کنید)
کلید عمومی SSH روی سرور مقصد در فایل
authorized_keysقرار داده شده باشد
۲. مفهوم و عملکرد rsync (نسخه تخصصی و قابل فهم برای مبتدی و حرفهای)
rsync یک ابزار خط فرمان قدرتمند در لینوکس است که برای هماهنگسازی (Sync) Und انتقال دادهها بین دو مسیر استفاده میشود؛ چه این مسیرها روی یک سیستم باشند و چه روی دو سرور جداگانه.
اما چرا rsync اینقدر محبوب است؟
به این دلیل که بهجای انتقال کل فایلها، فقط بخشهایی را منتقل میکند که تغییر کردهاند.
rsync دقیقاً چطور کار میکند؟ (فهم ساده و دقیق)
وقتی rsync را اجرا میکنید، این ابزار ابتدا:
ساختار و محتوای دو مسیر (مثلاً پوشه مقصد و پوشه منبع) را با هم مقایسه میکند.
بررسی میکند کدام فایلها جدید هستند، کدام تغییر کردهاند و کدام حذف شده یا تغییر نکردهاند.
بهجای ارسال کل فایل، فقط بخشی از دادهها که تغییر کردهاند را منتقل میکند.
به این تکنیک میگویند:
Delta Transfer Algorithm (الگوریتم انتقال دلتا)
این الگوریتم rsync را بسیار سریع و بهینه میکند، چون:
پهنای باند مصرفی کاهش مییابد
زمان انتقال بسیار کمتر میشود
منابع CPU روی سرور کمتر درگیر میشوند
مثال ساده برای درک بهتر عملکرد rsync
فرض کنید یک فایل ۱ گیگابایتی دارید و فقط ۵ مگابایت آن تغییر کرده است.
ابزارهای معمولی مثل
SCP-1811کل ۱ گیگابایت را دوباره آپلود میکنند.اما rsync فقط همان ۵ مگابایت تغییریافته را ارسال میکند.
این یعنی:
سرعت بیشتر
مصرف اینترنت کمتر
فشار کمتر روی سرور
rsync و سرورها: چرا بهترین ابزار برای مدیریت سرور است؟
وقتی روی یک Server Oder VPS کار میکنید، معمولاً نیاز دارید:
بکاپها را بین دو سرور جابهجا کنید
فایلهای سایت را از سرور فعلی به سرور جدید منتقل کنید
فولدرهای مهم (مثل /var/www) را همیشه سینک نگه دارید
فایلهای حجیم را بدون هدر رفت پهنای باند منتقل کنید
در تمام این موارد، rsync بهترین انتخاب است چون:
انتقال امن با SSH
rsync از پروتکل SSH برای انتقال استفاده میکند، پس:
دادهها رمزنگاری میشوند
نیاز به باز کردن پورتهای اضافی نیست
امنیت ارتباط تضمینشده است
حذف فایلهای اضافی در مقصد
با فلگ --delete میتواند مقصد را دقیقاً مشابه منبع نگه دارد.
قابلیت Resume
اگر حین انتقال اینترنت قطع شود، rsync ادامه فایل را منتقل میکند، نه از صفر.
مناسب برای Automation
بهراحتی در کرانجابها قرار میگیرد و فرآیندهای پشتیبانگیری خودکار را ایجاد میکند.
مثال واقعی برای درک بهتر:
اگر بخواهید مسیر زیر را از سرور A به سرور B سینک کنید:
این دستور:
فقط تغییرات فولدر
/var/wwwرا منتقل میکندآن را در مقصد بهروز میکند
امنیت انتقال را بهواسطه SSH تضمین میکند
خلاصه ساده برای کسی که اولینبار با rsync آشنا میشود:
| Besonderheit | Erläuterung |
|---|---|
| Hauptanwendung | انتقال داده و هماهنگسازی پوشهها |
| مزیت اصلی | فقط تغییرات منتقل میشود، نه کل فایل |
| Sicherheit | استفاده از SSH برای انتقال امن |
| سرعت بالا | بهخاطر الگوریتم انتقال دلتا |
| حرفهای و مناسب سرور | بهترین ابزار برای بکاپ و انتقال بین VPSها |
۳. سینتکس پایه rsync
ساختار عمومی rsync بسیار شبیه دیگر ابزارهای فایل مانند SCP-1811 است:
مثال ساده محلی:
ایجاد دو فولدر تست روی سیستم محلی
اجرای:
در این حالت، فقط محتوای
dir1بهdir2منتقل میشود، نه خود پوشه.
Option -a (archive) توصیه میشود، چون:
به صورت بازگشتی دایرکتوری را همگامسازی میکند
مالکیت فایل، زمان تغییر و مجوزها را حفظ مینماید
نکته مهم: اگر در پایان مسیر منبع “/” بگذارید، فقط محتوای دایرکتوری سینک میشود؛ اگر نگذارید، خود پوشه اصلی نیز منتقل خواهد شد.
۴. اجرای پیشنمایش امن با --dry-run
قبل از اجرای عملیاتهای حساس (مخصوصاً وقتی از گزینههایی مانند --delete استفاده میکنید)، بهتر است ابتدا یک پیشنمایش (dry run) بگیرید:
Option
-nOder--dry-runباعث شبیهسازی عملیات بدون ایجاد تغییر میشود-v(verbose) خروجی مفصلی از فایلهایی که همگام میشوند یا حذف میشوند، ارائه میدهد
این پیشنمایش به شما کمک میکند قبل از حذف فایلها، دقیقاً ببینید چه چیزی قرار است اتفاق بیفتد و از اشتباهات پرخطر جلوگیری کنید.

۵. ارسال (Push) و دریافت (Pull) فایلها بین سیستم محلی و سرور
ارسال به سرور (Push)
برای همگامسازی یک دایرکتوری محلی به سرور:
-a: حفظ ویژگیهای فایل~/local-dir/: مسیر محلیuser@remote-server: کاربر و آدرس سرور:/remote/path/: مسیر در سرور
اگر “/” در انتهای منبع باشد، فقط محتوای پوشه ارسال میشود؛ در غیر این صورت، خود پوشه نیز منتقل میشود.
دریافت از سرور (Pull)
عمل معکوس: همگامسازی از سرور به سیستم محلی:
مجدد، توجه به اسلش در مسیر منبع (در اینجا مسیر سرور) مهم است چون تعیینکننده رفتار همگامسازی است.
۶. گزینههای پیشرفته rsync
-z: فشردهسازی دادهها هنگام ارسال برای کاهش مصرف شبکه-P: ترکیبی از--progressUnd--partialکه نمایش پیشرفت انتقال و امکان ادامهی انتقالهای ناقص را فراهم میکند
مثال:
--delete: حذف فایلهایی که در مقصد وجود دارند ولی منبع دیگر آنها را ندارد (مناسب برای میرورینگ)--excludeUnd--include: فیلتر کردن فایلها/پوشهها برای تعامل دقیقتر--backupUnd--backup-dir: ایجاد بکآپ از فایلهای حذفشونده در یک مسیر جداگانه
۷. زمانبندی همگامسازی با Cron
برای اجرای دورهای همگامسازی، میتوانید rsync را در cron زمانبندی کنید:
ویرایش کرونتب:
مثالی از کرونجاب روزانه برای همگامسازی:
این دستور هر روز ساعت ۳ صبح اجرا میشود و دایرکتوری محلی را با نسخه سرور همگام میکند.
توصیههای مهم برای cron-job:
از مسیرهای مطلق برای
rsyncو دایرکتوریها استفاده کنیدتنظیم ورود با کلید SSH بدون پسورد
خروجی کرون را در فایل لاگ ذخیره کنید یا خطاها را مدیریت نمایید
۸. رفع مشکلات رایج و بهترین شیوهها
چند مشکل معمول هنگام استفاده از rsync و راهحلهای آن:
اشتباه در مسیر منبع / مقصد: استفاده از
--dry-runبرای بررسی دقیقحذف ناخواسته فایلها: فقط وقتی کاملاً مطمئن شدیم از
--deleteاستفاده کنیمخطاهای دسترسی (Permissions): با
-aمالکیت و مجوزها را حفظ کنیدمشکلات اتوماسیون: از مسیرهای کامل و تایید SSH بدون پسورد استفاده شود
Abschluss
rsync یک ابزار بسیار قدرتمند و بهینه برای همگامسازی دادهها بین ماشین محلی و سرور است. این ابزار به لطف الگوریتم delta-transfer، گزینهای کممصرف، امن و دقیق برای پشتیبانگیری، انتقال داده و ساخت محیطهای mirror به شمار میآید. با استفاده از گزینههای پیشرفته، آزمایش با --dry-run و زمانبندی با cron، میتوانید فرآیند همگامسازی را بهینه، ایمن و خودکار کنید.









