آموزش لینوکس LPIC1-101 (دستور rsync)
آموزش لینوکس LPIC1-101 (دستور rsync)
همگام سازي فایل ها و پوشه ها
یک استراتژي رایج براي نگهداري یک کپی پشتیبان از سیستم مستلزم همگام سازي یک یا چند دایرکتوري با دایرکتوري دیگر است
(یا دایرکتوري هاي دیگر) که بر روي سیستم لوکال معمولا یک حافظه جانبی حذف شدنی مثل هارد دیسک اکسترنال و یا یک سیستم ریموت هست.
براي مثال:
ممکن است بخواهیم یک کپی محلی از یک وب سایتی که در حال توسعه هست بگیریم
و آن را گاها بر روي نسخه زنده یک وب سرور ریموت کپی کنیم.
دستور rsync – همگام سازي ریموت فایل و پوشه
در دنیاي یونیکس، ابزار برتر براي همگام سازي ریموت rsync است.
این برنامه می تواند پوشه هاي لوکال و ریموت را همگام سازد.
چگونه؟
با استفاده از rsync remote update protocol (پروتکل بروزرسان ریموت آرسینک) این پروتکل rsync را قادر می سازد تا به سرعت تفاوت هاي بین دو پوشه را تشخیص دهد و براي بازگرداندن آنها به وضعیت همگامی، کمترین میزان کپی را نیاز دارد.
این موجب می شود که rsync در مقایسه با دیگر برنامه هاي کپی بسیار سریع و از نظر اقتصادي مقرون به صرفه باشد.
rsync به این صورت به کار گرفته می شود:
rsync options source destination
که مبدا (Source) و مقصد (Destination) هر یکی از موارد زیر است:
یک فایل یا پوشه محلی یک فایل یا پوشه ریموت به شکل user@]host:path]
یک سرور ریموت rsync تعیین شده با URI روبرو:
rsync://[user@]host[:port]/path
توجه کنید که یکی از مبدا یا مقصد بایستی یک فایل محلی باشند.
کپی ریموت به ریموت پشتیبانی نمی شود.
خب ابتدا rsync را بر روي برخی فایل هاي محلی امتحان می کنیم. ابتدا پوشه ali را خالی می کنیم:
سپس پوشه linux را با یک کپی متناظر در ali همگام می کنیم:
rsync -av linux ali
ما هر دو گزینه a- (براي آرشیو کردن که باعث بازگشت و نگهداري مشخصه هاي فایل می شود) و گزینه v- (خروجی verbose) را استفاده کردیم
تا یک کپی از دایرکتوري linux در داخل پوشه ali ایجاد کنیم.
وقتی که دستور اجرا می شود، یک لیست از فایل ها و پوشه هایی که کپی می شوند را مشاهده خواهید کرد.
در انتها یک پیام مشاهده می کنید که خلاصه و نشان دهنده میزان کپی انجام شده است:
اگر دستور را مجدد تکرار کنیم، تفاوت نتیجه را مشاهده خواهید کرد:
توجه کنید که هیچ لیست کردن فایلی رخ نداد.
به این دلیل است که rsync تشخیص داده که هیچ تفاوتی بین linux/~ و ali/linux/~ وجود ندارد و در نتیجه هیچ کپی انجام نخواهد داد.
اگر که ما یک فایل را در پوشه linux تغییر دهیم و مجدد دستور rsync را اجرا کنیم،
مشاهده خواهیم کرد که rsync تغییر را شناسایی کرده و فقط فایل هاي بروز شده را کپی می کند.
استفاده از rsync بر روي شبکه
یکی از زیبایی هاي دستور rsync این است که می توان با استفاده از آن فایل ها را بر روي شبکه کپی کرد.
پس از یادتان باشد که r در دستور rsync معادل remote هست.
کپی ریموت به دو شیوه صورت می پذیرد.
اولین راه با سیستم دیگري است که rsync بر روي آن نصب شده و از طریق یک برنامه شل (Shell) ریموت، مثال ssh.
فرض کنید که یک سیستم دیگر بر روي شبکه محلی وجود دارد که فضاي هارد دیسک در دسترس زیادي دارد
و ما می خواهیم عملیات بک آپ خود را به جاي یک هارد دیسک اکسترنال با استفاده از سیستم ریموت انجام دهیم.
فرض کنید که هم اکنون یک پوشه با نام backup داریم که می توانیم فایل هاي خود را به آن تحویل دهیم:
sudo rsync -av –delete –rsh=ssh /etc /home /usr/local remotesys:/backup
ما دو تغییر در خط فرمان ایجاد کرده ایم تا کپی در شبکه را آسان کنیم.
اول:
اینکه گزینه — rsh=ssh را اضافه کرده ایم که به rsync دستور می دهد تا از برنامه ssh به عنوان یک شل ریموت (Remote Shell) استفاده کند.
به این شیوه قادر هستیم تا از یک تانل رمزنگاري شده SSH براي انتقال ایمن داده از سیستم لوکال به میزبان ریموت استفاده کنیم.
دوم:
با اضافه کردن نام میزبان ریموت به نام مسیر مقصد (در این مورد میزبان ریموت remote-sysنام دارد)، میزبان ریموت را تعیین کردیم.
دومین راه که rsync می تواند فایل ها را همگام کند از طریق شبکه و با استفاده از rsync server است.
rsync را می توان به نحوي پیکربندي کرد که مثل یک شبح اجرا شود و به درخواست هاي ورودي براي همگام سازي گوش دهد.
این کار اغلب به منظور کپی کردن یک سیستم ریموت صورت می پذیرد.
براي مثال نرم افزار ردهت یک مخزن بزرگ از بسته هاي نرم افزاري تحت توسعه را براي توزیع فدورا نگهداري می کند.
تسترهاي نرم افزار می توانند این کلکسیون را در فازهاي تست و چرخه ریلیز توزیع کپی کنند.
از آنجایی که فایل هاي موجود در مخزن متناوبا تغییر می کنند،
بسیار عالی می شود اگر که یک کپی محلی بر اساس همگام سازي دوره اي نگهداري شود
(به جاي اینکه کل مخزن را کپی کنیم) یکی از این مخازن در جورجیا تک نگهداري می شود.
می توانیم آن را با استفاده از کپی محلی خود از rsync و سرور آرسینک جورجیا تک معکوس کنیم به این صورت:
mkdir fedora-devel
rsync -av -delete rsync://rsync.gtlib.gatech.edu/fedoralinux-core/development/i386/os fedora-devel
در این مثال ما از URI سرور ریموت rsync استفاده می کنیم،
که شامل یک پروتکل (://rsync) به همراه نام میزبان ریموت (rsync.gtlib.gatech.edu) به همراه نام مسیر مخزن است.
جهت مشاهده دوره های آموزشی بر روی این لینک کلیک نمایید.
جدیدترین اخبار مجموعه فراز نتورک را در این صفحه اجتماعی دنبال کنید.
نویسنده: موسی رشوند
دیدگاهتان را بنویسید
برای نوشتن دیدگاه باید وارد بشوید.