ابزاری به اسم rsync یکی از نرم‌افزارهای همگام‌سازی یا Sync کردن در لینوکس است. با استفاده از این ابزار می‌توانید محتویات فولدرها را به سادگی مقایسه کرده و یکسان‌سازی کنید. فایلی که قبلاً کپی شده، مجدداً کپی نمی‌شود و فایلی که اخیراً اضافه شده، در فولدر مقصد کپی می‌شود. فولدر مبداً و مقصد ممکن است روی حافظه‌ی کامپیوتر و یا به صورت ریموت و روی سروری دیگر قرار داشته باشند.

در این مقاله به روش نصب و استفاده از rsync در لینوکس و دستورات مربوطه می‌پردازیم.

منظور از همگام‌سازی یا سینک کردن این است که داده‌های مبداً و مقصد مقایسه شود و صرفاً تغییرات فایل‌ها و داده‌ها در مقصد کپی شود و نه تمام فایل‌ها. با همگام‌سازی می‌توانید فایل‌های مبداً و مقصد را عملاً یکسان‌سازی کنید و البته این کار با مصرف بهینه‌ی پهنای باند صورت می‌گیرد چرا که فایل‌های موجود و تغییرنکرده، به صورت تکراری منتقل نمی‌شود. موضوع صرفاً کپی کردن تغییرات داده است.

روش نصب ابزار rsync در توزیعات مختلف لینوکس

برای نصب کردن rsync در لینوکس دبیان و همین‌طور توزیعاتی که مبتنی بر Debian طراحی شده و نمونه‌ی محبوب آن، لینوکس اوبونتو است، می‌توانید از دستور زیر استفاده کنید:

با تایپ کردن دستور در اپلیکیشن Terminal و فشار دادن Enter ، ابزار rsync دانلود و نصب می‌شود.

در لینوکس Fedora از دستور زیر استفاده کنید:

و در توزیعات لینوکس که مبتنی بر RedHat شکل گرفته و نمونه‌ی معروف آن CentOS است، از دستور زیر استفاده کنید:

در Arch Linux و توزیعات مشابه، از دستور زیر استفاده کنید:

و در مورد لینوکس opneSUSE نیز از دستور زیر استفاده کنید:

روش همگام‌سازی فایل و فولدرها با rsync

سینتکس و به بیان دیگر، حالت کلی دستور همگام‌سازی، به این صورت است که ابتدا دستور rsync و سپس سوییچ‌ها و آپشن‌های اضافی آن و در نهایت مسیر مبداً و سپس مسیر مقصد در ترمینال وارد می‌شود:

در مورد Options به راهنمای کامل استفاده از rsync مراجعه کنید که البته با دستور زیر در ترمینال قابل رویت است:

با اجرای فرمان فوق، انواع سوییچ‌های این دستور نمایش داده می‌شود که بسیار متنوع است:

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

و می‌توانید با زدن کلید q از راهنما خارج شوید.

برای کپی کردن یک فایل خاص، دستور زیر را اجرا کنید:

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

مسیرها را می‌توانید هم به صورت نسبی یا مطلق وارد کنید. در مورد فایل‌های بسیار حجیم، می‌توانید از دستور زیر استفاده کنید و توجه کنید که path/to/file مسیر مبداً و path/to/destination مسیر مقصد است:

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

بدون سوییچ --append اگر فرآیند متوقف شود، قابلیت ادامه دادن آن وجود ندارد بلکه باید از نو آغاز شود.

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

مثل نمونه‌ی زیر:

تفاوت استفاده از / پس از آدرس فولدرها با حالت بدون اسلش

در کار با دستور rsync، اسلش یا به عبارت دیگر / پس از مسیرها، بسیار مهم است. اگر پس از آدرس فولدری، از اسلش استفاده نشود، ابزار rsync فولدر را کپی می‌کند. به مثال زیر توجه کنید که خروجی دستور rsync -av /bin است:

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

اما با اضافه کردن اسلش در انتهای آدرس یک فولدر، آنچه درون فولدر است همگام‌سازی می‌شود. لذا با دستور rsync -av /bin/، تمام فایل‌های موجود در فولدر همگام‌سازی می‌شود. به خروجی این دستور توجه کنید:

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

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

استفاده از rsync برای همگام‌سازی فولدر با فولدر ریموت

اگر فولدر مقصد روی سرور دیگری قرار گرفته و به بیان دیگر مسیر آن Remote است هم می‌توانید به سادگی از ابزار rsync استفاده کنید. تنها تفاوت در این است که می‌بایست در دستوری که اجرا می‌کنید، نام کاربری و آدرس ریموت را اضافه کنید. به عنوان مثال برای کپی کردن محتویات فولدر /bin در یک کامپیوتر ریموت، از دستوری شبیه مورد زیر استفاده کنید:

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

استفاده از نام دامنه به جای IP Address نیز مشابه است:

در مورد حجم زیادی از داده‌ها، بهتر است با اضافه کردن سوییچ -z، فشرده‌سازی داده قبل از ارسال را فعال کنید تا مصرف ترافیک اینترنت کمتر شود:

البته در مورد فرمت‌های فشرده مثل mp3 و jpg که فشرده‌سازی معمولی اثر خاصی ندارد، بهتر است از این سوییچ استفاده نکنید و فایل‌ها را به صورت عادی ارسال کنید.

در مورد انتقال فایل از سرور ریموت به کامپیوتر فعلی نیز کافی است آدرس مبداً و مقصد را جابجا کنید: