Rsync یکی از پرکاربردترین و ساده ترین دستورات مورد استفاده در سیستم عامل لینوکس است. همانطور که از نام آن پیداست، دستور Rsync برای همگام سازی و انتقال داده ها از راه دور و محلی در پوشه ها، دیسک ها و شبکه ها استفاده می شود.
مزایای استفاده از Rsync بر روی روش های CP و SCP
- دستور rsync بهترین و کارآمدترین راه برای کپی و همگام سازی فایل ها و دایرکتوری ها از یک سیستم به سیستم دیگر است.
- پشتیبانی کامل از لینک ها، دستگاه ها، مالکان، گروه ها و مجوزها
- این دستور سریعتر از SCP است (SCP مخفف Secure Copy است)
- دستور Rsync به دلیل فشرده سازی فایل ها در مبدا و مقصد، از کمترین پهنای باند استفاده می کند.
نکته: دلیل سرعت بالای rsync استفاده از پروتکل Remote-update است. با استفاده از این پروتکل، تنها خطوط جداگانه منتقل می شود. در اولین انتقال، 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
در ادامه جزئیات دستور rsync و 10 دستور مفید و پرکاربرد برای شما توضیح داده می شود.
ویژگی های رایج در دستور rsync
-v
ابتدای کلمه verbose که برای توضیح بیشتر در دستور rsync استفاده می شود برای این گزینه استفاده می شود.
-r
ابتدای کلمه بازگشتی که داده ها را به صورت بازگشتی کپی می کند.
- توجه: این گزینه مجوزها و برچسب های زمانی را هنگام انتقال داده ذخیره نمی کند.
-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/ 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
دایرکتوری راه دور را در دستگاه محلی کپی و همگام کنید
این دستور به شما کمک می کند تا دایرکتوری راه دور را در فهرست محلی کپی و همگام کنید. در این مثال، پوشه /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
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 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
برای نمایش پیشرفت انتقال اطلاعات از یک سیستم به سیستم دیگر می توانیم از گزینه -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
با استفاده از گزینه -include و -exclude
این دو گزینه به ما این امکان را می دهد که فایل ها را با پارامترهای خاص اضافه و حذف کنیم، با کمک Exclusion می توانیم از فایل هایی که نمی خواهیم کپی و همگام شوند جلوگیری کنیم و با کمک include می توانیم آن فایل ها یا دایرکتوری ها را حذف کنیم. شامل تبدیل و همگام سازی است
در این مثال، دستور rsync شامل تمام فایل ها و دایرکتوری هایی است که با R شروع می شوند و بقیه را حذف می کند.
[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 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 root@192.168.0.100:/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/ 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 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 را به عنوان آزمایش اجرا می کند و خروجی دستور را نشان می دهد، اگر خروجی همان چیزی است که می خواهید انجام دهید، می توانید همان دستور را دوباره اجرا کنید و این اجرا را با – امتحان کنید – گزینه خشک اجرا حذف شد.
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/ root@192.168.0.100:/root/tmprpm/ root@192.168.0.100'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
برای انتقال فایل های حجیم بین سرورها از دستور Rs استفاده می کنیم. اگر کاربر سرور مجازی یا سرویس های سرور اختصاصی ما هستید یا می خواهید فایل های حجیم را بین سرورهای خود انتقال دهید، توصیه می کنیم از این راهنما برای اهداف خود استفاده کنید. در صورت بروز مشکل در هنگام استفاده از این دستور با ما تماس بگیرید تا تیم فنی گنج هاست فایل ها را برای شما انتقال دهد.