لینوکس, مدیریت سرور لینوکس

آموزش دستور rsync در لینوکس

آموزش دستور rsync در لینوکس

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

آموزش دستور rsync در لینوکس

دستور rsync چیست؟

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

این دستور برای کپی کردن و همگام کردن فایل ها و دایرکتوری ها به صورت remote و همچنین local در سیستم های لینوکسی است.

با کمک دستور rsync شما می توانید داده های خود را به صورت ریموت و لوکال در دایرکتوری ها و دیسک ها و شبکه ها کپی کرده و همگام سازید، و بین دو ماشین لینوکسی از داده ها پشتیبان گیری کنید.

برخی از ویژگی های این دستور:

  • این دستور به گونه ای موثر فایلها را به/از یک سیستم ریموت کپی و sync می کند.
  • Rsync حداقل پهنای باند را مصرف میکند به دلیل اینکه در حین ارسال و دریافت داده ها در هر دو طرف از روش فشرده سازی استفاده می کند.
  • این دستور سریعتر از scp (کپی امن – secure copy) است زیرا rsync از پروتکل remote-update استفاده می کند که تنها امکان انتقال تفاوتهای (خط های متفاوت) بین دو مجموعه از فایل ها را ممکن می سازد. برای بار اول Rsync تمام محتوای یک فایل یا یک دایرکتوری را از منبع به مقصد کپی میکند اما از سری بعد، تنها بلاک ها و بایت ها ی تغییریافته را به مقصد کپی خواهد کرد.
  • کپی کردن لینک ها و دیوایس ها و owner ها و گروه ها و پرمیشن ها را پشتیبانی می کند.

نصب ابزار rsync در لینوکس

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

yum install rsync (On Red Hat based systems)

apt-get install rsync (On Debian based systems)

آموزش کار با دستور rsync

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

rsync options source destination

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

  • -v : برای توضیحات بیشتر
  • -h : قابل خواندن برای انسان، خروجی را به صورت قابل خواندن برای انسان نمایش می دهد.
  • -r : داده ها را به صورت بازگشتی کپی میکند (اما پرمیشن و timestamp آنها را در حال انتقال دیتا حفظ نمی کند.)
  • -z : داده های فایل را فشرده می سازد.
  • -a : مد آرشیو، مد آرشیو تمام فایل هارا به صورت بازگشتی کپی میکند و آن همچنین لینک های سیمبولیک و پرمیشن فایل و user & group ownership و timestamp ها را حفظ می کند.

1- کپی و sync فایل ها و دایرکتوری ها روی یک سیستم local

دستور زیر یک فایل مجزا را روی یک سیستم و تنها از مسیری به مسیر دیگر sync خواهد کرد.

در این مثال، یک فایل به نام backup.tar به فولدر /tmp/backups/ کپی و sync شد.

[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

در مثال بالا، شما می توانید ببینید که اگر مقصد قبلا وجود نداشته است rsync یک دایرکتوری به صورت اتوماتیک برای مقصد ایجاد خواهد کرد.

کپی و sync یک دایرکتوری بر روی یک سیستم محلی

دستور زیر تمام فایل ها را از یک دایرکتوری به دایرکتوری دیگری در همان ماشین منتقل/sync می کند.

در این مثال، /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

2- کپی و همگام سازی فایل ها و دایرکتوری ها به یا از یک سرور

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

برای مثال:

یک فولدر در کامپیوتر محلی شما به نام rpmpkgs که شامل پکیج های rpm است وجود دارد و شما می خواهید محتوای آنرا از سیستم محلی خود به یک سرور راه دور منتقل کنید، شما می توانید از دستور زیر استفاده کنید.

[root@linux-zone]$ 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 399476.80 bytes/sec

total size is 4991313 speedup is 1.00

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

این دستور به شما برای sync یک دایرکتوری ریموت به یک دایرکتوری محلی کمک خواهد کرد.

در این مثال، یک دایرکتوری /home/tarunika/rpmpkgs که برروی یک سیستم راه ور می باشد به سیستم محلی شما در /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 91 bytes received 4.99M bytes 322.16K bytes/sec

total size is 4.99M speedup is 1.00

3- نمایش پیشرفت در حال انتقال دیتا با 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

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

4- rsync تحت ssh

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

همچنین زمانی که ما ازدستور rsync استفاده می کنیم ما نیازبه پسورد root داریم، بنابراین با استفاده از 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 1.48K 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 1.28M bytes/sec

total size is 16.18M speedup is 1.10

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

داتیس نتورک را در شبکه های اجتماعی دنبال کنید.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *