دستور Rsync یک از پر کاربردترین دستورات مورد استفاده در لینوکس برای کپی و همگامسازی فایل است که به صورت لوکال و همچنین ریموت میتواند استفاده شود.
از مزیتهای rsync میتوان پشتیبانی و انتقال پرمیژنها به صورت کامل، فشردهسازی و سرعت بالا را نام برد.
از rsync میتوان برای mirror دیتا، بکآپ incremental و کپی فایل استفاده کرد و به عنوان جایگزینی برای scp، sftp و cp استفاده میشود.
کاربرد rsync برای استفاده لوکال و ریموت به صورت زیر است:
مهمترین آپشنهای rsync به صورت زیر میباشد:
a- معادل -rlptgoD است که به rsync میگوید دایرکتوریها را به صورت recursive کپی کند، بلاک دیوایسها را انتقال دهد، symbolic linksها، timestampها، گروهها، ownership و همچنین پرمیژنها را حفظ کند.
v- به معنای verbos است و اتفاقات را در کنسول نشان میدهد.
p- معادل –partial –progress برای نشان دادن درصد پیشرفت کار هنگام انتقال فایل با حجم بالا یا انتقال ریموت در شبکه با سرعت پایین استفاده میشود.
r- انتقال دیتا به صورت recursive
e- ارسال پارامترهای مربوط به ssh، به عنوان مثال شماره پورت
s- برای انتقال بهینهی دیسکهای sparse استفاده می شود.
delete– فایلهایی که در مبدا پاک شده است را در مقصد نیز پاک میکند. برای کپی دستی بک آپ به آرشیو استفاده میشود.
اگر بعد از دایرکتوری مبدا از / استفاده کنیم، محتویات دایرکتوری را انتقال میدهد در غیر اینصورت خود دایرکتوری و محتوای آن منتقل میشود.
نمونه استفاده از rsync برای کپی فایل در حالت ریموت و با تغییر پارامتر پورت ssh.
نمونه کپی بک آپ به آرشیو با استفاده از rsync
نکته ۱: برای انتقال فایلهای کوچک با تعداد بالا بهتر است از پارامترهای v- به دلیل تولید لاگ زیاد و کند کردن فرآیند انتقال دیتا، استفاده نکنیم.
نکته ۲: rsync هنگام کپی در مقصد یک فایل مخفی با اسم دیگری میسازد و هنگامی که کپی تمام شد یا rsync کنسل شد اسم فایل را به اسم فایل اصلی تغییر میدهد، اگر اشتباها مبدا و مقصد rsync یکی بود انتقال را کنسل نکنید چون فایل اصلی پاک میشود. در این حالت اگر خواستید این فرآیند را کنسل کنید فایل اصلی را busy کنید که بتوان آن را برگرداند.
نکته ۳: چنانچه از rsync جهت انتقال دیسکهای ماشینهای مجازی استفاده میکنید، لازم است قبل از انتقال ماشین مجازی خاموش گردد و مطمئن شویم که فایلی باز نیست. برای انجام این کار از lsof میتوانیم استفاده کنیم.
نکته ۴: برای کپی یک یا چند فایل با حجم بالا بهتر است از rsync را با استفاده از nohup و & مانند مثال زیر استفاده کنیم. در این حالت در حین انجام کار با استفاده از tail -f میتوانیم فایل nohup.out و روند انجام کار را بررسی کنیم. بعد از اتمام کار نیز فایل nohup.out را بررسی میکنیم که از انجام بدون خطای کار مطمئن شویم.
نکته ۵: با توجه به این که برای انتقال فایل در شبکه ممکن است به دلیل خطایی rsync با موفقیت دیتا را منتقل نکند، برای اطمینان از انتقال فایل از یک لوپ مانند اسکریپت زیر استفاده میکنیم.