آشنایی کامل با دستور Rsync در سیستم عامل لینوکس

آشنایی کامل با دستور Rsync در سیستم عامل لینوکس

خواندن این مطلب در ۶ دقیقه

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

مزیت های استفاده از Rsync نسبت به روش های CP و SCP

  • دستور Rsync بهترین و موثرترین روش برای کپی و همگام سازی فایل ها و دایرکتوری ها از یک سیستم به دیگری است.
  • پشتیبانی کامل از لینک ها و دیوایس ها و ownerها و گروه ها و پرمیشن ها
  • این دستور سریعتر از SCP است (SCP همان secure copyاست)

نکته : علت سرعت بالای  rsync استفاده از پروتکل remote-update است. با استفاده از این پروتکل فقط خط های متفاوت انتقال پیدا میکند. دراولین انتقال Rsync تمام محتوای یک فایل یا یک دایرکتوری را کپی می کند اما از دفعات بعد، تنها خط ها و بایت ها ی تغییریافته را به مقصد کپی خواهد کرد.

  • به علت فشرده سازی فایل ها در مبدا و مقصد دستور Rsync کمترین میز
  • ان پهنای باند را استفاده میکند.

آموزش استفاده و کار کردن با دستور Rsync

امکانات زیادی برای استفاده از دستور rsync وجود دارد؛ استفاده از آنها کاملا سلیقه ای بوده و هرکس با توجه به نیاز خود میتواند از آن ها استفاده کند. لازم به ذکر است برخی دستورات در rsync میتواند یک حرفی و یا چند حرفی باشد؛ به عنوان مثال  اجرای rsync -a نتیجه ای مشابه با rsync -rlptgoD خواهد داد. نکته دیگری که باید مراقب بود استفاده از دستور rsync هنگام کپی کردن فرمان ها از سایت ها و یا فروم های موجود در اینترنت است، بخصوص زمانی که با دستور مورد نظر آشنایی کامل ندارید.اگر به یاد داشته باشید هنگام استفاده از ویندوز با زدن کلید f1 صفحه راهنمای مربوطه برای شما باز می شود. برای آشنایی بیشتر با دستور rsync میتوانید با استفاده از دو فرمان زیر راهنمای این دستور را مشاهده نماییدman rsyncrsync –help ساختار اساسی یک دستور rsync شبیه به CP و SCP است.  rsync -[options] source destinationاگر چندین مقصد برای انتقال مورد نظر شماست، باید آن ها را به انتهای فرمان خود اضافه کنید.rsync -[options] source destination1 destination2 destination3

در ادامه جزئیات و ۱۰ فرمان مفید و پرکاربرد دستور rsync برای شما بیان خواهد شد.

امکانات رایج در دستور rsync

 

-v  :

ابتدای کلمه verbose که برای توضیحات بیشتر در دستور rsync از این آپشن استفاده می شود.

-r :

ابتدای کلمه recursive که داده ها را به صورت بازگشتی کپی میکند.

  • نکته: این آپشن پرمیشن و timestamp ها را در حال انتقال دیتا حفظ نمی کند.

-a :

به کلمه archive  اشاره دارد و مد آرشیو تمام فایل ها را به صورت بازگشتی کپی می کند

  • نکته: این آپشن لینک های سیمبولیک و پرمیشن فایل ها و user & group ownership و timestamp ها را حفظ می کند.

-z :

میتوان گفت که به کلمه zip اشاره دارد و مسئولیت فشرده سازی فایل ها را بر عهده دارد.

-h :

منظور کلمه human-readable  است که مسئولیت خوانا کردن داده ها را برای انسان برعهده دارد.

آپشن ها و امکانات بسیار زیادی در دنیای لینوکس وجود دارد ؛ اگر تمایل به یادگیری بیشتر درباره این موضوع دارید میتوانید به لینک زیر مراجعه نمایید:

https://www.computerhope.com/unix/rsync.htm

بررسی پرکاربردترین حالات دستور rsync

با استفاده از فرمان rsync میتوان کارهای زیادی انجام داد که در زیر به بررسی پرکاربردترین آنها پرداخته می شود. قبل از هرچیز باید دستور rsync در سیستم عامل شما فعال باشد.

نصب rsync در سیستم عامل لینوکس

ممکن است در برخی از توزیع های لینوکس دستور rsync نصب نباشد؛ در اینگونه مواقع با استفاده از فرمان زیر به راحتی به نصب این دستور اقدام می شود :

#yum install rsync (On Red Hat based systems)

#apt-get install rsync (On Debian based systems)

  • کپی کردن و همگام سازی فایل ها و دایرکتوری ها روی یک سیستم محلی (local)

الف) کپی کردن و همگام سازی یک فایل بر روی یک سیستم محلی (local) :

با دستور زیر یک فایل از یک مسیر به مسیر دیگر کپی و همگام سازی می شود. در این مثال فایلی به نام backup.tar  به مسیر/tmp/backups/    کپی و sync شد. لازم به ذکر است در این مثال فرض شده است که مسیر مقصد وجود ندارد، در چنین مواردی فرمان rsync مسیر ذکر شده در دستور را به وجود خواه آورد.

 

 

ب) کپی کردن و همگام سازی یک دایرکتوری بر روی یک سیستم محلی (local) :

با استفاده از دستور زیر میتوان تمام فایل های موجود در یک دایرکتوری را به دایرکتوری جدیدی در همان سیستم کپی و همگام سازی کرد. در این مثال دایرکتوری /root/rpmpkgs   شامل برخی فایل های rpm می باشد که می بایست به دایرکتوری /tmp/backups/ کپی شود.

[root@linux-zone]# rsync -avzh /root/rpmpkgs /tmp/backups/

sending incremental file list

rpmpkgs/

rpmpkgs/httpd-2.2.3-82.el5.centos.i386.rpm

rpmpkgs/mod_ssl-2.2.3-82.el5.centos.i386.rpm

rpmpkgs/nagios-3.5.0.tar.gz

rpmpkgs/nagios-plugins-1.4.16.tar.gz

sent ۴٫۹۹M bytes  received ۹۲ bytes  ۳٫۳۳M bytes/sec

total size is ۴٫۹۹M  speedup is ۱٫۰۰

  • کپی کردن و همگام سازی فایل ها و دایرکتوری ها به/ از یک سرور

الف) کپی کردن یک دایرکتوری از سرور محلی به یک سرور ریموت:

دستور زیر یک دایرکتوری را از یک سیستم محلی به یک سرور ریموت کپی و همگام سازی می شود. در این مثال فایلی به نام rpmpkgs.tar در کامپیوتر شما، شامل یک سری فایل rpm  به مسیری مشخص در یک سرور ریموت که از شما دور استکپی و sync می شود.

[root@tecmint]$ rsync -avz rpmpkgs/ root@192.168.0.101:/home/

root@192.168.0.101’s password:

sending incremental file list

./

httpd-2.2.3-82.el5.centos.i386.rpm

mod_ssl-2.2.3-82.el5.centos.i386.rpm

nagios-3.5.0.tar.gz

nagios-plugins-1.4.16.tar.gz

sent 4993369 bytes  received 91 bytes  ۳۹۹۴۷۶٫۸۰ bytes/sec

total size is 4991313  speedup is 1.00

ب) کپی کردن و همگام سازی یک دایرکتوری ریموت به یک ماشین محلی

این دستور به شما کمک می کند یک دایرکتوری ریموت به یک دایرکتوری محلی کپی و همگام سازی شود. در این مثال، دایرکتوری /home/tarunika/rpmpkgs برروی یک سیستم راه ور(remote) می باشد. توسط دستور زیر به دایرکتوری  /tmp/myrpms  در سیستم محلی شما کپی خواهد شد.

[root@linux-zone]# rsync -avzh root@192.168.0.100:/home/tarunika/rpmpkgs /tmp/myrpms

root@192.168.0.100’s password:

receiving incremental file list

created directory /tmp/myrpms

rpmpkgs/

rpmpkgs/httpd-2.2.3-82.el5.centos.i386.rpm

rpmpkgs/mod_ssl-2.2.3-82.el5.centos.i386.rpm

rpmpkgs/nagios-3.5.0.tar.gz

rpmpkgs/nagios-plugins-1.4.16.tar.gz

sent ۹۱ bytes  received ۴٫۹۹M bytes  ۳۲۲٫۱۶K bytes/sec

total size is ۴٫۹۹M  speedup is ۱٫۰۰

  • rsync تحت SSH

یکی از موارد استفاده  rsync انتقال دیتا از SSH است، همانطور که می دانید استفاده از پروتکل SSH باعث افزایش امنیت فایل های شما هنگام انتقال می شود.

الف)کپی کردن یک فایل از یک سرور ریموت به یک سرور محلی با SSH

برای مشخص کردن یک پروتکل با rsync نیاز به استفاده از آپشن  –e به همراه نام پروتکل است. در این مثال، آپشن –e برای استفاده از پروتکل SSH استفاده شده است.

[root@linux-zone]# rsync -avzhe ssh root@192.168.0.100:/root/install.log /tmp/

root@192.168.0.100’s password:

receiving incremental file list

install.log

sent 30 bytes  received 8.12K bytes  ۱٫۴۸K bytes/sec

total size is 30.74K  speedup is 3.77

ب) کپی کردن یک فایل از یک سرور محلی به یک سرور راه دور با SSH

[root@linux-zone]# rsync -avzhe ssh backup.tar root@192.168.0.100:/backups/

root@192.168.0.100’s password:

sending incremental file list

backup.tar

sent 14.71M bytes  received 31 bytes  ۱٫۲۸M bytes/sec

total size is 16.18M  speedup is 1.10

  • نمایش پیشرفت در حال انتقال دیتا با rsync

برای نمایش پیشرفت در حال انتقال دیتا از یک سیستم به سیستم دیگر، ما می توانیم از آپشن  –progress  استفاده کنیم. این آپشن تمام فایل ها و زمان باقی مانده برای کامل شدن انتقال را نشان خواهد داد.

[root@linux-zone]# rsync -avzhe ssh –progress /home/rpmpkgs root@192.168.0.100:/root/rpmpkgs

root@192.168.0.100’s password:

sending incremental file list

created directory /root/rpmpkgs

rpmpkgs/

rpmpkgs/httpd-2.2.3-82.el5.centos.i386.rpm

۱٫۰۲M ۱۰۰%        ۲٫۷۲MB/s        ۰:۰۰:۰۰ (xfer#1, to-check=3/5)

rpmpkgs/mod_ssl-2.2.3-82.el5.centos.i386.rpm

۹۹٫۰۴K ۱۰۰%  ۲۴۱٫۱۹kB/s        ۰:۰۰:۰۰ (xfer#2, to-check=2/5)

rpmpkgs/nagios-3.5.0.tar.gz

۱٫۷۹M ۱۰۰%        ۱٫۵۶MB/s        ۰:۰۰:۰۱ (xfer#3, to-check=1/5)

rpmpkgs/nagios-plugins-1.4.16.tar.gz

۲٫۰۹M ۱۰۰%        ۱٫۴۷MB/s        ۰:۰۰:۰۱ (xfer#4, to-check=0/5)

sent ۴٫۹۹M bytes  received ۹۲ bytes  ۴۷۵٫۵۶K bytes/sec

total size is ۴٫۹۹M  speedup is ۱٫۰۰

  • استفاده ازگزینه ی -include و-exclude

این دو گزینه به ما امکان include   و  exclude فایل ها توسط پارامتر های بخصوص را می دهد، به کمکexclude  از کپی و همگام سازی شدن فایل هایی که نمیخواهیم جلوگیری کنیم و به کمکinclude   آن فایل ها و یا دایرکتوری ها را شامل تغییرات وهمگام سازی کنیم

در این مثال، دستورrsync  تمام فایل ها و دایرکتوری هایی را که باR  شروع شده اند را include   کرده و بقیه را exclude  می کند.

[root@linux-zone]# rsync -avze ssh –include ‘R*’ –exclude ‘*’ root@192.168.0.101:/var/lib/rpm/ /root/rpm

root@192.168.0.101’s password:

receiving incremental file list

created directory /root/rpm

./

Requirename

Requireversion

sent ۶۷ bytes  received ۱۶۷۲۸۹ bytes  ۷۴۳۸٫۰۴ bytes/sec

total size is ۴۳۴۱۷۶  speedup is ۲٫۵۹

  • استفاده ازگزینه ی –delete

گاها حالتی پیش می آید که یک فایل یا دایرکتوری در مبدا وجود نداشته باشد، اما پیش از این در مقصد بوده است. اگربخواهید فایل یا دایرکتوری موجود را در حین همگام سازی حذف کنید می توانید از آپشن –delete  برای فایل هایی که در دایرکتوری مبدا وجود ندارند استفاده کنید. مبدا و مقصد همگام هستند. حالا فایل جدید test.txt  را در مقصد ایجاد کنید.

[root@linux-zone]# touch test.txt

[root@linux-zone]# rsync -avz –delete root@192.168.0.100:/var/lib/rpm/ .

Password:

receiving file list … done

deleting test.txt

./

sent ۲۶ bytes  received ۳۹۰ bytes  ۴۸٫۹۴ bytes/sec

total size is ۴۵۳۰۵۹۵۸  speedup is ۱۰۸۹۰۸٫۵۵

  • تنظیم Maximum فایل ها برای انتقال

ماکزیمم سایز فایل برای انتقال یا همگام سازی قابل نتظیم و کنترل است. شما می توانید با استفاده از گزینه ی  max-size   این کار را انجام دهید. در این مثال، ماکزیمم سایز فایل ۲۰۰k  است؛ بدین ترتیب تنها فایلهایی را که برابر یا کوچکتر از ۲۰۰k  هستند انتقال داده خواهند شد.

[root@linux-zone]# rsync -avzhe ssh –max-size=’200k’ /var/lib/rpm/ root@192.168.0.100:/root/tmprpm

root@192.168.0.100’s password:

sending incremental file list

created directory /root/tmprpm

./

Conflictname

Group

Installtid

Name

Provideversion

Pubkeys

Requireversion

Sha1header

Sigmd5

Triggername

__db.001

sent ۱۸۹٫۷۹K bytes  received ۲۲۴ bytes  ۱۳٫۱۰K bytes/sec

total size is ۳۸٫۰۸M  speedup is ۲۰۰٫۴۳

  • حذف اتوماتیک فایل های مبدا بعد از انتقال موفق

اکنون فرض کنید که شما یک وب سرور و یک سرور پشتیبان دارید، شما یک پشتیبان گیری و همگام سازی روزانه با سرور پشتیبان تان ایجاد کرده اید، حالا نمی خواهید که کپی از پشتیبانی که گرفته اید را روی همان وب سرور خود نگه دارید. بنابراین بجای منتظر ماندن تکمیل عملیات انتقال بکاپ گیری فایل روی سرور اصلی آن هم بصورت دستی؛ این حذف می تواند به صورت اتوماتیک با استفاده از گزینه ی –remove-source-files   انجام شود.

[root@linux-zone]# rsync –remove-source-files -zvh backup.tar /tmp/backups/

backup.tar

sent ۱۴٫۷۱M bytes  received ۳۱ bytes  ۴٫۲۰M bytes/sec

total size is ۱۶٫۱۸M  speedup is ۱٫۱۰

[root@linux-zone]# ll backup.tar

ls: backup.tar: No such file or directory

  • اجرای آزمایشی دستورrsync

اگر شما یک تازه وارد هستید و از rsync   استفاده می کنید و نمی دانید دقیقا این دستور چه کار می کند باید بگویم که Rsync واقعا می تواند فولدر مقصد را به هم بریزد و متعاقبا برگرداندن اطلاعات با undo هم کار خسته کننده ای است.

استفاده از این گزینه هیچ تغییراتی را اعال نخواهد کرد و تنها دستور rsync را به صورت آزمایشی انجام داده و خروجی دستور را نشان می دهد، اگر خروجی همان چیزی باشد که شما می خواهید انجام شود، شما می توانید باز هم از همان دستور و این بار با حذف گزینه ی –dry-run   استفاده کنید

.

root@linux-zone]# rsync –dry-run –remove-source-files -zvh backup.tar /tmp/backups/

backup.tar

sent ۳۵ bytes  received ۱۵ bytes  ۱۰۰٫۰۰ bytes/sec

total size is ۱۶٫۱۸M  speedup is ۳۲۳۵۸۴٫۰۰ (DRY RUN)

  • تنظیم محدودیت پهنای باند و انتقال فایل

شما می توانید برای انتقال داده ها از یک ماشین یه ماشین دیگر محدودیت پهنای باند تنظیم کنید، با استفاده از آپشن –bwlimit  این کار را انجام دهید. این گزینه برای محدود کردن پهنای باندI/O   به ما کمک می کند.

[root@linux-zone]# rsync –bwlimit=100 -avzhe ssh  /var/lib/rpm/  root@192.168.0.100:/root/tmprpm/

root@192.168.0.100’s password:

sending incremental file list

sent ۳۲۴ bytes  received ۱۲ bytes  ۶۱٫۰۹ bytes/sec

total size is ۳۸٫۰۸M  speedup is ۱۱۳۳۴۷٫۰۵

همچنین، به صورت پیش فرض rsync   بلاک ها و بایت ها را تغییر می دهد، اگر شما می خواهید صریحا همگام سازی همه ی فایل ها را انجام دهید از گزینه ی –W با آن استفاده کنید.

[root@linux-zone]# rsync -zvhW backup.tar /tmp/backups/backup.tar

backup.tar

sent ۱۴٫۷۱M bytes  received ۳۱ bytes  ۳٫۲۷M bytes/sec

total size is ۱۶٫۱۸M  speedup is ۱٫۱۰

نظر دهید

آدرس ایمیل شما منتشر نمیشود.