اطلاعیه

بستن
هنوز اطلاعیه ای در دست نیست.

10 مثال از دستور Rsync در لینوکس

بستن
X
 
  • فیلتر کردن
  • زمان
  • نمایش
Clear All
پست های جدید

    10 مثال از دستور Rsync در لینوکس

    Rsync مخفف Remote Sync رایج ترین دستور مورد استفاده برای کپی کردن و همگام کردن فایل ها و دایرکتوری ها به صورت remote و همچنین local در سرورهای لینوکس است. با کمک دستور rsync شما می توانید داده های خود را به صورت ریموت و لوکال در دایرکتوری ها و دیسک ها و شبکه ها کپی کرده و همگام سازید، و بین دو ماشین لینوکسی از داده ها بک آپ گیری کنید.


    این مقاله 10 مورد استفاده ی اولیه و پیشرفته ی دستور rsync برای انتقال فایل هایتان به صورت ریموت و لوکال در ماشین های لینوکسی را توضیح می دهد. شما برای اجرای این دستور نیازی نیست که کاربر root باشید.




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




    Syntax اولیه ی دستور rsync
    کد PHP:
    # rsync options source destination 




    برخی گزینه های رایج استفاده شده با دستور rsync


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






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

    ما می توانیم پکیج rsync را با استفاده از دستورات زیر نصب کنیم. بر اساس توزیع لینوکسی که دارید یکی از دستورات زیر را انتخاب و در ترمینال اجرا کنید.
    کد PHP:
    sudo apt-get install rsync [On Debian/Ubuntu Mint]
    sudo yum install rsync [On Fedora/CentOS/RHEL and Rocky Linux/AlmaLinux]
    pacman -S rsync [On Arch Linux]
    emerge sys-apps/rsync [On Gentoo]
    sudo zypper install rsync [On openSUSE





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


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


    دستور زیر یک فایل مجزا را روی یک سیستم و تنها از مسیری به مسیر دیگر sync خواهد کرد. در این مثال، یک فایل به نام backup.tar به فولدر /tmp/backups/ کپی و sync شد.
    کد PHP:
     [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/ کپی شود.
    کد PHP:
    [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 است وجود دارد و شما می خواهید محتوای آنرا از سیستم محلی خود به یک سرور راه دور منتقل کنید، شما می توانید از دستور زیر استفاده کنید.
    کد PHP:
     [root@linux-zone]$ rsync -avz rpmpkgsroot@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 کپی خواهد شد.
    کد PHP:
     [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 تحت SSH

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


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




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


    برای مشخص کردن یک پروتکل با rsync شما نیاز دارید از گزینه ی –e به همراه نام پروتکل استفاده کنید. در این مثال، ما می خواهیم از گزینه ی –e با ssh استفاده کرده و داده ها را انتقال دهیم.
    کد PHP:
     [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
    کد PHP:
     [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 





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

    برای نمایش پیشرفت در حال انتقال دیتا از یک ماشین به ماشین دیگر، ما می توانیم از آپشن –progress استفاده کنیم. تمام فایل ها و زمان باقی مانده برای کامل شدن انتقال را نشان خواهد داد.
    کد PHP:
    [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 





    5 . استفاده از گزینه ی –include و -exclude

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

    در این مثال، دستور rsync تمام فایل ها و دایرکتوری هایی را که با R شروع شده اند را include کرده و بقیه را exclude می کند.
    کد PHP:
     [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 





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

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

    ما می توانیم از گزینه ی –delete برای فایل هایی که در دایرکتوری مبدا وجود ندارند استفاده کنیم. مبدا و مقصد همگام هستند. حالا فایل جدید test.txt را در مقصد ایجاد کنید.
    کد PHP:
     [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 


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






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

    شما می توانید ماکزیمم سایز فایل را برای انتقال یا همگام سازی مشخص کنید. شما می توانید با استفاده از گزینه ی –max-size این کار را انجام دهید. در این مثال، ماکزیمم سایز فایل 200k می باشد، بنابراین این دستور تنها فایلهایی را که برابر یا کوچکتر از 200k هستند انتقال خواهد داد.
    کد PHP:
    [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 





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

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


    بنابراین، آیا تا تکمیل عملیات انتقال منتظر میمانید و سپس فایل بک آپ روی سرور اصلی را دستی پاک میکنید؟ البته که نه. این حذف می تواند به صورت اتوماتیک با استفاده از گزینه ی –remove-source-files انجام شود.
    کد PHP:
     [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
     
    lsbackup.tarNo such file or directory 





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

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


    استفاده از این گزینه هیچ تغییراتی را اعمال نخواهد کرد و تنها دستور rsync را به صورت آزمایشی انجام داده و خروجی دستور را نشان می دهد، اگر خروجی همان چیزی باشد که شما می خواهید انجام شود، شما می توانید باز هم از همان دستور و این بار با حذف گزینه ی –dry-run استفاده کنید.
    کد PHP:
    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





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

    شما می توانید برای انتقال داده ها از یک ماشین یه ماشین دیگر محدودیت پهنای باند تنظیم کنید، با استفاده از گزینه ی –bwlimit این کار را انجام دهید. این گزینه برای محدود کردن پهنای باند I/O به ما کمک می کند.
    کد PHP:
    [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 با آن استفاده کنید.
    کد PHP:
     [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 آشنا شدید، می توانید برای گزینه های بیشتر از man page های آن استفاده کنید.


    همچنین توصیه میشود مطالعه کنید :

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

    نحوه مانیتور کردن عملیات Data با استفاده از دستور PV (مخفف Pipe Viewer)

    pscp - انتقال/کپی فایل ها به چندین سرور لینوکس با استفاده از تنها یک شل

    10 نمونه از دستورات sFTP برای انتقال فایل ها روی سرورهای لینوکس راه دور

    10 نمونه از دستور scp برای انتقال فایل ها و فولدرها در لینوکس

    دستورات nc و pv برای انتقال فایل ها بین دو کامپیوتر


    موفق باشید.
    آخرین ویرایش توسط Habili; در تاریخ/ساعت 08-10-2021, 12:42 PM.
    اینستاگرام انجمن لینوکس ایران : https://www.instagram.com/iranlinuxforum

    #2
    برای مشاهد درصد پیشرفت کپی اطلاعات هم میتوان از آپشن --progress همانند زیر استفاده کرد.
    کد PHP:
    rsync [options] --progress source dest 

    کامنت

    درباره انجمن منطقه لینوکسی ها

    انجمن منطقه لینوکسی ها با هدف ارتقاء سطح علمی کاربران در سطح جهانی و همچنین کمک به بالا بردن سطح علمی عمومی در زمینه های تخصصی فوق پایه گذاری شده است. انجمن منطقه لینوکسی ها از طریق کارشناسان و متخصصان پاسخگوی سوالات گوناگون کاربران مبتدی یا پیشرفته میباشد تا حد امکان تلاش شده که محیطی متنوع و کاربر پسند و به دور از هرگونه حاشیه جهت فعالیت کاربران در این انجمن ایجاد شود. لذا ما به صورت مستمر برای پیشرفت کمی و کیفی محتوی و اطلاعات انجمنمان میکوشیم که این برای ما ارزشمند و حائز اهمیت است. کلیه حقوق،اطلاعات و مقالات در این انجمن متعلق به سایت منطقه لینوکسی ها میباشد، و هرگونه نسخه برداری بدون ذکر منبع مورد پیگرد قانونی خواهد شد.

    شبکه های اجتماعی
    در حال انجام ...
    X