منو سایت

  • خانه
  • وبلاگ
  • راهنمای عملی دستور Rsync (با مثال های عملی)

راهنمای عملی دستور Rsync (با مثال های عملی)

 تاریخ انتشار :
/
  وبلاگ
راهنمای عملی دستور Rsync (با مثال های عملی)

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

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

  • دستور Rsync بهترین و کارآمدترین راه برای کپی و همگام سازی فایل ها و دایرکتوری ها از یک سیستم به سیستم دیگر است.
  • پشتیبانی کامل از اتصالات، دستگاه ها، مالکان، گروه ها و مجوزها
  • این دستور سریعتر از SCP است (SCP مخفف Protected Copy)
  • به دلیل فشرده سازی فایل های مبدا و مقصد، دستور Rsync از کمترین پهنای باند استفاده می کند.

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

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

راه های زیادی برای استفاده از دستور rsync وجود دارد. استفاده از آنها کاملاً خوشمزه است و هرکسی می تواند بنا به نیاز خود از آنها استفاده کند. لازم به ذکر است که برخی از دستورات در rsync می توانند یک یا چند حرف باشند. به عنوان مثال، اجرای rsync -a همان نتیجه rsync -rlptgoD را ایجاد می کند. نکته دیگری که باید به آن دقت کرد استفاده از دستور rsync در هنگام کپی کردن دستورات از سایت ها یا انجمن های اینترنتی است، مخصوصاً زمانی که با دستور مورد نظر آشنایی کامل ندارید. اگر به یاد داشته باشید که از ویندوز استفاده می کنید، با فشار دادن کلید f1 صفحه راهنمای مربوطه برای شما باز می شود. برای کسب اطلاعات بیشتر در مورد دستور rsync، می توانید دستورالعمل های این دستور را با استفاده از دو دستور زیر مشاهده کنید

man rsync
rsync –help

ساختار اصلی دستور rsync شبیه CP و SCP است.

rsync -[options] source destination

اگر می خواهید چندین مقصد را انتقال دهید، باید آنها را به انتهای دستور خود اضافه کنید.

rsync -[options] source destination1 destination2 destination3

در زیر جزئیات و 10 دستور مفید و پرکاربرد دستور rsync را برای شما توضیح خواهیم داد.

توابع رایج در دستور rsync

-v

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

-r

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

  • توجه: این گزینه مجوزها و مُهرهای زمانی را هنگام انتقال داده‌ها ثبت نمی‌کند.
-a

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

  • توجه: این گزینه پیوندهای نمادین و مجوزهای فایل، مالکیت کاربر و گروه و مهرهای زمانی را حفظ می کند.
-z

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

-h

معنی کلمه انسان قابل خواندن این است که وظیفه خواندن داده ها توسط انسان را بر عهده دارد.

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

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)

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

یک فایل را در یک سیستم محلی کپی و همگام کنید

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

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

created directory /tmp/backups

backup.tar

sent 14.71M bytes  received 31 bytes  3.27M bytes/sec

total size is 16.18M  speedup is 1.10

دایرکتوری سیستم محلی را کپی و همگام کنید

با استفاده از دستور زیر می‌توانید همه فایل‌های موجود در یک فهرست مشخص را در یک فهرست جدید در همان سیستم کپی و همگام‌سازی کنید. در این مثال، دایرکتوری /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 4.99M bytes  received 92 bytes  3.33M bytes/sec

total size is 4.99M  speedup is 1.00

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

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

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

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

[email protected]'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  399476.80 bytes/sec

total size is 4991313  speedup is 1.00

دایرکتوری راه دور را در ماشین محلی کپی و همگام کنید

این دستور به شما کمک می کند یک دایرکتوری راه دور را با یک دایرکتوری محلی کپی و همگام سازی کنید. در این مثال، دایرکتوری /home/tarunika/rpmpkgs روی یک سیستم راه دور قرار دارد. با استفاده از دستور زیر در فهرست /tmp/myrpms سیستم محلی شما کپی می شود.

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

[email protected]'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 91 bytes  received 4.99M bytes  322.16K bytes/sec

total size is 4.99M  speedup is 1.00

rsync تحت SSH

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

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

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

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

[email protected]'s password:

receiving incremental file list

install.log

sent 30 bytes  received 8.12K bytes  1.48K bytes/sec

total size is 30.74K  speedup is 3.77

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

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

[email protected]'s password:

sending incremental file list

backup.tar

sent 14.71M bytes  received 31 bytes  1.28M bytes/sec

total size is 16.18M  speedup is 1.10

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

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

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

[email protected]'s password:

sending incremental file list

created directory /root/rpmpkgs

rpmpkgs/

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

1.02M 100%        2.72MB/s        0:00:00 (xfer#1, to-check=3/5)

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

99.04K 100%  241.19kB/s        0:00:00 (xfer#2, to-check=2/5)

rpmpkgs/nagios-3.5.0.tar.gz

1.79M 100%        1.56MB/s        0:00:01 (xfer#3, to-check=1/5)

rpmpkgs/nagios-plugins-1.4.16.tar.gz

2.09M 100%        1.47MB/s        0:00:01 (xfer#4, to-check=0/5)

sent 4.99M bytes  received 92 bytes  475.56K bytes/sec

total size is 4.99M  speedup is 1.00

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

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

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

[root@linux-zone]# rsync -avze ssh --include 'R*' --exclude '*' [email protected]:/var/lib/rpm/ /root/rpm

[email protected]'s password:

receiving incremental file list

created directory /root/rpm

./

Requirename

Requireversion

sent 67 bytes  received 167289 bytes  7438.04 bytes/sec

total size is 434176  speedup is 2.59

با استفاده از گزینه -delete

گاهی اوقات اتفاق می افتد که یک فایل یا دایرکتوری در مبدا وجود ندارد، اما قبلاً در مقصد بوده است. اگر می خواهید یک فایل یا دایرکتوری موجود را در حین همگام سازی حذف کنید، می توانید از گزینه -delete برای فایل هایی که در فهرست منبع وجود ندارند استفاده کنید. مبدا و مقصد همگام هستند. حالا یک فایل test.txt جدید در مقصد ایجاد کنید.

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

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

Password:

receiving file list ... done

deleting test.txt

./

sent 26 bytes  received 390 bytes  48.94 bytes/sec

total size is 45305958  speedup is 108908.55

حداکثر مجموعه فایل برای انتقال

حداکثر اندازه فایل برای انتقال یا همگام سازی قابل تنظیم و کنترل است. با استفاده از گزینه حداکثر اندازه می توانید این کار را انجام دهید. در این مثال، حداکثر اندازه فایل 200k است. به این ترتیب فقط فایل هایی که مساوی یا کمتر از 200k باشند منتقل می شوند.

[root@linux-zone]# rsync -avzhe ssh --max-size="200k" /var/lib/rpm/ [email protected]:/root/tmprpm

[email protected]'s password:

sending incremental file list

created directory /root/tmprpm

./

Conflictname

Group

Installtid

Name

Provideversion

Pubkeys

Requireversion

Sha1header

Sigmd5

Triggername

__db.001

sent 189.79K bytes  received 224 bytes  13.10K bytes/sec

total size is 38.08M  speedup is 200.43

حذف خودکار فایل های منبع پس از انتقال موفقیت آمیز

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

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

backup.tar

sent 14.71M bytes  received 31 bytes  4.20M bytes/sec

total size is 16.18M  speedup is 1.10

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

ls: backup.tar: No such file or directory

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

اگر مبتدی هستید که از rsync استفاده می‌کنید و نمی‌دانید این دستور دقیقاً چه کاری انجام می‌دهد، باید بگویم که Rsync واقعاً می‌تواند پوشه هدف را خراب کند و متعاقباً بازگرداندن داده‌ها با undo کار خسته‌کننده‌ای است.

با استفاده از این گزینه هیچ تغییری ایجاد نمی شود و فقط دستور rsync را به عنوان آزمایش اجرا می کند و خروجی دستور را نشان می دهد، اگر خروجی همان چیزی است که می خواهید انجام شود می توانید دوباره همان دستور را اجرا کنید و این گزینه Run with – را به کار بر روی خشک حذف شده است.

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

backup.tar

sent 35 bytes  received 15 bytes  100.00 bytes/sec

total size is 16.18M  speedup is 323584.00 (DRY RUN)

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

با استفاده از گزینه -bwlimit می توانید یک محدودیت پهنای باند برای انتقال داده ها از یک ماشین به ماشین دیگر تعیین کنید. این گزینه به ما کمک می کند پهنای باند I/O را محدود کنیم.

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

[email protected]'s password:

sending incremental file list

sent 324 bytes  received 12 bytes  61.09 bytes/sec

total size is 38.08M  speedup is 113347.05

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

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

backup.tar

sent 14.71M bytes  received 31 bytes  3.27M bytes/sec

total size is 16.18M  speedup is 1.10

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