Как использовать Rsync для синхронизации локальных и удаленных каталогов
Как использовать Rsync для синхронизации локальных и удаленных каталогов

Синхронизация каталогов между сервером и локальной системой rsync

همگام‌سازی فایل‌ها یکی از مهم‌ترین عملیات در نگهداری داده‌ها، نسخه‌برداری پشتیبان و مدیریت سرور است. ابزار rsync یک گزینه قدرتمند، انعطاف‌پذیر و بهینه برای همین کار است. این راهنما به شما نشان می‌دهد چگونه دایرکتوری‌های محلی و راه دور (روی سرور) را با rsync همگام‌سازی کنید، از آن در پشتیبان‌گیری استفاده کنید، و انتقال‌ها را اتوماتیک نمایید.
0 Акции
0
0
0
0

1. Предпосылки

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

  • دو دستگاه: یکی محلی (کامپیوتر شما) و یک سرور لینوکسی (VPS یا سرور اختصاصی)

  • rsync نصب شده روی هر دو سیستم

  • دسترسی SSH بین دو سیستم (به‌طوری که بتوانید بدون وارد کردن مداوم پسورد، ارتباط برقرار کنید)

  • کلید عمومی SSH روی سرور مقصد در فایل authorized_keys قرار داده شده باشد


۲. مفهوم و عملکرد rsync (نسخه تخصصی و قابل فهم برای مبتدی و حرفه‌ای)

rsync یک ابزار خط فرمان قدرتمند در لینوکس است که برای هماهنگ‌سازی (Sync) и انتقال داده‌ها بین دو مسیر استفاده می‌شود؛ چه این مسیرها روی یک سیستم باشند و چه روی دو سرور جداگانه.

اما چرا rsync این‌قدر محبوب است؟
به این دلیل که به‌جای انتقال کل فایل‌ها، فقط بخش‌هایی را منتقل می‌کند که تغییر کرده‌اند.

rsync دقیقاً چطور کار می‌کند؟ (فهم ساده و دقیق)

وقتی rsync را اجرا می‌کنید، این ابزار ابتدا:

  1. ساختار و محتوای دو مسیر (مثلاً پوشه مقصد و پوشه منبع) را با هم مقایسه می‌کند.

  2. بررسی می‌کند کدام فایل‌ها جدید هستند، کدام تغییر کرده‌اند و کدام حذف شده یا تغییر نکرده‌اند.

  3. به‌جای ارسال کل فایل، فقط بخشی از داده‌ها که تغییر کرده‌اند را منتقل می‌کند.

به این تکنیک می‌گویند:

Delta Transfer Algorithm (الگوریتم انتقال دلتا)

این الگوریتم rsync را بسیار سریع و بهینه می‌کند، چون:

  • پهنای باند مصرفی کاهش می‌یابد

  • زمان انتقال بسیار کمتر می‌شود

  • منابع CPU روی سرور کمتر درگیر می‌شوند


مثال ساده برای درک بهتر عملکرد rsync

فرض کنید یک فایل ۱ گیگابایتی دارید و فقط ۵ مگابایت آن تغییر کرده است.

  • ابزارهای معمولی مثل SCP-1811 کل ۱ گیگابایت را دوباره آپلود می‌کنند.

  • اما rsync فقط همان ۵ مگابایت تغییر‌یافته را ارسال می‌کند.

این یعنی:

  • سرعت بیشتر

  • مصرف اینترنت کمتر

  • فشار کمتر روی سرور


rsync و سرورها: چرا بهترین ابزار برای مدیریت سرور است؟

وقتی روی یک Сервер Или VPS کار می‌کنید، معمولاً نیاز دارید:

  • بکاپ‌ها را بین دو سرور جابه‌جا کنید

  • فایل‌های سایت را از سرور فعلی به سرور جدید منتقل کنید

  • فولدرهای مهم (مثل /var/www) را همیشه سینک نگه دارید

  • فایل‌های حجیم را بدون هدر رفت پهنای باند منتقل کنید

در تمام این موارد، rsync بهترین انتخاب است چون:

انتقال امن با SSH

rsync از پروتکل SSH برای انتقال استفاده می‌کند، پس:

  • داده‌ها رمزنگاری می‌شوند

  • نیاز به باز کردن پورت‌های اضافی نیست

  • امنیت ارتباط تضمین‌شده است

حذف فایل‌های اضافی در مقصد

با فلگ --delete می‌تواند مقصد را دقیقاً مشابه منبع نگه دارد.

قابلیت Resume

اگر حین انتقال اینترنت قطع شود، rsync ادامه فایل را منتقل می‌کند، نه از صفر.

مناسب برای Automation

به‌راحتی در کران‌جاب‌ها قرار می‌گیرد و فرآیندهای پشتیبان‌گیری خودکار را ایجاد می‌کند.


مثال واقعی برای درک بهتر:

اگر بخواهید مسیر زیر را از سرور A به سرور B سینک کنید:

rsync -avz /var/www/ user@server-ip:/var/www/

این دستور:

  • فقط تغییرات فولدر /var/www را منتقل می‌کند

  • آن را در مقصد به‌روز می‌کند

  • امنیت انتقال را به‌واسطه SSH تضمین می‌کند


خلاصه ساده برای کسی که اولین‌بار با rsync آشنا می‌شود:

ОсобенностьОбъяснение
کاربرد اصلیانتقال داده و هماهنگ‌سازی پوشه‌ها
مزیت اصلیفقط تغییرات منتقل می‌شود، نه کل فایل
Безопасностьاستفاده از SSH برای انتقال امن
سرعت بالابه‌خاطر الگوریتم انتقال دلتا
حرفه‌ای و مناسب سروربهترین ابزار برای بکاپ و انتقال بین VPSها

۳. سینتکس پایه rsync

ساختار عمومی rsync بسیار شبیه دیگر ابزارهای فایل مانند SCP-1811 است:

rsync [OPTIONS] منبع مقصد

مثال ساده محلی:

  • ایجاد دو فولدر تست روی سیستم محلی

  • اجرای:

    rsync -a dir1/ dir2

    در این حالت، فقط محتوای dir1 به dir2 منتقل می‌شود، نه خود پوشه.

Вариант -a (archive) توصیه می‌شود، چون:

  • به صورت بازگشتی دایرکتوری را همگام‌سازی می‌کند

  • مالکیت فایل، زمان تغییر و مجوزها را حفظ می‌نماید

نکته مهم: اگر در پایان مسیر منبع “/” بگذارید، فقط محتوای دایرکتوری سینک می‌شود؛ اگر نگذارید، خود پوشه اصلی نیز منتقل خواهد شد.


۴. اجرای پیش‌نمایش امن با --dry-run

قبل از اجرای عملیات‌های حساس (مخصوصاً وقتی از گزینه‌هایی مانند --delete استفاده می‌کنید)، بهتر است ابتدا یک پیش‌نمایش (dry run) بگیرید:

rsync -anv --delete /مسیر/منبع/ /مسیر/مقصد/
  • Вариант -n Или --dry-run باعث شبیه‌سازی عملیات بدون ایجاد تغییر می‌شود

  • -v (verbose) خروجی مفصلی از فایل‌هایی که همگام می‌شوند یا حذف می‌شوند، ارائه می‌دهد

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


How to use Rsync to synchronize local and remote directories
How to use Rsync to synchronize local and remote directories

۵. ارسال (Push) و دریافت (Pull) فایل‌ها بین سیستم محلی و سرور

ارسال به سرور (Push)

برای همگام‌سازی یک دایرکتوری محلی به سرور:

rsync -a ~/local-dir/ user@remote-server:/remote/path/
  • -a: حفظ ویژگی‌های فایل

  • ~/local-dir/: مسیر محلی

  • user@remote-server: کاربر و آدرس سرور

  • :/remote/path/: مسیر در سرور

اگر “/” در انتهای منبع باشد، فقط محتوای پوشه ارسال می‌شود؛ در غیر این صورت، خود پوشه نیز منتقل می‌شود.

دریافت از سرور (Pull)

عمل معکوس: همگام‌سازی از سرور به سیستم محلی:

rsync -a user@remote-server:/remote/path/ ~/local-dir/

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


۶. گزینه‌های پیشرفته rsync

  • -z: فشرده‌سازی داده‌ها هنگام ارسال برای کاهش مصرف شبکه

  • -P: ترکیبی از --progress и --partial که نمایش پیشرفت انتقال و امکان ادامه‌ی انتقال‌های ناقص را فراهم می‌کند

مثال:

rsync -azP ~/local/dir/ user@remote:/remote/dir/
  • --delete: حذف فایل‌هایی که در مقصد وجود دارند ولی منبع دیگر آن‌ها را ندارد (مناسب برای میرورینگ)

  • --exclude и --include: فیلتر کردن فایل‌ها/پوشه‌ها برای تعامل دقیق‌تر

  • --backup и --backup-dir: ایجاد بک‌آپ از فایل‌های حذف‌شونده در یک مسیر جداگانه


۷. زمان‌بندی همگام‌سازی با Cron

برای اجرای دوره‌ای همگام‌سازی، می‌توانید rsync را در cron زمان‌بندی کنید:

  • ویرایش کرون‌تب:

    crontab -e
  • مثالی از کرون‌جاب روزانه برای همگام‌سازی:

    0 3 * * * /usr/bin/rsync -a --delete /var/www/html/ user@remote:/backups/html/

    این دستور هر روز ساعت ۳ صبح اجرا می‌شود و دایرکتوری محلی را با نسخه سرور همگام می‌کند.

توصیه‌های مهم برای cron-job:

  • از مسیرهای مطلق برای rsync و دایرکتوری‌ها استفاده کنید

  • تنظیم ورود با کلید SSH بدون پسورد

  • خروجی کرون را در فایل لاگ ذخیره کنید یا خطاها را مدیریت نمایید


۸. رفع مشکلات رایج و بهترین شیوه‌ها

چند مشکل معمول هنگام استفاده از rsync و راه‌حل‌های آن:

  • اشتباه در مسیر منبع / مقصد: استفاده از --dry-run برای بررسی دقیق

  • حذف ناخواسته فایل‌ها: فقط وقتی کاملاً مطمئن شدیم از --delete استفاده کنیم

  • خطاهای دسترسی (Permissions): با -a مالکیت و مجوزها را حفظ کنید

  • مشکلات اتوماسیون: از مسیرهای کامل و تایید SSH بدون پسورد استفاده شود


Заключение

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может понравиться

Как установить IBSng на CentOS 6/7

Руководство по установке IBSng на CentOS 6/7 В этой статье приведено руководство по установке IBSng на CentOS 6/7, которое поможет вам…

Как войти на сервер Windows через удаленный рабочий стол

Как подключиться к серверу Windows через удалённый рабочий стол. Программное обеспечение для подключения к удалённому рабочему столу предоставляется бесплатно во всех версиях…