تهیه Backupهای بهینه با استفاده از Duplicity
در این مقاله با استفاده از Duplicity در لینوکس بک آپ هایی تهیه می کنیم که پهنای باند کمتری را اشغال کنند.
امروزه به ما ثابت شده که هر قدر هم که برای تهیه پشتیبان (Backup) هزینه کنیم کم است. وقتی صحبت از محافظت و نگهداری از اطلاعات مهم مان می شود بهترین کار این است که حتی المقدور قدم های اضافه تری را نیز برای برآورده کردن این خواسته ها بپیماییم تا در زمان نیاز از داشتن نسخه های بک آپ سالم و کارامد خیال راحتی داشته باشیم.
حتی همین امروز هم که بسیاری از سرویس دهندگان آپشن بک آپ خودکار را به مشتریان سرورهای مجازیشان با قیمتی نسبتا پایین ارائه می کنند نیز داشتن استراتژی بک آپ گیری برای خودتان و با استفاده از ابزارهای خودتان می تواند به شما کمک خوبی برا صرفه جویی بیشتر در هزینه ها و نهایتا شما را در خرید منابع سیستمی بهتری یاری کند.
با ما در این مطلب همراه باشید تا با روش بک آپ گیری و رمز نگاری فایلها و آدرسها به وسیله ابزار Duplicity آشنا شوید.
نصب Duplicity
برای نصب Duplicity روی توزیع های بر پایه Fedora ابتدا باید مخازن EPEL را فعال کنیم (در صورتی که از فدورا استفاده می کنید می توانید از این مرحله چشم پوشی کنید)
#yum update && yum install epel-release
سپس
#yum install duplicity
و برای دبیان و انشعابهای آن:
#aptitude update && aptitude install duplicity
زمانی که مراحل نصب به اتمام رسید ما از sftp برای سناریوهای مختلف استفاده خواهیم کرد، هم برای بک آپ گیری ، همچنین برای بازگردانی(restore) اطلاعات.
محیط آزمایش ما شامل یک دستگاه CentOS 7 (به عنوان دستگاهی که پشتیبانی نیاز دارد) و یک دستگاه Debian 8 (به عنوان بک آپ سرور) می شود.
ساخت کلید های SSH برای دسترسی به سرور به صورت ریموتی و کلیدهای GPG برای رمز نگاری
کار را با ساخت کلید های SSH در CentOS box آغاز می کنیم و آنها را به بک آپ سرورمان یعنی Debian منتقل می کنیم.
در دستور زیر فرض بر این است که sshd daemon روی پورت XXXXX در سرور دبیان در حال شنیدن است.
آدرس AAA.BBB.CCC.DDD را با آدرس IP واقعی ریموت سرور جایگزیین کنید.
#ssh-keygen -t rsa
#ssh-copy-id -p XXXXX root@AAA.BBB.CCC.DDD
پس از آن باید مطمئن شوید که می توانید بدون رمز عبور به بک آپ سرور متصل شوید:
حال به سراغ ساخت کلیدهای GPG می رویم که برای رمز نگاری و رمز گشایی اطلاعات ما استفاده خواهد شد:
# gpg --gen-key
سپس شما باید چند مورد مختلف را انتخاب کنید:
- نوع کلید
- ساز کلید
- مدت زمان اعتبار
- عبارت عبور
برای ساخت entropy (تصادفی بودن جمع آوری شده توسط سیستم عامل یا اپلیکیشن برای استفاده در رمز نگاری) مورد نیاز برای تولید کلید می توانید از طریق ترمینالی دیگر تعدادی از دستورات را وارد کرده تا entropy را ایجاد کنید. (در غیر اینصورت باید صبر کنید)
پس از آنکه کلید ها تولید شدند به وسیله دستور زیر میتوانید آنها را لیست کنید
# gpg --list-keys
عبارتی که با رنگ زرد در بالا مشخص شده است نشان دهنده ی شناسه کلید عمومی است و مدرکی است که برای رمز نگاری فایلهایتان از شما خواسته می شود.
برای شروع، از آدرس /var/log بک آپ گیری می کنیم، به استثنای /var/log/anaconda و /var/log/sa
از آنجا که این بک آپ اولین بک آپ ماست، یک بک آپ کامل خواهد بود. اجراهای بعدی پشتیبان گیری های کوچکتری خواهند گرفت ( مگر آنکه خودمان به صورت دستی عبارت full option را درست بعد از کلمه duplicity و بدون هیچ dash (-) در دستور زیر وارد کنیم):
PASSPHRASE="YourPassphraseHere" duplicity --encrypt-key YourPublicKeyIdHere --exclude /var/log/anaconda --exclude /var/log/sa /var/log scp://root@RemoteServer:XXXXX//backups/centos7
از وارد کردن دو اسلش ( / ) در دستور بالا مطمئن شوید. از دو اسلش برای نشان دادن آدرس های مطلق در بک آپ گیری استفاده می شود و محل ذخیره فایلهای بک آپ را تنظیم میکند.
در دستور بالا عبارات YourPassphraseHere ، YourPublicKeyIdHere و RemoteServer را به ترتیب با عبارت عبور(passphrase) ، شناسه کلیدGPG یا ( GPG public key ID ) و آدرس یا هاست نیم سرور بک آپ جایگزین کنید.
خروجی دستور بالا باید شبیه به این عکس باشد:
تصویر بالا به ما نشان می دهد که از ۸۶.۳ مگابایت فایل پشتیبان گیری شد و به صورت فایلی ۳.۲۲ مگابایتی در مقصد ذخیره شد. حال به سرور بک آپ سری می زنیم تا از انجام پروسه پشتیبان گیری اطمینان حاصل کنیم:
دومین اجرای پشتیبان گیری به مراتب فایل کوچکتری تولید می کند و بسیار هم سریعتر این روند را طی می کند:
بازگردانی بک آپ به وسیله Duplicity
برای برگرداندن یک فایل یا دایرکتوری، آن فایل یا دایرکتوری نباید وجود داشته باشد. در غیر اینصورت روند بازگردانی
متوقف می شود. در بازگردانی جایگزینی انجام نمی شود. برای بازگردانی بک آپ، فایلی که از آن پشتیبان گرفته ایم را حذف می کنیم مانند: cron در این مثال:
# rm -f /var/log/cron
ترکیب نوشتار دستور باز گردانی برای یک فایل تکی به صورت زیر است:
# PASSPHRASE="YourPassphraseHere" duplicity --file-to-restore filename sftp://root@RemoteHost//backups/centos7 /where/to/restore/filename
- منظور از Filename نام فایلی است که باید استخراج روی آن انجام شود به همراه آدرسی که در آن ذخیره شده است.
- /where/to/restore آدرس سیستم ماست که میخواهیم فایل را به آنجا بازگردانی کنیم.
در این مثال برای بازگردانی cron log از روی بک آپ ریموتی، دستور زیر را اجرا می کنیم:
# PASSPHRASE="YourPassphraseHere" duplicity --file-to-restore cron sftp://root@AAA.BBB.CCC.DDD:XXXXX//backups/centos7 /var/log/cron
Cron log در جای مورد نظرتان ذخیره خواهد شد.
به همین صورت آدرس /var/log را حذف کنید تا به وسیله بک آپ آن را بازگردانید.
# rm -rf /var/log/mail
#PASSPHRASE="YourPassphraseHere" duplicity --file-to-restore mail sftp://root@AAA.BBB.CCC.DDD:XXXXX//backups/centos7 /var/log/mail
در این مثال آدرس ایمیل به موقعیت اصلی خود با تمامی محتوای خود بازگردانی خواهد شد.
برخی دیگر از ویژگی های Duplicity
با دستور زیر در هر زمانی می توانید لیست کاملی از آرشیو فایلهایتان را ببینی:
# duplicity list-current-files sftp://root@AAA.BBB.CCC.DDD:XXXXX//backups/centos7
حذف بک آپ های قدیمی تر از ۶ ماه:
# duplicity remove-older-than 6M sftp://root@AAA.BBB.CCC.DDD:XXXXX//backups/centos7
بازگردانی myfile داخل آدرس gancanepa با گذشت ۲ روز و ۱۲ ساعت:
# duplicity -t 2D12h --file-to-restore gacanepa/myfile sftp://root@AAA.BBB.CCC.DDD:XXXXX//remotedir/backups /home/gacanepa/myfile
در آخرین دستور همانطور که می بینید استفاده از فواصل زمانی نشان داده شده است ( با -t مشخص شده):
برای بازه های زمانی مختلف از حروف اختصاری استفاده شده مانند s,m,h,D,W,M,Y که به ترتیب نشان دهنده ثانیه، دقیقه، ساعت، روز، هفته، ماه، سال هستند.
خلاصه
در این مطلب مختصری درباره ی ابزار duplicity خدمت شما ارائه شد. برای اطلاعات بیشتر درباره این ابزار بسیار مفید به شما پیشنهاد می کنیم که از سایت http://duplicity.nongnu.org/index.html حتما بازدید کنید. همچنین می توانید مقالات آموزشی کاملی را نیز در این سایت پیدا کنید.