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

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

نیاز به انتقال فایل‌ها بین سرورها و رایانه‌ها اغلب به وجود می‌آید، مخصوصاً هنگام مدیریت چندین دستگاه. معمولاً استفاده از ssh و scp برای این اهداف راحت است، اما اگر فایل بسیار بزرگ است و تنها قسمت کوچکی از آن تغییر کرده است، یا می‌خواهید همیشه همگام‌سازی خودکار را تنظیم کنید، واضح است که scp گزینه ایده‌آلی نیست. ابزارهای ویژه ای برای این کار وجود دارد. در این مقاله به بررسی یکی از آنها می پردازیم. یعنی همگام سازی rsync در لینوکس در نظر گرفته خواهد شد.

Rsync یک نرم افزار متن باز است که می تواند برای همگام سازی فایل ها و پوشه ها از یک کامپیوتر محلی به یک کامپیوتر راه دور و بالعکس استفاده شود. یکی از ویژگی های قابل توجه Rsync امکان انتقال فایل های رمزگذاری شده با استفاده از SSH و SSL است. علاوه بر این، در اینجا انتقال فایل ها بر خلاف سایر برنامه های مشابه که یک رشته مجزا برای انتقال هر فایل ایجاد می کند، در یک رشته انجام می شود. این باعث افزایش سرعت می شود و تاخیرهای اضافی را که در هنگام انتقال تعداد زیادی فایل کوچک مشکل ساز می شوند، حذف می کند.

امکان استفاده از rsync برای همگام سازی فایل ها، دایرکتوری ها وجود دارد، در حالی که می توان فشرده سازی و رمزگذاری را اعمال کرد. این برنامه اولین بار در ژوئن 1996 توسط اندرو تریگل و پل ماکراس مورد استفاده قرار گرفت. همگام سازی Rsync با استفاده از پروتکل RSYNC انجام می شود که نه تنها برای انتقال فایل ها بین دو رایانه بلکه برای همگام سازی آنها طراحی شده است. به عبارت دقیق تر، کل فایل را منتقل نمی کند، بلکه فقط مواردی که تغییر کرده اند را منتقل می کند.

همانطور که قبلا متوجه شدید، در این مقاله به نمونه های همگام سازی rsync، راه اندازی rsync و همچنین ویژگی ها و گزینه های اصلی آن خواهیم پرداخت.

ویژگی های Rsync

بیایید ابتدا به ویژگی های قابل توجه Rsync نگاهی بیندازیم:

  • امکان همگام نگه داشتن درختان دایرکتوری
  • می‌توانید پیوندهای نمادین، پیوندهای سخت، مالکان و مجوزهای فایل، ابرداده و زمان ایجاد را ذخیره کنید.
  • به هیچ امتیاز خاصی نیاز ندارد
  • انتقال فایل در یک جریان
  • پشتیبانی از RSH، SSH به عنوان یک حمل و نقل
  • پشتیبانی از rsync ناشناس

نحو Rsync

ما به نصب این ابزار در سیستم نمی پردازیم. این بسیار محبوب است، بنابراین می توانید آن را با مدیر بسته خود از مخازن رسمی نصب کنید. در اوبونتو، دستور نصب به صورت زیر خواهد بود:

$ sudo apt-get install rsync

و اکنون، طبق سنت چنین مقالاتی، بیایید به نحو دستور rsync نگاه کنیم:

$ rsync گزینه های مقصد مقصد

منبع و مقصد می تواند یک فهرست راه دور یا محلی باشد. به عنوان مثال، ssh، rsync، سرور سامبا یا فهرست محلی. Options گزینه های اضافی را برای rsync مشخص می کند.

گزینه های Rsync

حالا بیایید نگاهی گذرا به گزینه های rsync بیندازیم. همه گزینه ها در اینجا فهرست نشده اند. برای اطلاعات بیشتر به man rsync مراجعه کنید:

  • -v- نمایش اطلاعات دقیق در مورد فرآیند کپی
  • -q- حداقل اطلاعات
  • - تأیید جمع‌های چک برای فایل‌ها
  • - حالت بایگانی
  • - مسیرهای نسبی
  • - ایجاد یک نسخه پشتیبان
  • -u- فایل های جدیدتر را بازنویسی نکنید
  • - پیوندهای نمادین را کپی کنید
  • - محتوای پیوند را کپی کنید
  • -اچ- لینک های سخت را کپی کنید
  • - مجوزهای فایل را ذخیره کنید
  • -g- گروه را ذخیره کنید
  • -t- صرفه جویی در زمان اصلاح
  • -ایکس- فقط در این فایل سیستم کار کنید
  • -e- از حمل و نقل دیگر استفاده کنید
  • -z- فشرده سازی فایل ها قبل از انتقال
  • --حذف- حذف فایل هایی که در منبع نیستند
  • -- استثناء کردن- حذف فایل ها بر اساس الگو
  • -- بازگشتی- تکرار بر روی دایرکتوری ها به صورت بازگشتی
  • --بدون بازگشتی- غیرفعال کردن بازگشت
  • --پیش رفتن- نمایش پیشرفت انتقال فایل
  • --stat- نمایش آمار انتقال
  • --نسخه- نسخه کاربردی

راه اندازی سرور rsync

همانطور که می‌دانید، نمی‌توانید بدون نصب نرم‌افزار خاصی روی اولین دستگاهی که با آن مواجه می‌شوید، فایل‌ها را بردارید و پرتاب کنید. یک سرور RSYNC، SSH، Samba یا FTP باید بر روی دستگاه راه دور نصب و پیکربندی شود که با کمک آن Rsync می تواند به دستگاه وارد شده و فایل ها را به آنجا منتقل کند.

بیایید به حداقل تنظیمات سرور rsync نگاه کنیم تا بتوان کپی فایل rsync را انجام داد. این به ما امکان می دهد نه تنها فایل ها را با دستگاه همگام سازی کنیم، بلکه از آنجا نیز دریافت کنیم.

ابتدا یک فایل کانفیگ با محتوای زیر ایجاد کنید:

$ sudo nano /etc/rsyncd.conf

مسیر = /tmp/share/ میزبان ها اجازه می دهند = 192.168.1.* میزبان ها انکار می کنند = * لیست = uid واقعی = ریشه gid = ریشه فقط خواندنی = غلط

در اینجا مسیر پوشه همگام سازی خود را تنظیم می کنیم، اجازه دسترسی به سرور را فقط از طریق شبکه خانگی (192.168.1.*) می دهیم و همه اتصالات دیگر را ممنوع می کنیم. پارامترهای uid و gid کاربر و گروهی را که دیمون تحت آن اجرا می شود مشخص می کند. بهتر است از root استفاده نکنید، بلکه کاربر nobody را مشخص کنید و به او حق پوشه ای بدهید که rsync دایرکتوری ها را در آن همگام سازی می کند.

$ شروع سرویس sudo rsyncd

$ sudo سرویس rsyncd را فعال کنید

نمونه های همگام سازی Rsync

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

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

$ rsync -zvh فایل /tmp/backups/

همگام سازی پوشه ها در دستگاه محلی

همگام سازی پوشه ها با rsync به سادگی همگام سازی فایل ها است:

$ rsync -avzh /home/user/documents /tmp/backups/

همگام سازی با سرور راه دور

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

اسناد $ rsync -avz/ [ایمیل محافظت شده]:/خانه/

همچنین می‌توانید فایل‌ها را با rsync از یک سرور راه دور همگام‌سازی کنید:

$ rsync -avz [ایمیل محافظت شده]:/خانه/اسناد/

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

نام کاربری@machine_address:port/folder/on/remote_machine

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

همگام سازی فایل ها از طریق SSH

برای تنظیم پروتکل اتصال از گزینه -e استفاده می شود. هنگام استفاده از SSH، تمام داده های ارسال شده رمزگذاری شده و از طریق یک کانال امن منتقل می شود، به طوری که هیچ کس نمی تواند آن را رهگیری کند.

برای استفاده از SSH باید رمز عبور کاربر در سیستم را بدانید.

همگام سازی فایل های rsync از یک سرور راه دور از طریق ssh به شکل زیر خواهد بود:

$ rsync -avzhe ssh [ایمیل محافظت شده]:/root/install.log /tmp/

و اکنون داده ها را به همان سرور منتقل می کنیم:

$ rsync -avzhe ssh backup.tar [ایمیل محافظت شده]:/پشتیبان گیری/

مشاهده پیشرفت در حین همگام سازی

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

$ rsync -avzhe ssh --progress /home/user/documents [ایمیل محافظت شده]:/root/documents

همگام سازی همه فایل ها در rsync

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

به عنوان مثال، بیایید تمام فایل هایی که با حرف R شروع می شوند را کپی کنیم:

$ rsync -avze ssh -- شامل "R*" -- استثنا "*" [ایمیل محافظت شده]:/root/documents/ /root/documents

حذف در همگام سازی

در حین همگام‌سازی، می‌توانید فایل‌هایی را که در دستگاهی که همگام‌سازی rsync از آنجا می‌آید نیستند، حذف کنید، برای این کار از گزینه --delete استفاده می‌شود.

مثلا:

$ rsync -avz --delete [ایمیل محافظت شده]:/documents/ /tmp/documents/

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

حداکثر اندازه فایل

شما می توانید حداکثر اندازه فایل هایی که باید همگام سازی شوند را تعیین کنید. برای این کار از گزینه --max-size استفاده می شود. به عنوان مثال، ما فقط فایل های کوچکتر از 200 کیلوبایت را همگام می کنیم:

$ rsync -avzhe ssh --max-size="200k" /user/documents/ [ایمیل محافظت شده]:/root/documents

حذف فایل های اصلی

پس از اتمام همگام سازی با سرور راه دور، می توان فایل های منبع را حذف کرد:

$ rsync --remove-source-files -zvh backup.tar /tmp/backups/

بنابراین، فایل backup.tar پس از اتمام کپی در پوشه /tmp/backups حذف خواهد شد.

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

من سعی خواهم کرد برای خواندن کتابچه راهنمای شما در زمان صرفه جویی کنم و مهمترین و مفیدترین آنها را به شما بگویم. به عبارت ساده، همانطور که هست.

چرا rsync مورد نیاز است؟

اگر cp و scp معمولی دارید، چرا از rsync استفاده کنید.

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

    از سوی دیگر، rsync به طور پیش‌فرض فقط فایل‌های جدید و تغییر یافته را کپی می‌کند، و نه فقط فایل‌ها را - بلکه بخش‌هایی از آنها را جدا می‌کند و این کار را به‌طور وحشیانه و کارآمد انجام می‌دهد.

این دو دلیل به تنهایی برای فراموش کردن cp در کار روزانه شما کافی است، مبادله این دستور و آنالوگ های آن با rsync.

اصل کاربرد

اگر در مورد کپی کردن ساده فایل ها صحبت می کنیم، اولین کاری که باید انجام دهید این است که همیشه یک اجرا خشک (سوئیچ -n) در حالت کلامی (-v) انجام دهید:

منبع rsync -avn example.com:destination

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

بعد از اینکه مطمئن شدید دقیقاً چیزی که می خواهید کپی شده است، می توانید کپی واقعی را شروع کنید:

منبع rsync -av example.com:destination

در این دستور، سوئیچ -a به معنای کپی بازگشتی همه فایل ها و دایرکتوری ها، از جمله ویژگی های آنها، مانند تاریخ ایجاد و تاریخ اصلاح است. سوئیچ -v گزارش مفصلی از کار را در حین انجام و پس از اتمام به شما می دهد.

قوانین کپی کردن دایرکتوری ها

از یک طرف، قوانین بسیار ساده هستند.

    اگر در انتهای مسیر منبع نام‌گذاری شده، اسلشی وجود نداشته باشد، خود دایرکتوری کپی می‌شود.

    $ rsync -avn path/to/source example.com:destination sending incremental file list source/ source/example.html ...

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

    $ rsync -avn path/to/source/ example.com:destination ^^^ ارسال فهرست فایل افزایشی example.html ... # که معادل این دستور است: $ cd path/to/source; rsync -avn . example.com:destination

از سوی دیگر، با کپی کردن محتویات دایرکتوری به جای خود دایرکتوری، می توان فراموش کرد که چه چیزی و چگونه در گرما و چگونه است، و با حذف فایل های اضافی که از ناکجاآباد ظاهر شده اند با تاریخ در گذشته (سوئیچ -a، به یاد دارید؟).

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

چند کلید مفید

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

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

    اگر فایل‌ها را از سروری بسیار شلوغ یا ضعیف کپی می‌کنید، می‌توانید با کپی کردن کامل آنها از هدر رفتن منابع CPU برای محاسبه قسمت‌های تغییر یافته فایل‌ها جلوگیری کنید. این به سوئیچ -W نیاز دارد.

    اگر می‌خواهید بدانید چقدر فکر می‌کند rsync برای کار باقی مانده است، به سوئیچ --info=progress2 نیاز دارید. اگر کل یک سیستم فایل را کپی می کنید، این کلید، زمانی که به تنهایی استفاده شود، شما را ناامید می کند: اطلاعات مربوط به حجم کل به طور مداوم به روز می شود. این به این دلیل است که rsync قبل از شروع کپی کردن، سعی نمی کند کل فایل سیستم را بخواند، بلکه هر دو کار را همزمان انجام می دهد.

    اما ناامید نشو! اگر می‌خواهید دقیقاً بدانید از همان ابتدا چقدر کار باقی مانده است، می‌توانید اسکن متوالی را با سوئیچ --no-inc-recursive یا به طور خلاصه --no-i-r غیرفعال کنید.

    $ rsync -ah --partial --info=progress2 --no-i-r source example.com:destination 623.38M 0% 82.23MB/s 0:11:10

    کلیدهای بالا از نسخه 3.1.0 در دسترس هستند، یعنی از قبل در دبیان پایدار کار می کنند.

    اگر نه تنها نیاز به کپی کردن فایل‌ها، بلکه همگام‌سازی کامل محتویات دایرکتوری‌ها با حذف فایل‌های غیر ضروری ندارید، در حالی که به دلایلی با همگام‌سازی فایل‌ها با استفاده از Git راحت نیستید، سوئیچ --delete (یا معادل آن --del) به کار خواهد آمد

    با این سوئیچ، rsync فایل های غیر ضروری را از فهرست مقصد حذف می کند.

    $ rsync -avn --حذف منبع example.com: ارسال لیست فایل افزایشی مقصد حذف source/bad.txt source/ source/test.txt

    سوئیچ -n در دستور بالا به عمد کنار گذاشته شد.

بیایید یک کلمه در مورد فشرده سازی بگوییم

برخلاف تصور غلط رایج، استفاده از فشرده سازی در داخل rsync (سوئیچ -z) بیشتر از اینکه مفید باشد، ضرر دارد. موضوع این است که همه جا از OpenSSH که از نسخه پایانی سال 2005 استفاده می شود، به طور پیش فرض از فشرده سازی داده های منتقل شده استفاده می کند. می‌دانید که فشرده‌سازی داده‌های از قبل فشرده‌شده فقط از منابع پردازشگر استفاده می‌کند، بدون اینکه مقدار داده‌های منتقل شده را کاهش دهد.

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

$ ssh -v [ایمیل محافظت شده]نادرست 2>&1 | grep compression debug1: فعال کردن فشرده سازی در سطح 6.

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

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

ما تا حدی کپی می کنیم

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

در ساده ترین حالت، شما می خواهید rsync فایل ها را از سیستم های کنترل نسخه های مختلف، از جمله دایرکتوری مانند .svn و .git کپی نکند. در این کار، به هیچ چیز دیگری غیر از سوئیچ -C (یا -cvs-exclude در فرم کامل آن) نیاز ندارید. بنابراین اکثر فایل های VCS محبوب نادیده گرفته می شوند که گویی وجود ندارند. فراموش نکنید که در اولین اجرا از -n استفاده کنید.

rsync -nC example.com: مقصد منبع

ممکن است اتفاق بیفتد که شما به اشتباه تعدادی از این فایل ها را از VCS کپی کنید. در این حالت، برای دریافت یک کپی تمیز، به سوئیچ --delete-excluded نیاز دارید که با آن تمام فایل های حذف شده حذف می شوند.

rsync -nC --delete-excluded example.com:منبع مقصد

حذف از طریق rsync-filter

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

$ cat source/.rsync-filter - test.bin - *.tmp - /.cache - /example/ - /**/Trash/ - /.mozilla/firefox/*/Cache/ + Projects/**/Trash/

برای حذف چیزی از لیست انتقال، باید یک خط با قانون به این فایل اضافه کنید (- یا + در ابتدای خط).

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

    # هیچ فایل test.bin کپی نمی‌شود - test.bin # همه فایل‌های tmp حذف می‌شوند - *.tmp

    اگر می خواهید یک فایل یا دایرکتوری را حذف کنید به طور نسبیدایرکتوری که rsync-filter در آن قرار دارد، سپس با یک اسلش در ابتدا مشخص کنید:

    # دایرکتوری یا فایل .cache را کپی نمی کند، اما foo/.cache و foo/bar/.cache را کپی می کند - /.cache # مثال دایرکتوری را کپی نمی کند، اما نمونه فایل را کپی می کند - /example/

    در قوانین، یک ستاره با هر کاراکتری به جز اسلش مطابقت دارد و دو ستاره اصلاً با هر کاراکتری مطابقت دارد:

    # دایرکتوری های .local/share/Trash/ and Documents/example/Trash/ حذف خواهند شد - /**/Trash/ # دایرکتوری .mozilla/firefox/abcd.profile/ext/Cache/ نادیده گرفته نمی شود. دایرکتوری mozilla .پرش می شود /firefox/abcd.profile/Cache/ - /.mozilla/firefox/*/Cache/

    در نهایت، اگر به هر حال نیاز به کپی شدن برخی از فایل ها دارید، با وجود قوانین تنظیم شده قبلی، می توان آنها را با قانون + در ابتدای خط علامت گذاری کرد.

    # دایرکتوری Projects/Example/layout/Trash/ کپی می شود + پروژه ها/**/Trash/

فایل‌های rsync-filter دستور rsync می‌تواند کل ساختار دایرکتوری را هنگام اجرا با سوئیچ -F جستجو کند.

اگر می خواهید خود این فایل ها کپی نشوند، باید این کلید را دو بار به صورت زیر مشخص کنید:

$ rsync -avFFn منبع example.com:destination sending incremental file list source/ source/example.html source/tmp/ source/tmp/foo.bin ارسال شده 174 بایت دریافتی 30 بایت 408.00 بایت در ثانیه حجم کل 18400 است افزایش سرعت 90.20 ( اجرای خشک)

همانطور که می بینید، فایل های اضافی کپی نشدند:

منبع $ ls/.rsync-filter source/foo.tmp source/foo.tmp source/.rsync-filter $ cat source/.rsync-filter - *.tmp

Rsync را بر ssh محدود کنید

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

به عنوان مثال، شما می‌خواهید بتوانید فایل‌ها را فقط از host server.example.com در سرور backup.example.com، فقط و فقط در پوشه backup-example و فقط با این گزینه‌ها کپی کنید:

$ rsync -aW --del source/ backup.example.com:destination/backup-example/

سپس ابتدا باید دستوری را که rsync هنگام فراخوانی ssh روی میزبان راه دور اجرا می کند را دریافت کنید:

$ rsync -e "ssh -t -v" -aW --del source/ backup.example.com:destination/backup-example/ 2>&1 | دستور grep debug1: دستور ارسال: rsync --server -lWogDtpre.iLsfxC --delete-during . مقصد/نمونه پشتیبان/

بر این اساس، در ~/.ssh/authorized_keys در example.com، برای یک کلید ssh شناخته شده، هنگام اتصال این دستور را به طور پیش فرض اجرا کنید:

from="server.example.com",command="rsync --server -lWogDtpre.iLsfxC --delete-during . destination/backup-example/",no-pty,no-port-forwarding ssh-rsa AAAA.. .# بعدی کلید شماست

بنابراین، حتی اگر هنگام شروع rsync، برخی از گزینه‌های دیگر مشخص شده باشند، دستور rsync مربوط به گزینه‌ها و تنظیمات اصلی که شما مشخص کرده‌اید همچنان در سرور مقصد اجرا می‌شود.

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

ماشین زمان

آن دسته از کاربران macOS و OS X که پشتیبان تهیه می کنند، مطمئناً از کار Time Machine قدردانی خواهند کرد. این برنامه به شما امکان می دهد تنها با دو کلیک به نسخه قبلی هر فایلی بازگردید. با وجود همه زیبایی ها، Time Machine کاری را که ما نتوانیم با rsync انجام دهیم، انجام نمی دهد.

#!/bin/bash set -o nounset -o errexit cd $(dirname " $0 " ) date = $(date --iso-8601 = seconds) test -L آخرین || ln -s "$date" آخرین rsync --delete-excluded --prune-empty-dirs --archive -F --link-dest = ../latest " [ایمیل محافظت شده]" "./ $date " rm آخرین ln -s " $date " آخرین

اسکریپت باید در ریشه درایو یا دایرکتوری جایی که باید پشتیبان گیری شود، قرار گیرد.

با یک آرگومان اجرا کنید: فهرست منبع. مثلا بله.

/mnt/backups/backup/home

پس از چند بار اجرا، ساختار دایرکتوری به شکل زیر است:

2017-02-08T22:05:04+09:00 2017-02-08T22:10:05+09:00 2017-02-08T22:15:05+09:00 2017-02-08T22:20:20: :00 2017-02-08T22:25:05+09:00 2017-02-08T22:30:04+09:00 آخرین -> 2017-02-08T22:30:04+09:00

در این مورد، آخرین به آخرین نسخه پشتیبان اشاره می کند.

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

$ du -sh /mnt/پشتیبان گیری 4.5 میلیون /mnt/پشتیبان گیری $ du -sh /home 3.8M /home

کل مجموعه کپی ها فقط کمی فضای بیشتری نسبت به فهرست اصلی اشغال می کند. مکان به فایل های تغییر یافته می رود.

اگر چیزی تغییر نکرده باشد، باز هم فضا با ایجاد دایرکتوری هایی که نمی توانند به عنوان لینک های سخت ذخیره شوند، مصرف می شود.

$ du -hs 2017-02-08T22:20:06+09:00 2017-02-08T22:25:05+09:00 2017-02-08T22:30:04+09:00 3.8M 2017-02-02-2017 :20:06+09:00 136K 2017-02-08T22:25:05+09:00 136K 2017-02-08T22:30:04+09:00

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

$ stat -c "%i" 2017-02-08*/example.txt | uniq 31819810

فایل های یکسان و بدون تغییر همان inode را خواهند داشت.

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

مارتین استرایچر
منتشر شده در 1389/02/11

سری مطالب:

در 20 سال گذشته، استفاده از شبکه های کامپیوتری بسیار گسترده شده است. این امر عمدتاً به دلیل توسعه اینترنت، سرمایه گذاری در زیرساخت شبکه ملی و بین المللی و کاهش قیمت تجهیزات شبکه و رایانه بود. امروزه شبکه ها در همه جا وجود دارند و کاربردهای جدید تقاضاها را در مقیاس پذیری و سرعت شبکه افزایش می دهند. اینترنت زمانی با چند ایستگاه کاری کوچک شروع شد، اما اکنون آن و همتایان خصوصی آن، کامپیوترهای بی شماری را به هم متصل می کنند.

اختصارات رایج
  • FTP: پروتکل انتقال فایل
  • webdav: تالیف و نسخه سازی توزیع شده مبتنی بر وب

در همین دوره، UNIX® نیز رشد کرد و نرم افزار قدرتمندتری را برای استفاده ارائه کرد. پروتکل FTP یکی از اولین ابزارها برای تبادل فایل بین سیستم ها بود و امروزه نیز به طور گسترده مورد استفاده قرار می گیرد. دستور rcp (مخفف "کپی از راه دور") یک گام بالاتر از FTP بود زیرا نه تنها عملکرد ابزار استاندارد cp را فراهم می کرد، بلکه فایل ها را از یک ماشین به ماشین دیگر کپی می کرد. rdist، بر اساس rcp، به طور خودکار فایل‌ها را از یک ماشین به بسیاری از سیستم‌ها توزیع می‌کند.

امروزه همه این ابزارها منسوخ شده اند، به عنوان مثال rcp و rdist امکان انتقال امن فایل را فراهم نمی کنند. حالا scp جای آنها را می گیرد. در حالی که FTP هنوز به طور گسترده مورد استفاده قرار می گیرد، SFTP (Secure FTP)، نسخه ایمن FTP، باید تا حد امکان استفاده شود. همچنین گزینه های اشتراک گذاری فایل دیگری مانند WebDAV و BitTorrent™ وجود دارد. البته، هرچه تعداد ماشین‌های بیشتری داشته باشید، هماهنگ نگه داشتن آنها یا حداقل در یک وضعیت شناخته شده دشوارتر است. هنگام کار با scp و WebDAV، این نیاز به نوشتن اسکریپت خود دارد که همگام سازی را انجام می دهد.

ابزار ایده آل برای توزیع فایل ها rsync است. می‌تواند پس از قطع اتصال، انتقال فایل‌ها را از سر بگیرد، تنها بخش‌هایی از فایل را که بین فایل مبدأ و کپی مقصد متفاوت است، منتقل می‌کند و می‌تواند پشتیبان‌گیری کامل یا افزایشی انجام دهد. همچنین در همه انواع یونیکس از جمله Mac OS X موجود است و پیوند دادن تقریباً هر طعم یونیکس را آسان می کند.

برای شروع کار با rsync، ابتدا موارد استفاده معمولی را بررسی می کنیم و سپس به سراغ کاربردهای پیشرفته تر می رویم. من از Mac OS X نسخه 10.5، Leopard (نوعی FreeBSD) و Ubuntu Linux® نسخه 8 برای نشان دادن نحوه عملکرد rsync استفاده خواهم کرد. اگر از سیستم عامل دیگری استفاده می کنید، می توانید بیشتر نمونه ها را به آن پورت کنید. همچنین؛ به صفحه rsync man در دستگاه خود مراجعه کنید تا ببینید آیا عملیات استفاده شده در اینجا پشتیبانی می شود یا خیر و در صورت لزوم سعی کنید جایگزینی پیدا کنید.

آشنایی با rsync

درست مانند cp، rsync فایل ها را از یک مکان به مکان دیگر کپی می کند. برخلاف cp، rsync می تواند هم کپی محلی و هم از راه دور انجام دهد. به عنوان مثال، دستور موجود در پوشه /tmp/photos را با تمام محتویات آن در فهرست اصلی کپی می کند.

فهرست 1. کپی کردن دایرکتوری و محتویات آن
$ rsync -n -av /tmp/photos ~ لیست فایل های ساختمان ... عکس های انجام شده/عکس ها/Photo 2.jpg photos/Photo 3.jpg photos/Photo 6.jpg photos/Photo 9.jpg ارسال شده 218 بایت دریافت 56 بایت 548.00 بایت در ثانیه حجم کل 375409 است افزایش سرعت 1370.11

گزینه -v خروجی کامل را فعال می کند. گزینه -a (جایی که مخفف بایگانی است) مخفف گزینه -rlptgoD است، به این معنی که یک کپی بازگشتی، کپی کردن پیوندهای نمادین به عنوان پیوند نمادین، حفظ مجوزهای تمام فایل ها، زمان ایجاد (زمان)، گروه (گروه) و صاحب فایل (مالک)، و همچنین ذخیره فایل های دستگاه و فایل های خاص (دستگاه ها). به طور معمول، سوئیچ -a یک کپی آینه ای از فایل ها ایجاد می کند، مگر اینکه سیستمی که در آن کپی می شود از هیچ ویژگی فایل های کپی شده پشتیبانی نکند. به عنوان مثال، هنگام کپی کردن یک دایرکتوری از UNIX به Windows®، همیشه نمی توان ویژگی ها را به طور کامل نمایش داد. در زیر چند پیشنهاد برای مقابله با شرایط غیر استاندارد ارائه شده است.

rsync گزینه های زیادی دارد. اگر گمان می‌کنید که گزینه‌های دستور، شرح منبع یا مقصد کپی نادرست هستند، می‌توانید اجرا را با -n آزمایش کنید. در طول اجرای آزمایشی، rsync به شما نشان می‌دهد که با هر فایل چه کاری انجام می‌شود بدون اینکه واقعاً یک بایت جابجا شود. پس از آن، پس از اطمینان از صحت تمام پارامترها، می توان -n را حذف کرد و تغییرات اعمال می شود.

لیست 7. کپی کردن فایل ها در ماشین محلی
rsync --port=7777 mymachine.example.com::pickup/ سلام! به سرور rsync مارتین خوش آمدید. drwxr-xr-x 4096 2009/08/23 08:56:19 . -rw-r--r-- 0 2009/08/23 08:56:19 article21.html -rw -r --r-- 0 2009/08/23 08:56:19 design.txt -rw-r--r-- 0 2009/08/23 08:56:19 figure1.png

با تعویض آدرس مبدا و مقصد، می توانید فایل(ها) را از ماشین محلی به ماژول بنویسید، همانطور که در نشان داده شده است.

فهرست 8. تعویض دایرکتوری مبدا و مقصد
$ rsync -v --port=7777 application.js mymachine.example.com::dropbox سلام! به سرور rsync مارتین خوش آمدید application.js ارسال 245 بایت دریافت 38 بایت 113.20 بایت در ثانیه حجم کل 164 است افزایش سرعت 0.58

این یک مرور کلی سریع اما نسبتاً کامل از قابلیت‌های rsync بود. حال بیایید ببینیم چگونه می توانید از این بسته برای کارهای روزمره استفاده کنید. rsync به ویژه برای پشتیبان گیری مفید است. و از آنجایی که می‌تواند فایل‌های محلی و راه دور یا حتی سیستم‌های فایل را همگام‌سازی کند، ابزار عالی برای مدیریت خوشه‌های بزرگ ماشین‌هایی است که باید (حداقل تا حدی) یکسان باشند.

پشتیبان گیری از اطلاعات خود با rsync

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

برای اینکه این کار بدون دردسر باشد، از rsync برای پشتیبان گیری و یک سرور راه دور، که احتمالاً توسط ISP شما ارائه شده است، استفاده کنید. هر یک از ماشین های یونیکس شما می توانند از این مکانیسم استفاده کنند که راه حل ایده آلی برای ایمن نگه داشتن اطلاعات شماست.

کلیدهای SSH، دیمون rsync و ماژول پشتیبان گیری را فعال کنید روی دستگاه راه دور نصب کنید. پس از آن، rsync را اجرا کنید و همانطور که در اسکریپت نشان داده شده است، پشتیبان هایی ایجاد کنید که به سختی فضای زیادی را اشغال می کنند.

لیست 9. ایجاد پشتیبان گیری روزانه از فایل
#!/bin/sh # این اسکریپت بر اساس کار مایکل جاکل (jakl.michael AT gmail DOTCOM) است و از # با اجازه اکسپرس استفاده می شود. HOST=mymachine.example.com SOURCE=$HOME PATHTOBACKUP=تاریخ پشتیبان گیری خانه=`تاریخ "+%Y-%m-%dT%H:%M:%S"` rsync -az --link-dest=$ PATHTOBACKUP/جریان $SOURCE $HOST:PATHTOBACKUP/back-$date ssh $HOST "rm $PATHTOBACKUP/جاری && ln -s عقب-$date $PATHTOBACKUP/جریان"

HOST را با نام سرور پشتیبان خود و SOURCE را با دایرکتوری که می خواهید ذخیره کنید جایگزین کنید. نام ماژول را جایگزین PATHTOBACKUP کنید. (همچنین می توانید سه خط آخر اسکریپت را حلقه کنید و متغیر SOURCE را برای پشتیبان گیری از چندین دایرکتوری تغییر دهید.) این اسکریپت به صورت زیر عمل می کند.

  • ابتدا، رشته ای مانند 2009-08-23T12:32:18 حاوی تاریخ و زمان فعلی در متغیر تاریخ قرار می گیرد. این رشته به طور منحصر به فرد هر نسخه پشتیبان را شناسایی می کند.
  • کار اصلی در اینجا توسط دستور rsync انجام می شود. گزینه های -az تمام اطلاعات مربوط به فایل ها را ذخیره می کند و داده ها را قبل از انتقال فشرده می کند و گزینه --link-dest=$PATHTOBACKUP/current مشخص می کند که اگر فایلی تغییر نکرده است، نباید آن را در یک نمونه پشتیبان جدید کپی کنید. ، اما یک پیوند سخت با اشاره به این فایل در یک آرشیو موجود ایجاد کنید. به عبارت دیگر، نسخه پشتیبان جدید فقط شامل فایل هایی است که تحت آن قرار گرفته اند تغییر می کند، بقیه فایل ها لینک هستند.

    بیایید به اسکریپت با جزئیات بیشتری نگاه کنیم (و همه متغیرها را جایگزین مقادیر آنها کنیم). آرشیو فعلی mymachine.example.com::home-backup/current است. آرشیو جدید برای فهرست /home/strike در فهرست راهنمای mymachine.example.com::home-backup/back-2009-08-23T12:32:18 خواهد بود. اگر فایل در /home/strike اصلاح نشده باشد، فایل موجود در بایگانی جدید با یک پیوند سخت به فایل مربوطه در آرشیو فعلی نشان داده می شود. در غیر این صورت فایل جدید در آرشیو جدید کپی می شود.

    اگر هر روز فقط تعداد کمی از فایل ها و فهرست ها را تغییر دهید، فضای اضافی مورد نیاز برای نسخه پشتیبان بعدی ناچیز خواهد بود. علاوه بر این، از آنجایی که تمام پشتیبان‌گیری‌ها (به استثنای مورد اول) بسیار کوچک هستند، می‌توانید سابقه طولانی فایل‌های خود را در اختیار داشته باشید.

  • در مرحله آخر، سازماندهی پشتیبان‌گیری‌ها را روی دستگاه راه دور تغییر می‌دهیم تا بایگانی جدید ایجاد شده را به آرشیو فعلی تبدیل کنیم و بنابراین تفاوت‌هایی را که در اجرای بعدی اسکریپت باید ثبت شوند، به حداقل می‌رسانیم. آخرین دستور بایگانی فعلی را حذف می کند (که فقط یک پیوند سخت است) و یک پیوند نمادین با همان نام ایجاد می کند که به آرشیو جدید اشاره می کند.

هنگامی که در کارهای روزمره خود با ریموت rsync شروع به کار کردید، احتمالاً نیاز خواهید داشت که دیمون را همیشه فعال نگه دارید. برای ماشین‌های لینوکس و یونیکس، یک اسکریپت بوت rsync وجود دارد که معمولاً در /etc/init.d/rsync قرار دارد. با استفاده از این اسکریپت و ابزار سیستم عامل خود برای کنترل فعال و غیرفعال کردن مؤلفه ها، می توانید ترتیبی دهید که rsync در هنگام بوت شدن سیستم شروع شود. اگر دیمون rsync را بدون حقوق ریشه اجرا می کنید یا به اسکریپت های بوت دسترسی ندارید، می توانید rsync را با cron اجرا کنید:

@reboot /usr/bin/rsync --daemon --port=7777 --config=/home/strike/rsyncd/rsyncd.conf

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

قبلاً دیده‌اید که چگونه می‌توانید با استفاده از پیش‌نمایش با -n یک مشکل را زودتر تشخیص دهید. شما همچنین می توانید وضعیت وظایف rsync را با دو گزینه نظارت کنید: --progress و --stats. اولین مورد از این گزینه ها نوار پیشرفت کار را نشان می دهد. مورد دوم آمار فشرده سازی و انتقال داده را نشان می دهد. استفاده از --compress می تواند سرعت انتقال داده ها را بین ماشین ها افزایش دهد. به جای ارسال داده ها به همان شکلی که هستند، فرستنده آن ها را قبل از ارسال فشرده می کند و گیرنده آن را از حالت فشرده خارج می کند و در نتیجه بایت های کمتری در زمان کمتری تولید می شود.

به طور پیش فرض، rsync همه فایل ها را از منبع داده تا مقصد کپی می کند. به این می گویند تکرار. اگر می خواهید انعکاس داده ها را سازماندهی کنید، به عنوان مثال. برای اطمینان از اینکه داده های محلی و راه دور دقیقاً یکسان هستند، باید از گزینه --delete استفاده شود. برای مثال، اگر منبع حاوی فایل‌های A، B و C باشد، به‌طور پیش‌فرض rsync از هر سه فایل روی دستگاه راه دور کپی می‌کند. با این حال، اگر مثلاً فایل B را از منبع حذف کنید و دوباره تکرار کنید، فایل B در دستگاه راه دور باقی خواهد ماند. کپی از راه دور دیگر یک کپی دقیق از داده های محلی نخواهد بود. دستور --delete با حذف فایل هایی از کپی راه دور که دیگر در داده های اصلی وجود ندارند، انعکاس داده ها را فراهم می کند.

اغلب فایل‌هایی وجود دارند که نمی‌خواهید بایگانی یا نسخه پشتیبان تهیه کنید. اینها می‌توانند فایل‌های کمکی ایجاد شده توسط ویرایشگرها (نام آنها معمولاً با علامت [~] ختم می‌شود) و سایر ابزارهای کمکی، و همچنین بسیاری از فایل‌های بی‌ارزش در فهرست اصلی شما، مانند فایل‌های MP3، که قابل بازیابی هستند، باشند. در صورت لزوم در این حالت، می توانید قالب هایی را برای rsync تعیین کنید تا فایل ها از پردازش حذف شوند. می توانید یک الگو را در خط فرمان مشخص کنید، یا می توانید یک فایل متنی حاوی لیستی از الگوها را مشخص کنید. همچنین می‌توان از الگوها همراه با دستور --delete-excluded برای حذف چنین فایل‌هایی از یک کپی از راه دور استفاده کرد.

برای حذف فایل های مطابق با یک الگوی خاص، از دستور --exclude استفاده کنید. به یاد داشته باشید که اگر هر یک از کاراکترهای الگو برای پوسته معنای خاصی دارند، مانند *، پس الگو باید در یک نقل قول قرار داده شود:

$ rsync -a --exclude="*~" /home/strike/data example.com::data

فرض کنید فایل /home/strike/excludes حاوی لیست الگوهای زیر است:

*~ *.قدیمی *.mp3 tmp

سپس می‌توانید همه فایل‌ها را به جز آنهایی که با هر یک از این الگوها مطابقت دارند، با دستور زیر کپی کنید:

$ rsync -a --exclude-from=/home/strike/excludes /home/strike/data example.com::data

آن را همگام کنید

اکنون که با rsync آشنا شدید، دلیلی وجود ندارد که به طور منظم نسخه پشتیبان تهیه نکنید. چی شد؟ آیا سگ شما هارد دیسک شما را جویده است؟ (این نیز اتفاق می افتد!) از قبل اقدام کنید، و سپس اطلاعات شما در نظم کامل باقی می ماند. پس از همه، در حال حاضر تمام فایل های ارزشمند شما ذخیره می شود که در

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

محدودیت rsync این است که داده ها را نمی توان بین 2 سیستم راه دور کپی کرد. در این حالت، باید داده ها را از یک سیستم راه دور کپی کنید و سپس آن را به دیگری منتقل کنید.

در aptosid شما گزینه های مختلفی برای شروع فرآیند همگام سازی دارید. می توانید rsync را با دستور ترمینال اجرا کنید یا بسته های اضافی را از Debian Sid نصب کنید:

برای نصب بسته deb:
apt-get install luckybackup
دستورالعمل استفاده در ترمینال

در بخش بعدی به معرفی rsync، ویژگی‌های آن و چند نمونه از نحوه استفاده از rsync با اسکریپت پشتیبان داخلی می‌پردازیم.

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

rsync می تواند داده ها را کپی کند:
* از سیستم محلی به سیستم محلی،
* از سیستم محلی به سیستم راه دور (از راه دور)،
* از یک سیستم راه دور به یک سیستم محلی.

در این مورد، rsync از یک کلاینت ssh (که در نصب اصلی موجود است) یا rsync-daemon استفاده می کند که بر روی سیستم های منبع و هدف اجرا می شود. rsync manpages می گوید اگر سیستم ها بتوانند از طریق ssh ارتباط برقرار کنند، ssh نیز می تواند برای rsync استفاده شود.

یک محدودیت با rsync این است که داده ها را نمی توان بین 2 سیستم راه دور کپی کرد. در این صورت، باید داده ها را از یک سیستم راه دور کپی کنید و سپس آن را از rsync به دیگری منتقل کنید.

برای روشن شدن این موضوع، مثال زیر را با 3 کامپیوتر در نظر بگیرید:

نئو - سیستم محلی morpheus - سیستم از راه دور ترینیتی - سیستم از راه دور

هر کاربر نام کاربر دیگر را می‌داند و rsync فقط روی سیستم محلی neo کار می‌کند:

نام کاربری در neo cuddles، نام کاربری در morpheus tartie، نام کاربری در trinity taylar است.

هدف همگام سازی دایرکتوری های /home/$user/Files است:

Neo:/home/nuddles/data with morpheus and trinity, morpheus:/home/tartie/data with neo and trinity, trinity:/home/taylar/data with neo and morpheus.

اکنون مشکلی وجود دارد که rsync بین 2 رایانه راه دور قابل استفاده نیست:

Neo-> morpheus - از محلی به راه دور، شما neo-> trinity - از محلی به راه دور، شما morpheus-> neo - از راه دور به محلی، شما می توانید trinity-> neo - از راه دور به محلی، شما دریافت morpheus- > تثلیث - شما نمی توانید، از راه دور به تثلیث از راه دور-> morpheus - مجاز نیست، از راه دور به راه دور

برای دور زدن این محدودیت، موارد زیر را انجام دهید:

مورفئوس --> تثلیث - می شود: مورفئوس --> نئو و نئو --> تثلیث تثلیث --> مورفئوس - می شود: تثلیث --> نئو و نئو --> مورفئوس

این مرحله اضافی در نهایت چیزی را تغییر نمی دهد. با این حال، نشان می دهد که:

این محدودیت در rsync باید هنگام برنامه ریزی فرآیند پشتیبان گیری در نظر گرفته شود.

استفاده از نام هاست با نام هاست در rsync.

استفاده از نام‌های میزبان neo، morpheus و trinity به جای آدرس‌های IP می‌تواند فرآیند کپی را واضح‌تر و درک آن را برای شما آسان‌تر کند.

برای این کار باید /etc/hosts را ویرایش کنید و نام هاست و آدرس های IP متعلق به آن را Paste کنید. بنابراین، در مثال ما، فایل /etc/hosts به شکل زیر خواهد بود:

192.168.1.15 neo 192.168.1.16 morpheus 192.168.1.17 ترینیتی

خط اول آدرس IP 192.168.1.15 را به "neo"، دومی 192.168.1.16 به "morpheus" و 192.168.1.17 سوم را به "Trinity" ترجمه می کند. پس از ورود، نام میزبان به صورت اختیاری می تواند به جای آدرس IP استفاده شود. این به ویژه در صورت تغییر آدرس های IP توزیع شده مفید است، به عنوان مثال، برای "neo" از 192.168.1.15 به 192.168.1.25 این کار کار با اسکریپت ها را آسان تر می کند، زیرا در صورت تغییر آدرس های IP، آنها نباید تغییر کنند، بلکه فقط فایل / و غیره/ میزبان.

دو روش برای استفاده از rsync.

راه اول داده است "فشار (فشار)"به ماشین هدف؛ دیگری داده است "بکش بیرون"از منبع هر روش مزایا و معایب خاص خود را دارد که در ادامه به آنها پرداخته خواهد شد. مثال ما از سیستم های محلی و راه دور استفاده می کند تا به توضیح بیشتر اصطلاحات کمک کند.

"فشار دادن"- سیستم محلی دایرکتوری ها و فایل های منبع را حمل می کند، هدف سیستم از راه دور است. دستور rsync بر روی سیستم محلی اجرا می شود و داده ها را به سیستم مورد نظر هدایت می کند.

مزایای:
* بیش از یک سیستم منبع را می توان روی هدف پشتیبان گیری کرد. * فرآیند پشتیبان گیری در چندین رایانه می تواند به طور همزمان انجام شود. * اگر سیستم فرآیند پشتیبان گیری را سریعتر به پایان برساند، امکان استفاده از منابع برای کارهای دیگر را فراهم می کند.

معایب:
* اگر اسکریپت با همگام سازی از طریق cron استفاده می شود، باید crontabs در هر سیستم تنظیم شود. هنگام تغییر اسکریپت، لازم است تغییرات مناسب در هر سیستم ایجاد شود، زمانی که زمان بندی تغییر می کند، هر کرونتاب روی هر کامپیوتر باید تغییر کند. در نتیجه، نگهداری اداری بسیار دست و پا گیر و گیج کننده می شود. * فرآیند پشتیبان گیری نمی تواند بررسی کند که آیا پارتیشن هدف توسط سیستم هدف نصب شده است یا خیر. اگر نصب نشود، پشتیبان گیری انجام نمی شود.

کشیدن- سیستم راه دور دایرکتوری ها و فایل های منبع را حمل می کند، هدف سیستم محلی است. دستور rsync روی سیستم محلی اجرا می شود و داده ها را از سیستم منبع "کشش" می کند.

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

نحو rsync (بخشی از "man rsync"):
rsync ... SRC ... DEST rsync ... SRC ... HOST:DEST rsync ... SRC ... HOST::DEST rsync ... SRC ... rsync://HOST[:PORT]/ DEST rsync ... SRC rsync ... HOST:SRC rsync ... HOST::SRC rsync ... rsync://HOST[:PORT]/SRC
نمونه های کاری دستورات rsync:

توضیح اجزای این دستور:

منبع: (/path/file) morpheus:/home/tartie، هدف این است: /media/sda7/SysBackups/morpheus/home

دایرکتوری /home/tartie (شامل زیر شاخه ها) در /media/sda7/SysBackups/morpheus/home ذخیره می شود که پس از rsync به شکل زیر خواهد بود:

/media/sda7/SysBackups/morpheus/home/tartie

لطفاً توجه داشته باشید که فقط دایرکتوری /tartie در مسیر مشخص شده توسط rsync /media/sda7/SysBackups/morpheus/home کپی می‌شود. «Source» فقط انتخاب می‌کند که داده‌ها از کجا آمده باشند، و «Target» به rsync می‌گوید که کجا داده‌ها باید از «منبع» کپی شوند و آن را دیگر به‌عنوان /home/tartie درک نمی‌کند، بلکه به سادگی /tartie، که آن را به /media هدایت می‌کند. /sda7/ SysBackups/morpheus/home. مثالی دیگر:

Rsync [...] /home/user/data/files /media/sda7/SysBackups/neo

این دایرکتوری منبع /files و همه دایرکتوری ها و فایل های موجود در آن را در پوشه هدف /media/sda7/SysBackups/neo/ - کپی می کند و نه در /media/sda7/SysBackups/neo/home/user/data/files.

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

توضیح گزینه ها (ترجمه سیاه از انگلیسی "man rsync"):
-a برای روش بایگانی. manpage در این مورد می گوید: «به عبارت ساده، این روش ایجاد یک نسخه پشتیبان بازگشتی و کپی کردن تقریباً همه ویژگی ها است. فقط لینک های سخت به دلیل پیچیدگی فرآیند ذخیره نمی شوند. گزینه -a مربوط به: -rlptgoD است، به این معنی: -r = rekursiv - زیر شاخه ها و فایل های موجود در آنها را از "محل منبع" کپی کنید. -l=پیوندها - پیوندهای نمادین در مقصد بازیابی می شوند. -p = حقوق - حقوق با حقوق موجود در محل اصلی یکسان است. -t = timestamp - مهر زمانی در محل اصلی با آن یکسان است. -q = ساکت - حداقل خروجی اطلاعات. اطلاعات بیشتر با گزینه -v بعد از گزینه -a به دست می آید. اجرای بدون هیچ پاسخی بدون تنظیم گزینه -v انجام می شود. -o = مالک - اگر rsync به صورت روت اجرا شود، صاحبان فایل های منبع به طور مناسب نگهداری می شوند. -D = با هر دوی این دستورها مطابقت دارد: --devices --specials --devices = فایل های کاراکتر و فایل های دستگاه مسدود شده در سیستم راه دور کپی می شوند تا بعداً بازیابی شوند. توجه داشته باشید که بدون گزینه --super، گزینه --devices کار نمی کند. --specials = rsync فایل های خاصی مانند سوکت ها و fifos را کپی می کند. --g: گروه ها بر اساس فایل های منبع ذخیره می شوند. -E: ویژگی "doable" را حفظ می کند. -v: برای خروجی پرمخاطب. اگر جزئیات مهم نیستند، این گزینه را می توان حذف کرد. با این حال، اگر می خواهید ببینید چه اتفاقی می افتد، این گزینه بسیار مفید است. -z: داده‌های کپی شده بایگانی می‌شوند، که روند کپی را سرعت می‌بخشد، زیرا حجم داده‌های جابجا شده کمتر خواهد بود. --delete-after= دایرکتوری های هدف یا فایل های هدفی که دیگر در منبع نیستند، پس از انتقال حذف می شوند، نه قبل از آن. در صورت بروز مشکل یا فاجعه، "after" استفاده می شود، "حذف" از مصرف فضای اضافی توسط فایل ها و دایرکتوری های غیر ضروری در مقصد جلوگیری می کند. -- exclude = نشان دهنده حذف فایل ها یا دایرکتوری ها از فرآیند کپی است. به عنوان مثال، --exclude = "* ~" همه فایل‌هایی که به "~" ختم می‌شوند از فرآیند پشتیبان‌گیری حذف می‌شوند. با یک گزینه --exclude، تنها می‌توان یک آرگومان ارسال کرد، با آرگومان‌های Exclusion بیشتر، چندین گزینه --exclude باید استفاده شود.
دستورات اضافی:
-c بررسی های مقایسه بیشتری را انجام می دهد که زمان بر است. از آنجایی که rsync قبلاً بررسی های مقایسه را انجام می دهد، این دستور به دلیل افزونگی و صرفه جویی در زمان در --a ادغام نشده است. این گزینه معمولا مورد نیاز نیست. --super - سیستم هدف سعی می کند به عنوان superuser (ریشه) اجرا شود (به صفحه man مراجعه کنید) --dry-run - test run: فقط نشان می دهد که چه چیزی باید کپی شود. هیچ فایلی کپی نمیشه

و در نهایت گزینه هایی برای تعیین دایرکتوری های منبع و هدف.

دستورات مثال:
rsync -agEvz --delete-after --exclude=”*~” morpheus:/home/tartie /media/sda7/SysBackups/morpheus/home

این دستور همه دایرکتوری ها و فایل های زیر را از /home/tartie در سیستم "morpheus" کپی می کند و آنها را در این فهرست /media/sda7/SysBackups/morpheus/home قرار می دهد. ساختار دایرکتوری tartie حفظ شده است.

rsync -agEvz --delete-after --exclude=”*~” /home/tartie neo:/media/sda7/SysBackups/morpheus/home

این دستور مخالف مثال اول است. دایرکتوری /home/tartie و محتویات آن را به دایرکتوری سیستم مشخص شده "neo" "حرکت" می کند - توجه داشته باشید که اگر یک کولون ":" قبل از مسیر قرار گیرد، یک سیستم "راه دور" در نظر گرفته می شود.

rsync -agEvz --delete-after --exclude=”*~” /home/cuddles /media/sda7/SysBackups/neo/home

این فرآیند پشتیبان گیری در رایانه محلی است. در اینجا باید به این نکته توجه کنید که کولون تنظیم نشده است. دایرکتوری محلی /home/cuddles در /media/sda7/SysBackups/neo/home در همان ماشین محلی کپی می شود.

rsync با بسیاری از گزینه های --exclude:
rsync -agEvz --delete-after --exclude=”*~” --exclude=”*.c” --exclude=”*.o” "/*" /media/sda7/SysBackups/neo

این دستور همه چیز را از دایرکتوری ریشه سیستم محلی (همه دایرکتوری ها و فایل ها) تا /media/sda7/SysBackups/neo کپی می کند - همه فایل ها و دایرکتوری هایی که به "~"، ".c" یا "" ختم می شوند، مستثنی هستند. o”.

جایگزینی نام میزبان با آدرس IP:

دستور اول با روش hostname و دومی با روش آدرس IP تنظیم می شود. هر دو دستور در اجرای خود یکسان هستند:

rsync -agEvz --delete-after --exclude=”*~” morpheus:/home/tartie /media/sda7/SysBackups/morpheus/home rsync -agEvz --delete-after --exclude=”*~” 192.168. 1.16: /home/tartie /media/sda7/SysBackups/morpheus/home

روش hostname نباید استفاده شود، اما به نظر ما بک آپ گیری rsync را در شبکه ها آسان می کند.

class="highlight-2">فرمان غیرممکن:

rsync -agEvz --delete-after --exclude="*~" morpheus:/home/tartie trinity:/home

همانطور که قبلا ذکر شد، محدودیت rsync این است که این دستور بین 2 کامپیوتر راه دور قابل کپی نیست. ما می خواهیم دوباره توجه را به این موضوع جلب کنیم.

امیدواریم این راهنمای کوچک شروع به کار با rsync را که یک برنامه پشتیبان بسیار خوب است برای شما آسان‌تر کند.

من یک اسکریپت همگام سازی دایرکتوری را از طریق برنامه پیدا کردم rsync. من فکر می کردم که همگام سازی، پشتیبان گیری یک چیز است، فقط به طور متفاوت نامیده می شود
برنامه rsync در همه توزیع ها گنجانده شده است و به اندازه کافی محبوب است که به راحتی می توانید آن را در هر توزیع پیدا کنید.
بیایید به نمونه هایی از همگام سازی rsync برویم.
ما می خواهیم یک کپی از دایرکتوری /home/user/foto داشته باشیم و یک پوشه تکراری را در /mnt/backup ذخیره کنیم.

Rsync -av /home/user/foto /mnt/backup

  • انتقال آرشیو (به همراه پوشه ها، زیرپوشه ها، فایل ها، فایل های مخفی و غیره)
  • -v داده های مربوط به اجرای دستور را نمایش می دهد

خیلی ساده است! عکس های ما در حال حاضر در دو مکان هستند. البته آنها بایگانی نمی شوند و به اندازه پوشه اول فضایی را اشغال می کنند، اما باید چیزی را قربانی کنید. و شما باید فضای دیسک خود را قربانی کنید. به هر حال، بایگانی برای عکس ها ناکارآمد است، نسبت فشرده سازی بسیار پایین است. طبیعتاً باید روی دیسک فیزیکی دیگری کپی کنید!زیرا اگر یک هارد دیسک بمیرد، تمام پارتیشن‌های دیگر روی این دیسک با تمام پشتیبان‌گیری‌ها از بین می‌روند.
ادامه بدیم من پرت شدم..
یک نکته کوچک در دستور بالا وجود دارد. به عنوان مثال، شما عکس ها را تغییر نام دادید یا در پوشه های دیگر مرتب کردید، و نام دایرکتوری های قدیمی را تغییر دادید یا آنها را به طور کلی حذف کردید. چه اتفاقی خواهد افتاد؟ اسکریپت صادقانه فایل‌ها و دایرکتوری‌های جدیدی را که ظاهر شده‌اند، منتقل می‌کند و فایل‌های قدیمی که در پوشه /home/user/foto حذف کرده‌اید در پوشه پشتیبان باقی می‌مانند. در واقع، در دایرکتوری هایی که اغلب تغییر می کنند، اجرای چنین اسکریپتی منجر به آشغال در پوشه پشتیبان می شود. برای جلوگیری از این امر، دستور باید با کلید اجرا شود --حذف

Rsync -av --delete /home/user/foto /mnt/backup

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

rsync -av --delete /home/mik/mail /mnt/backup/home/mik/ rsync -av --delete /home/mik/.mozilla /mnt/backup/home/mik/ rsync -av --delete / home/mik/.claws-mail /mnt/backup/home/mik/ rsync -av --delete /bin /mnt/backup/system rsync -av --delete /boot /mnt/پشتیبان گیری/سیستم rsync -av -- delete /dev /mnt/backup/system rsync -av --delete /etc /mnt/backup/system rsync -av --delete /lib /mnt/backup/system rsync -av --حذف /netup /mnt/backup/ system rsync -av --delete /opt /mnt/پشتیبان گیری/سیستم rsync -av --delete /root /mnt/backup/system rsync -av --delete /sbin /mnt/پشتیبان گیری/سیستم rsync -av -- حذف / var /mnt/backup/system

من توجه ویژه ای دارم که از همه چیز پشتیبان تهیه نکنم. برای مثال، اگر تصمیم بگیرید از کل فهرست اصلی خود نسخه پشتیبان تهیه کنید، ممکن است مجموعه ای از فیلم ها، توزیع های منبع باز و غیره شما وجود داشته باشد. همه اینها فضای زیادی را اشغال می کند و به نظر من ارزش پشتیبان گیری را ندارد.
بیایید به فایل خود با لیستی از دایرکتوری ها برای پشتیبان گیری برگردیم و آن را قابل اجرا کنیم

Chmod +x ./نام فایل

اسکریپت را می توان به صورت crontab برای اجرای روزانه، و در اکثر توزیع ها مانند اوبونتویا دبیانفقط آن را در پوشه /etc/cron.daily قرار دهید. اما ممکن است همچنان نیاز به ایجاد تغییرات در فایل /etc/crontab داشته باشید. اکثر مردم کامپیوترهایشان را در شب کار نمی کنند، بنابراین /etc/cron.daily را تغییر دهید تا زمانی که رایانه شما معمولاً روشن است اجرا شود.

و حالا مثال های دستوری rsyncکه فقط باید در نظر داشته باشید و هرگز نمی دانید با چه چالش هایی ممکن است در آینده روبرو شوید.

1 مثال

Rsync -av --delete --exclude="*.avi" --exclude="*.mpg" /home/user /mnt/backup

همگام سازی تیم تمامفهرست اصلی شما، اما فایل های avi و mpg را کپی نمی کند. اگر به چیز دیگری نیاز ندارید، فقط در یک ردیف اضافه کنید --exclude="_what_exclude_"

2 مثال

rsync -avz -e "ssh -l ssh_user -p5623" --delete /home/user/foto 192.168.0.1:"./temp"

و این قبلاً یک فرمان همگام سازی بین شما و رایانه راه دور از طریق اتصال ssh است.

  • -zفشرده سازی بیشتر داده ها
  • -eاز پوسته راه دور استفاده کنید
  • ssh -l ssh_user -p5623- یک فرمان برای اتصال به یک کامپیوتر از راه دور. ssh_user کاربر است و -p5623 اگر پورت ssh غیراستاندارد باشد، در مثال 5623
  • 192.168.0.1:"./temp"- آدرس IP رایانه (می توانید از نام آن نیز استفاده کنید). همچنین دایرکتوری را مشخص می کنیم که در آن داده ها را منتقل می کنیم. توجه داشته باشید که دایرکتوری از طریق تنظیم شده است ./ ، ما در حال حاضر از مسیر فهرست اصلی ssh_user شروع می کنیم که هنگام اتصال از طریق ssh به آن می رسیم.

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

برترین مقالات مرتبط