اگر دادههای مشتریان یا شخصی را در یک سرور مجازی ذخیره میکنید، پشتیبانگیری از دادهها در فواصل زمانی برای شما اهمیت خواهد داشت. به دلایل مختلف، دادهها ممکن است از دسترس خارج و یا با مشکل روبرو شوند. از جمله حذف تصادفی، تنظیمات نامناسب، نفوذ هکرها و ارتقاهای نرمافزاری که تنظیمات قبلی را دستخوش تغییر میکنند. داشتن یک نسخه پشتیبان که بهتازگی تهیه شده، میتوانند بازیابی دادهها را در این شرایط به مراتب سادهتر کند.
بررسی نیازها
پشتیبانگیری از دادهها برای همه سیستمها به صورت یکسان انجام نمیشود. قبل از اینکه اولین نسخه پشتیبان و یا برنامه تهیه آن را در فواصل زمانی منظم تهیه کنید، ابتدا باید ببینید که دقیقاً چه ابزاری برای شما مناسب است.
از چه چیزی نسخه پشتیبان تهیه کنیم؟
چه چیزی در سرور شما وجود دارد که در صورت از دست رفتن، جایگزینی آن برایتان مشکل و یا غیرممکن است. در اینجا به برخی از مثالها برای پیشتیبانگیری از دادهها میپردازیم.
- وبسایتهای CMS: وبسایتهای دادهمحور مانند وبسایتهایی که وردپرس، دروپال یا مگنتو ساخته شده و از یک پایگاه داده برای ذخیره محتوا استفاده میکنند.
- وبسایتهای اچتمل: اگر یک وبسایت اچتمل استاندارد دارید، احتمالاً فقط کافی است که از دایرکتوری عمومیتان پشتیبان تهیه کنید.
- ایمیل: اگر از یک سرور مجازی به عنوان یک سرور ایمیل استفاده میکنید، باید از فایلهای خام ایمیل پشتیبان تهیه کنید.
- فایلهای چندرسانهای: حتماً از تصاویر، ویدیوها و فایلهای صوتی پشتیبان بگیرید.
- دادههای مشتریان: دادههای فروش و تراکنشهای مالی مشتریان معمولاً در یک پایگاه داده نگهداری میشوند. بنابراین حتماً باید یک محل ذخیره پایگاه داده در نسخه پشتیبان درنظر بگیرید.
- تنظیمات سفارشی: اگر سرور مجازی شما بهطور ویژه سفارشی باشد یا اینکه زمان زیادی برای تنظیم آن مورد نیاز باشد، باید به پشتیبانگیری کلی از آن فکر کنید. تنظیمات نرمافزاری حداقل چیزی است که باید برای پشتیبانگیری از دادهها درنظر داشته باشید. طبیعتاً محتوای عمومی نیز شامل این پشتیبان میشود.
وقتی آیتمهای موردنظر برای پشتیبانگیری از دادهها را مشخص کردید، موقعیت آنها را نیز در سرور پیدا کنید. مسیرهای خاص و پایگاه داده هر کدام از آیتمها را یادداشت کنید.
همچنین نوع نسخه پشتیبانی که تهیه میکنید نیز اهمیت خواهد داشت. چرا که فرمت بر کاری که میتوانید با آن انجام میدهید، تأثیر میگذارد. در این حالت، باید شرایط بازیابی دادهها را مدّنظر داشته باشید. بر این اساس، شما نوع مناسب پشتیبان را انتخاب خواهید کرد. دو نوع پایه برای نسخههای پشتیبان وجود دارند. نسخه پشتیبان فایل سیستمی و دامپ پایگاه داده.
نسخه پشتیبان فایل سیستمی
تهیه نسخه کپی از تمام یا بخشی از فایلهای سیستمی همراه با ساختار و مجوّزها برای فایلهای اچتمل، فایلهای تنظیمات نرمافزاری، ایمیلها و فایلهای چندرسانهای مفید خواهد بود. اگر بعداً بخواهید فایلهای کپیشده سیستم را به سرور مجازی بازیابی کنید، همان عملکرد قبلی را خواهند داشت. یک نسخه پشتیبان سرور کامل (full-server snapshot) یک پشتیبان همهجانبه فایل سیستمی است که تمام مشخصههای سرور شما تا یک نقطه زمانی خاص در برخواهد داشت. در صورتی که از فایلها بدون مجوّزهایشان پشتیبانگیری کنید، روند بازیابی را برای خود طولانیتر خواهید کرد.
دامپ پایگاه داده
نسخههای پشتیبان فایلسیستمی همیشه بهترین انتخاب برای پشتیبانگیری از دادهها نیستند. یک نسخه پشتیبان سرور کامل میتواند پایگاه داده شما را بازیابی کند، امّا باید توجه داشت که فایلهای خام پایگاه داده در پشتیبانگیری عملاً بدوناستفاده باقی میمانند. بر این اساس، اجرای یک دامپ SQL یا چیزی شبیه به آن کارآیی بهتری خواهد داشت. در این حالت، شما یک فایل خوانا از فرمانهای SQL دریافت میکنید که که میتواند به آسانی به یک سرور دیگر و یک پایگاه داده دیگر از همان نوع منتقل شود.
در نهایت، نوع پشتیبانگیری را که میتواند فایلسیستمی، دامپ پایگاه داده و یا هر دوی آنها باشد انتخاب کنید. در صورتی که استفاده از هر دوی آنها مدّنظر باشد، ابتدا باید دامپ پایگاه داده تهیه شود و سپس این فایل دامپ میتواند به عنوان بخشی از نسخه پشتیبان فایلسیستمی ذخیره گردد.
زمان مناسب برای پشتیبانگیری از دادهها
موضوع بعدی که باید درنظر بگیرید، فواصل زمانیای است که میخواهید از دادههای خود پشتیبان تهیه کنید. این تصمیم شما به فاصله زمانی تغییرات در سرور شما بستگی خواهد داشت و اینکه چقدر این تغییرات برای شما حیاتی هستند. در اینجا به برخی از بازههای زمانی متداول اشاره میکنیم.
- فروشگاه آنلاین: حداقل به صورت روزانه.
- سایت خبری یا وبلاگ: به اندازه بازهای که بروزرسانی انجام میدهید.
- سرور توسعه: زمانی که شما تغییرات انجام میدهید.
- سرور بازی و گیم: حداقل به صورت روزانه.
- سایتهای استاتیک با محتوای ثابت: هر ۶ ماه و یا بعد از هر کدام از تغییرات عمده.
- سرور ایمیل: حداقل به صورت روزانه.
نیازهای شما در این زمینه باعث میشوند که تهیه نسخه پشتیبان را به صورت دستی یا اتوماتیک انجام دهید.
نسخههای پشتیبان را کجا ذخیره کنیم؟
حالا باید به این فکر کنید که پس از پشتیبانگیری از دادهها، کجا آن را ذخیره کنید. در اینجا به برخی از مرسومترین محلهای ذخیره پشتیبان اشاره میکنیم.
- همان سرور: این سادهترین مکانی است که میتوانید برای ذخیره نسخههای پشتیبان استفاده کنید. ولی در نظر داشته باشید که در صورتی که سرور شما مورد هجوم در سطح روت قرار گرفت و یا دادههایتان به صورت اتفاقی پاک شدند، نسخه پشتیبان شما نیز از دسترس خارج خواهد شد.
- یک سرور دیگر: میتوانید دادههای پشتیبان خود را در یک سرور دیگر ذخیره کنید. این یکی از امنترین راهحلها در این زمینه است.
- دستگاه شخصی: میتوانید از کامپیوتر دسکتاپ خود بر روی یک هارد درایو قابلحمل پشتیبان بگیرید. با این وجود، دفتر کار خانگی شما نمیتواند به اندازه مرکز داده حرفهای ایمن باشد. همچنین باید کیفیت سختافزاری هارد خود را نیز درنظر داشته باشید.
همچنین باید درنظر داشته باشید که چقدر از نسخههای پشتیبان در پلتفرم ذخیرهتان جای میگیرد. بسیاری از افراد میخواهند که حداقل دو نسخه پشتیبان (یک نسخه قدیمیتر و قابلاتکا، و آخرین نسخه) و یا اینکه تمام نسخهها را به صورت ذخیره داشته باشند. هر چه بیشتر بتوانید از این نسخههای پشتیبان داشته باشید، شرایط بهتری خواهید داشت؛ البته تا جایی که ظرفیت محل ذخیرهتان اجازه دهد.
گردش نسخه پشتیبان
در نهایت، باید برای این موضوع تصمیم بگیرید که چقدر میخواهید نسخههای پشتیبان را نگهداری کنید و اینکه همزمان چه تعداد از آنها را ذخیره داشته باشید. البته داشتن یک نسخه پشتیبان بهتر از آن است که هیچ پشتیبانی نداشته باشید. این در حالی است که اکثر افراد میخواهند حداقل دو نسخه پشتیبان داشته باشند. به عنوان مثال، شما اگر نسخههای پشتیبان را به صورت روزانه جایگزین کنید و هیچکدام از نسخههای قدیمیتر را نگهداری نکنید، در صورتی که متوجه یک حمله هکری در یک هفته قبل شوید، هیچ فرصتی در اختیار نخواهید داشت. ایمنترین گزینه، ذخیره نسخههای پشتیبان در فواصل زمانی متوالی و تا جای ممکن بدون جایگزینی آنها با یکدیگر است. فقط باید توجه داشته باشید که حجم ذخیره پشتیبانگیری از دادهها از میزان حافظه در دسترس شما برای این منظور بیشتر نشود. ضمن اینکه انواعی از نسخههای پشتیبان که شامل فشردهسازی و دیگر بهینهسازیها هستند، کار را برای شما سادهتر خواهند کرد.
انتخاب ابزار مناسب برای پشتیبانگیری از دادهها
وقتی که از نیازهای پشتیبانگیری خود بهخوبی شناخت پیدا کردید، باید یک ابزار مناسب برای این منظور انتخاب کنید. در این مقطع، باید به درک درستی از موارد زیر رسیده باشید.
- چه فایلها و پایگاههای دادهای را میخواهید پشتیبانگیری کنید.
- چه زمانی میخواهید نسخههای پشتیبان جدید تهیه کنید.
- کجا میخواهید نسخههای پشتیبان خود را ذخیره کنید.
- چه تعداد از پشتیبانهای قدیمی خود را میخواهید به صورت فایل نگهداری کنید.
در این آموزش به بررسی ۴ ابزار مختلف برای پشتیبانگیری از دادهها میپردازیم و خواهیم دید که این ابزارها چگونه معیارها را برآورده میکنند.
Rsync
Rsync یک ابزار کپی فایل به صورت رایگان است که استفاده از آن را توصیه میکنیم. این ابزار به دلایلی یکی از بهترین ابزارها برای پشتیبانگیری از دادهها محسوب میشود. از جمله:
- تنظیمات ساده. این در حالی است که بسیاری از تنظیمات پیشرفته نیز در دسترس قرار دارند.
- تنظیمات آسان برای انجام کارها به صورت خودکار. فرمانهای Rsync میتوانند به صورت دستورات کرون (cron jobs) تنظیم شوند.
- راندمان بالا. Rsync تنها فایلهایی را بروزرسانی میکند که تغییر پیدا کرده باشند؛ موضوعی که باعث میشود در زمان و فضای دیسک صرفهجویی گردد.
در همین حال باید به سطح پایه کار به خط فرمان برای انجام پشتیبانگیریها و بازیابی فایلها تسلط داشته باشید.
- دادههای پشتیبانگیری: شما مسیر را برای این پشتیبان فایلسیستمی مشخص میکنید.
- زمان پشتیبانگیری: فرمان پایه به صورت دستی است. در عین حال، میتوانید اجرای آن را به صورت کرون و اتوماتیک تنظیم کنید. در ادامه با نحوه تنظیم Rsync برای تهیه نسخههای پشتیبان روزانه آشنا خواهیم شد.
- محل ذخیره: شما مقصد را مشخص میکنید. میتوانید در یک فولدر دیگر در سرور، یک سرور لینوکسی دیگر و یا کامپیوتر خانگیتان ذخیره کنید. تا زمانی که بتوانید بین دو سیستم ارتباط SSH ایجاد کنید و هر دوی این سیستمها بتوانند Rsync را اجرا کنند، میتوانید نسخه پشتیبان خود را در هر جایی ذخیره کنید.
- گردش نسخهها: گردش پایه به صورت دستی است. با این وجود، اگر تنظیمات مناسبی انجام دهید، میتوانید در یک فضای کوچک، تمام نسخههای پشتیبان قدیمیتر را ذخیره کنید.
پشتیبانهای MySQL
دادههای ذخیرهشده در پایگاه داده می توانند بهسرعت دستخوش تغییر شوند. اجرای یک دامپ MySQL احتمالاً بهترین راه برای پشیبانگیری از پایگاه داده است. اگر فقط یک نسخه اسنپشات یا هر گونه پشتیبان دیگری که فایلهایتان را کپی میکند، تهیه کنید، فایلهای خام پایگاه داده به همان صورت باقی میمانند و در هنگام بازیابی کلی سرور، باید به شکلی مناسب بهرهبرداری شوند. ولی شاید شما چنین چیزی را انتظار نداشته باشید.
- دادههای پشتیبانگیری: پایگاههای داده و جداول
- زمان پشتیبانگیری: فرمان پایه به صورت دستی است. در عین حال، میتوانید اجرای آن را به صورت کرون و اتوماتیک تنظیم کنید.
- محل ذخیره: فایل پشتیبان به صورت پیشفرض بر روی سرور ذخیره و یا در کامپیوتر خانگیتان دانلود میشود. در هر صورت، امکان تغییر محل ذخیره این فایل وجود خواهد داشت.
- گردش نسخهها: گردش پایه به صورت دستی است.
برای تهیه نسخههای پشتیبان خوانا از پایگاههای داده و انتقال آنها به یک سرور پایگاه داده جدید، این دستورالعملها را دنبال کنید.
Tar
ابزار Tar میتواند فایلهایتان را کپی و فشردهسازی کرده و آنها در یک فایل کوچک پشتیبان در سرور ذخیره کند. در نتیجه، شما مزیّتهای زیر را در اختیار خواهید داشت.
- صرفهجویی در فضای دیسک سیستم.
- کاهش حجم انتقال داده پشتیبان در صورت استفاده از محل ذخیره ریموت.
- سهولت در کار با نسخه پشتیبان به دلیل وجود یک فایل جداگانه.
این موضوع را نیز درنظر بگیرید که برای استفاده از فایل پشتیبان برای بازیابی، باید آن را از حالت فشرده خارج کنید. نمیتوانید بهراحتی آن را باز کرده و فولدرهای آن را جستجو کنید.
- دادههای پشتیبانگیری: شما مسیر را برای این پشتیبان فایلسیستمی مشخص میکنید.
- زمان پشتیبانگیری: فرمان پایه به صورت دستی است. در عین حال، میتوانید اجرای آن را به صورت کرون و اتوماتیک تنظیم کنید.
- محل ذخیره: فایل پشتیبان به صورت پیشفرض بر روی سرور ذخیره میشود. اگر میخواهید آن را در جای دیگری ذخیره کنید، باید این کار را به صورت دستی انجام دهید.
- گردش نسخهها: گردش پایه به صورت دستی است. طبیعت فشرده فایلهای پشتیبان باعث میشود که نگهداری نسخههای چندگانه از آنها سادهتر گردد.
در اینجا فرمان پایه tar را مشاهده میکنید.
tar pczvf my_backup_file.tar.gz /path/to/source/content
توضیح گزینهها در فرمان tar
p or –preserve-permissions: حفظ مجوّزها
c or –create: ایجاد یک آرشیو جدید
z or –gzip: فشردهسازی آرشیو با جیزیپ
v or –verbose: نمایش فایلهایی که پردازش میشوند
f or –file=ARCHIVE: آرگومان بعدی، نام آرشیو جدید خواهد بود
Rdiff-backup
Rdiff-backup ابزاری است که برای تهیه نسخههای پشتیبان «پلکانی» طراحی شده است. همانطور که وبسایت مربوطه توضیح میدهد، ایده پسزمینه این ابزار ترکیب بهترین ویژگیهای نسخههای پشتیبان آینهای و پلکانی است. شما در نهایت با یک نسخه از فایلهای سیستمی خود روبرو هستید که میتوانید در عین حال، به سراغ فایلهای قدیمیتر در آن بروید.
- دادههای پشتیبانگیری: شما مسیر را برای این پشتیبان فایلسیستمی مشخص میکنید.
- زمان پشتیبانگیری: فرمان پایه به صورت دستی است. در عین حال، میتوانید اجرای آن را به صورت کرون و اتوماتیک تنظیم کنید.
- محل ذخیره: شما مقصد را مشخص میکنید. میتوانید در یک فولدر دیگر در سرور، یک سرور لینوکسی دیگر و یا کامپیوتر خانگیتان ذخیره کنید.
- گردش نسخهها: تمام نسخههای پشتیبان قدیم و جدید نگهداری میشوند.
پشتیبانگیری دستی با Rsync
در این بخش از آموزش به نحوه کاربرد Rsync در قالب یک مثال میپردازیم. برای سایر ابزارهای معرفیشده در بالا، مراحل کار مشابه هستند. این نسخه پشتیبان به صورت دستی و یک بار انجام میشود. فایلها در سیستمی که در آن فرمان را اجرا میکنید، ذخیره میشوند. بنابراین حتماً دقت کنید که به کامپیوتر یا سروری که میخواهید نسخه پشتیبان را در آن ذخیره کنید، وارد شده باشید.
در اینجا از سروری که میخواهید در آن پشتیبانگیری از دادهها انجام دهید، با عنوان production_server، سرور یا کامپیوتری که میخواهید پشتیبانها را در آن ذخیره کنید، با عنوان backup_server یا personal_computer یاد میکنیم. مثالها برای production_server مبتنی بر اوبونتو 12.04 LTS و انواع مختلف سرورها و کامپیوترهای شخصی خواهند بود.
برای تهیه پشتیبان دستی از سرور مراحل زیر را دنبال کنید.
۱) با استفاده از فرمان زیر Rsync را در backup_server و سرور خودتان نصب کنید.
sudo apt-get install rsync
۲) حالا فرمان rsync را از طریق backup_server یا personal_computer اجرا کنید.
rsync -ahvz user@production_server:/path/to/source/content /path/to/local/backup/storage/
۳) زمانی که پیغام مربوطه ظاهر شد، رمز عبور SSH را برای production_server وارد کنید. در اینجا میتوانید لیست فایلهایی را که کپی میشوند، مشاهده کنید. در نهایت، باید پیغام تأییدیهای مشابه زیر ببنید.
sent 100 bytes received 2.76K bytes 1.90K bytes/sec total size is 20.73K speedup is 7.26
به همین سادگی! میتوانید روی پوشهای که به عغنوان ذخیره محلی خود درنظر گرفتهاید، دو بار کلیک کنید تا از صحت اطلاعات کپیشده مطمئن شوید. در قسمتهای بعدی این آموزش به نحوه اتوماتیککردن پشتیبانگیری از دادهها میپردازیم.
تنظیم نسخههای پشتیبان اتوماتیک در یک سرور لینوکس
در این بخش، از ابزار Rsync برای تهیه نسخه پشتیبان به صورت روزانه استفاده میکنیم. این پشتیبانها در فولدرهای جداگانه با عنوان روزهای مختلف ذخیره خواهیم کرد. در این حالت شما تنها کمی فضای بیشتر از production server نیاز خواهید داشت. چرا که فایلهای مشابه را به صورت «هارد لینک» و نه فایلهای جداگانه ذخیره میکنید. البته در صورتی که فایلهای حجیمی دارید که به صورت مداوم تغییر میکنند، به فضای بیشتری احتیاج پیدا میکنید.
این فرآیندی ایدهآل برای کسانی است که میخواهند نسخههای پشتیبان خود را به صورت خودکار در یک سرور لینوکس دیگر ذخیره کنند. در واقع، این سادهترین و امنترین راه برای این منظور محسوب میشود. همچنین میتوان از آن برای پشتیبانگیری از یک کامپیوتر شخصی استفاده کرد. به عنوان نمونه، هر زمان که کامپیوتر راهاندازی شود، پشتیبانگیری از دادهها آغاز شود.
- دادههای پشتیبانگیری: شما مسیر را برای پشتیبان فایلسیستمی مشخص میکنید.
- زمان پشتیبانگیری: این یک پشتیبانگیری اتوماتیک روزانه است.
- محل ذخیره: فایلها در سیستمی که فرمان را اجرا میکنید، ذخیره میشوند. بنابراین حتماً ابتدا به سرور یا کامپیوتری که میخواهید نسخههای پشتیبان را ذخیره کنید، وارد شوید.
- گردش نسخهها: تمام نسخههای پشتیبان قدیمی نگهداری میشوند. فضای دیسک با استفاده از هاردلینکها به منظور ایجاد فایلهای مشابه، بهینهسازی میشود.
مراحل زیر را برای تنظیم پشتیبانگیری اتوماتیک از دادهها به یک سرور لینوکس انجام دهید.
۱) نصب rsync را در هر دو سرور با استفاده از دستور زیر انجام دهید.
sudo apt install rsync
۲) در backup_server، با استفاده از فرمان زیر، یک کلید SSH بدون پسورد ایجاد کنید. وقتی از شما رمز عبور خواسته شد، کلید Return را فشار دهید. هیچ پسوردی وارد نکنید.
ssh-keygen
۳) از طریق backup_server، کلید عمومی را به production_server کپی کنید. این کار مطابق فرمانهای زیر صورت میگیرد.
scp ~/.ssh/id_rsa.pub user@production_server:~/.ssh/uploaded_key.pub 'ssh user@production_server 'echo `cat ~/.ssh/uploaded_key.pub` >> ~/.ssh/authorized_keys
۴) با اجرای فرمان زیر سعی کنید که از طریق backup_server به production_server متصل شوید.
ssh user@production_server 'ls -al'
۵) یک دایرکتوری برای ذخیره نسخههای پشتیبان در backup_server ایجاد کنید.
mkdir ~/backups/
۶) حالا یک پشتیبانگیری دستی از دادهها ایجاد کنید و آن را در آدرس ~/backups/public_orig/ ذخیره کنید. این نسخهای است که تمام نسخههای پشتیبان آینده با آن بررسی میشوند. از طریق backup_server، فرمان زیر را وارد کنید.
rsync -ahvz user@production_server:~/public ~/backups/public_orig/
حالا باید مجموعهای از فولدرها را مشاهده کنید. همچنین یک پیغام تأییدیه مشابه زیر برایتان نمایش داده میشود.
sent 100 bytes received 2.76K bytes 1.90K bytes/sec total size is 20.73K speedup is 7.26
۷) حالا باید فرمانی را برای پشتیبانگیری از دادهها به صورت اتوماتیک و زمانبندیشده ایجاد کنید. نمونه این فرمان در زیر آمده است که میتوانید آن را مطابق نیازهایتان تغییر دهید. فرمان زیر را به صورت دستی از backup_server اجرا کنید تا با هیچگونه خطایی برخورد نکنید.
rsync -ahvz --delete --link-dest=~/backups/public_orig user@production_server:~/public ~/backups/public_$(date -I)
۸) خروجی باید چیزی شبیه به چیزی باشد که قبلاً در گام ۶ تولید شده است. حتماً فولدر ~/backups/ را برای اطمینان از صحت انجام کار بررسی کنید.
۹) فرمان را به cron اضافه کنید تا به صورت خودکار، هر روز اجرا شود. با استفاده از فرمان زیر، فایل کرون را در backup_server ویرایش کنید.
crontab -e
نکته: اگر برای اولین بار است که این فرمان را اجرا میکنید، ویرایشگر متنی موردعلاقهتان را انتخاب کنید.
۱۰) خط زیر را به انتهای فایل اضافه کنید. این همان خطی است که در گام ۷ با همان اطلاعات کرون در ابتدا اضافه شده بود. با استفاده از این فرمان، کرون به صورت اتوماتیک rsync را برای پشتیبانگیری از دادهها در سرور رأس ساعت ۳ صبح اجرا خواهد کرد.
0 3 * * * rsync -ahvz --delete --link-dest=~/backups/public_orig user@production_server:~/public ~/backups/public_$(date -I)
اکنون تهیه نسخه پشتیبان به صورت اتوماتیک برایتان تنظیم شده است. در صورتی که هر مشکلی برای سرور پیش آمد، میتوانید از طریق یک نسخه پشتیبان در هر زمان آن را بازیابی کنید.
تنظیم پشتیبانگیری از دادهها به یک کامپیوتر دسکتاپ
حالا که با نحوه پشتیبانگیری از یک سرور به سرور دیگر لینوکس آشنا شدید، نوبت به پشتیبان گرفتن به کامپیوتر دسکتاپ میرسد. دلایل مختلفی برای انجام این کار وجود دارد. یکی از دلایل، ارزان تمام شدن آن است. شما میتوانید بدون اینکه هزینه دو سرور مجازی را بپردازید، همه چیز را در کامپیوتر خانگیتان ذخیره کنید. همچنین این گزینه برای کسانی که میخواهند محیط توسعه شخصی خود را داشته باشند، بسیار مفید خواهد بود.
- دادههای پشتیبانگیری: شما مسیر را برای پشتیبان فایلسیستمی مشخص میکنید.
- زمان پشتیبانگیری: این یک پشتیبانگیری اتوماتیک روزانه است.
- محل ذخیره: فایلها در سیستمی که فرمان را اجرا میکنید، ذخیره میشوند. بنابراین حتماً ابتدا به کامپیوتری که میخواهید نسخههای پشتیبان را ذخیره کنید، وارد شوید. در این بخش قرار است که پشتیبانگیری از دادهها در کامپیوتر دسکتاپ انجام شود.
- گردش نسخهها: تمام نسخههای پشتیبان قدیمی نگهداری میشوند. فضای دیسک با استفاده از هاردلینکها به منظور ایجاد فایلهای مشابه، بهینهسازی میشود.
بررسی کنید که rsync حتماً در کامپیوتر دسکتاپ شما نصب شده باشد. همچنین کاربران لینوکس میتوانند یکی از فرمانهای زیر را اجرا نمایند.
sudo apt-get install rsync sudo yum install rsync
ضمناً سیستمعامل مک OS X به صورت پیشفرض دارای نصب rsync است.
لینوکس
کاربران لینوکس میبایست دستورالعملهایی که قبلتر در بخش تنظیم پشتیبانگیری اتوماتیک به یک سرور لینوکس آمد را دنبال کنند.
سیستمعامل مک OS X
کاربران OS X نیز میتوانند به راهنمای تنظیم اتوماتیک پشتیبانگیری به یک سرور لینوکس در بخشهای قبلی مراجعه نمایند. تنها تفاوت موجود در این زمینه، عدم نیاز به نصب rsync و همچنین لزوم تغییر در متغیر تاریخ است. فرمان نهایی rsync در گام ۷ چیزی شبیه به زیر خواهد بود.
rsync -ahvz --delete --link-dest=~/backups/public_orig user@production_server:~/public ~/backups/public_$(date +%Y-%m-%d)
آخرین ورودی crontab در گام ۹ نیز مشابه زیر است.
0 3 * * * rsync -ahvz --delete --link-dest=~/backups/public_orig user@production_server:~/public ~/backups/public_$(date +\%Y-\%m-\%d)
نکته: اگر در تنظیمات کرون با پیغام خطای مجوّز مواجه شدید و این خطا هنگام وارد کردن فرمان به صورت دستی رخ نداد، احتمالاً پسوردی بر روی کلید SSH دارید که به شکل معمول اجرا نمیشود. چرا که آن را در زنجیره کلید Mac OS X ذخیره کردهاید. برای رفع این مشکل، باید یک کاربر جدید OS X با یک کلید بدونپسورد ایجاد کنید.
ویندوز
شرایط در ویندوز اندکی متفاوت است. شما در اینجا نیاز به نصب مجموعهای از ابزارهای مختلف دارید. این در حالی است که این ابزارها به صورت پیشفرض در دیگر سیستمها در دسترس هستند. همچنین به یاد داشته باشید که ویندوز از مالکیت فایل و مجوّزهای لینوکسی برخوردار نیست. بنابراین، برای بازیابی مالکیت و مجوّزها از طریق نسخههای پشتیبان نیاز به یک سری کارهای اضافی خواهید داشت.
برای تنظیم پشتیبانگیری از دادهها به صورت اتوماتیک از سرور به یک کامپیوتر دسکتاپ ویندوز مراحل زیر را دنبال کنید.
۱) برنامه cwRsync را نصب کنید. میتوانید آخرین نسخه را به صورت رایگان از اینجا دریافت کنید. دقت کنید که نسخه سرور را انتخاب نکنید.
۲) کلید SSH حتماً باید توجه همان کاربر برنامه cwRsync اجرا شود. بنابراین، به سراغ دایرکتوری مربوط به نصب cwRsync بروید. این کار از طریق پنجره فرمان ویندوز ممکن است. به عنوان مثال:
cd C:\Program Files (x86)\cwRsync\bin
۳) حالا یک کلید SSH برای کامپیوترتان تولید کنید.
ssh-keygen
۴) در اینجا باید یک مسیر فایل منساب برای ذخیره کلید تعیین کنید. مسیر پیشفرض برایتان عمل نخواهد نکرد. به عنوان مثال، میتوانید از مسیر زیر استفاده کنید. البته دقت کنید که حتماْ دایرکتوریها از قبل وجود داشته باشند.
C:\Users\user\.ssh\id_rsa
۵) وقتی پیغام مبنی بر کلمه عبور ظاهر شد، فقط کلید Return را فشار دهید. حالا باید کلیدهای عمومی و اختصاصی تولید شده را در دایرکتوریای که مشخص کرده بودید، ببینید.
۶) حالا نوبت به ارسال کلیدهای عمومی به سرور میرسد. البته شما میتوانید از روش دلخواهتان برای ارسال فایل استفاده کنید، ولی در اینجا از PSCP استفاده میکنیم. PSCP یک برنامه دیگر در گروه PuTTY است که به شما اجازه استفاده از scp میدهد و میتوانید آن را از اینجا دریافت کنید.
۷) در مرحله بعد PSCP و cwRsync را به آدرس محیطی اضافه میکنید تا بتوانند از مکانی به صورت مستقیم توسط خط فرمان استفاده شوند. مراحل کار در ویندوز 7 و 8 به صورت زیر خواهند بود.
- از منوی استارت، Control Panel را باز کنید.
- گزینه “System and Security” را انتخاب نمایید.
- حالا System را انتخاب کنید.
- از نوار سمت چپ، تنظیمات پیشرفته سیستم یا Advanced system settings را بزنید.
- به سربرگ Advanced بروید.
- دکمه “Environment Variables…” را بزنید.
- در بخش System variables، به سمت پایین حرکت کنید تا گزینه “Path variable” را ببینید. آن را فعال کرده و بر روی Edit… کلیک کنید.
- هیچچیزی را حذف نکنید. شما در اینجا میخواهید چیزی به آن اضافه کنید.
- مسیرها را به دایرکتوری bin برای exe و cwRsync اضافه کنید. مسیرها را با نقطه ویرگول (;) جدا کنید. نمونهای از این کار را در زیر میبینید.
C:\Program Files (x86)\PuTTY;C:\Program Files (x86)\cwRsync\bin;
- بر روی OK کلیک کنید تا به کنترلپنل برگردید.
- پنجره فرمان را در صورتی که باز نگه داشتهاید، دوباره اجرا کنید.
۸) از PSCP برای ارسال کلید استفاده کنید. در پنجره فرمان ویندوز، فرمان زیر را وارد نمایید.
pscp -scp C:\Users\user\.ssh\id_rsa.pub user@production_server:/home/user/.ssh/uploaded_key.pub
۹) در production_server، با استفاده از فرمان زیر، کلید جدید را به فایل authorized_keys ضمیمه کنید.
echo `cat ~/.ssh/uploaded_key.pub` >> ~/.ssh/authorized_keys
۱۰) یک دایرکتوری در سیستم ویندوزی برای ذخیره پشتیبانگیری از دادهها ایجاد نمایید.
mkdir %HOMEPATH%\backups
۱۱) یک نسخه پشتیبان دستی به صورت ذخیره در آدرس C:\Users\user\backups\public_orig\ ایجاد کنید. این نسخهای است که تمام نسخههای پشتیبان در آینده نسبت به آن بررسی میشوند. از سیستم ویندوزی، فرمان زیر را تایپ کنید.
rsync -hrtvz --chmod u+rwx user@production_server:~/public /cygdrive/c/Users/user/backups/public_orig/
به خاطر داشته باشید که این فرمانها حتی در ویندوز، به سبک لینوکس هستند.
یعنی C:\Users\user\backups\public_orig\ تبدیل به /cygdrive/c/Users/user/backups/public_orig/میشود.
این بار از شما خواسته میشود که رمز عبور production_server را وارد کنید. در نتیجه، باید پیغام تأییدی مطابق زیر ببینید.
sent 100 bytes received 2.76K bytes 1.90K bytes/sec total size is 20.73K speedup is 7.26
در عین حال، میتوانید با فرمان dir، محتویات دایرکتوری %HOMEPATH\backups\public_orig\ را بررسی کنید و از کپیشدن تمام موارد مطمئن شوید.
۱۲) آخرین نسخه فرمان را به فایل cwrsync.cmd اضافه کنید و برای بررسی عملکرد، یک بار آن را به صورت دستی اجرا نمایید. سپس آن را برای اجرای خودکار تنظیم نمایید.
- از منوی استارت، در بخش All Programs، فولدر cwRsync را باز کنید.
- بر روی Batch example راستکلیک کنید و گزینه “Run as administrator” را انتخاب نمایید.
- در نتیجه، فایل cmd برای ویرایش باز میشود.
- هیچکدام از تنظیمات پیشفرض را تغییر ندهید.
- در پایین این فایل، خط زیر را اضافه کنید.
rsync -hrtvz --chmod u+rwx --delete --link-dest=/cygdrive/c/Users/user/backups/public_orig user@production_server:~/public /cygdrive/c/Users/user/backups/public_%DATE:~10,4%-%DATE:~4,2%-%DATE:~7,2%
- فایل را ذخیره کنید.
- اکنون فایل را از طریق خط فرمان اجرا کنید.
"C:\Program Files (x86)\cwRsync\cwrsync.cmd"
در نتیجه نسخه پشتیبان امروز و محیط مناسب برای اتصال کلید SSH بدونپسورد ایجاد میشوند.
- در نتیجه، خروجیای مشابه گام ۱۱ باید ببینید.
۱۳) نهایتاً cwrsync.cmd را به عنوان یک وظیفه روزانه در Task Scheduler اضافه کنید. برای این منظور:
- از منوی استارت، مسیر All Programs > Accessories > System Tools > Task Scheduler را دنبال کنید.
- بر روی دکمه Create Basic Task…. کلیک کنید تا پنجره Task Wizard برایتان باز شود.
- عنوان و توضیحات را کامل کنید. به عنوان مثال: “rsync backups”.
- از لیست بازشونده، گزینه “Daily” را انتخاب کنید.
- روز شروع را امروز و زمان پشتیبانگیری را طوری انتخاب کنید که سرور شما آزاد باشد و یا اینکه کامپیوترتان روشن باشد.
- گزینه “Start a program” را انتخاب کنید.
- در فیلد Program/script، آدرس زیر را وارد کنید.
"C:\Program Files (x86)\cwRsync\cwrsync.cmd"
- بر روی Finish کلیک کنید.
به خاطر داشته باشید که این نسخههای پشتیبان از پهنای باند اختصاصی شما استفاده میکنند و انجام بیش از حدّ آنها میتواند منجر به هزینههای اضافی برایتان شود.
اکنون پشتیبانگیری از دادهها به صورت روزانه و اتوماتیک برای سرورتان انجام میشود. در نتیجه، هر مشکلی که برای سرور پیش آمد میتوانید آن را به نقطه مناسب زمانی بازیابی کنید.
بازیابی نسخه پشتیبان Rsync
در این بخش به نحوه استفاده از Rsync برای بازیابی سرور با یک نسخه پشتیبان خواهیم پرداخت. برای این منظور:
- به سراغ دایرکتوری نسخههای پشتیبان در backup_server یا دسکتاپ خود بروید.
- موقعیت فولدر را با تاریخ مناسب پیدا کنید.
- باید انتخاب کنید که آیا میخواهید یک بازیابی کلی انجام دهید یا تنها برخی فایلهای خاص را درنظر دارید.
- فایلهای انتخابشده را از طریق scp به production_server با ابزاری مانند SFTP یا rsync انتقال دهید.
- برای کاربران ویندوز، باید گفت که باید مالکیت و مجوّزهای مناسب فایل لینوکسی انتخاب شوند.
نگهداری از نسخههای پشتیبان
حتی اگر پشتیبانگیری از دادهها به صورت اتوماتیک و به شکل مناسب تنظیم شده باشد، پایش و نگهداری نسخههای پشتیبان برایتان اهمیت خواهد داشت. در نتیجه، از غافلگیریهای احتمالی جلوگیری میشود و روند پشتیبانگیری تسهیل میگردد.
- برای پشتیبانگیری از دادهها به یک سرور ریموت یا دسکتاپ (با استفاده از rsync یا هر ابزار دیگر) باید حجم آنها را نسبت به ترافیک ماهانهتان بررسی کنید. حواستان به مقدار استفاده از پهنای باند باشد تا دچار هزینههای اضافی نشوید.
- برای تنظیم یک ایمیل دیگر به cron job، خط زیر را به بالای لیست کارها در فایل کرون اضافه کنید.
MAILTO="user@example.com"
- در صورتی که بخواهید ایمیلهای اطلاعرسانی را از کارهای کرون حذف کنید، این خط را اضافه نمایید.
MAILTO=""
- دقت کنید که سرور پشتیبان شما دارای فضای دیسک به اندازه کافی باشد. گاهی اوقات لازم است که نسخههای پشتیبان قبلی را پاک کنید. در صورتی که از rsync backup برای این منظور استفاده میکنید و فایلهای حجیمی دارید که مرتباً تغییر میکنند، سرور شما به سرعت پُر خواهد شد. در صورت لزوم، میتوانید حذف خودکار پشتیبانها را تنظیم کنید.
- اگر از نسخه پشتیبان اتوماتیک rsync استفاده میکنید، شاید لازم باشد که فولدر –link-dest را در فرمان کرون به فولدر پشتیبانگیری جدید تغییر دهید. چرا که احتمالاً تغییرات زیادی نسبت به نسخه پشتیبان اولیه انجام دادهاید. چنین کاری موجب صرفهجویی در زمان و فضای دیسک میشود.
مفاهیم فرمان Rsync
Rsync با اینکه یک ابزار قدرتمند است، ولی مجموعهای از گزینهها در آن ممکن است باعث سردرگمی شود. اگر بخواهید این فرمان را به صورت سفارشیتر اجرا کنید یا در مواجهه با خطاها تصمیم بگیرید، با ما در این بخش همراه باشید. فرمان پایه که قبلاً نیز اشاره شد، به صورت زیر است:
rsync -ahvz user@production_server:/path/to/source/content /path/to/local/backup/storage/
rsync
یک فرمان پایه rsync از قالب زیر پیروی میکند.
rsync copyfrom copyto
فایل یا دایرکتوری که میخواهید از آن پشتیبان تهیه کنید را در جای copyfrom قرار میدهید و copyto نیز جایی است که میخواهید پشتیبانگیری از دادهها را در آن ذخیره کنید. copyfrom و copyto دو آرگومان ضروری برای فرمان rsync هستند. نمونه یک فرمان پایه rsync با این دو آرگومان را در زیر میبینید.
rsync user@production_server:~/public ~/backups/mybackup |---| |-----------------------------| |----------------| ^ ^ ^ | | | rsync copyfrom copyto
در عین حال، گزینههای دیگری برای اجرای فرمان Rsync وجود دارند. این گزینهها باید قبل از آرگومانهای اصلی فرمان قرار گیرند.
rsync --options copyfrom copyto
-ahvz
در اینجا برخی گزینههای استاندارد فرمان rsync را میبینیم.
-ahvz
اینها ۴ گزینه rsync هستند که در یک عبارت جمعآوری شدهاند. البته شما میتوانید آنها را جداگانه، مطابق زیر نیز به کار ببرید.
-a -h -v -z
این گزینهها تأثیرات زیر را در پی خواهند داشت.
-a or –archive: حفظ مالکیت و مجوزهای فایلها، کپیهای بازگشتی و …
-h or –human-readable: تعداد خروجیهای قابلخواندن
-v or –verbose: نمایش خروجیهای بیشتر
-z or –compress: فشردهسازی فایلهای داده در طول انتقال
میتوانید هر کدام گزینههای rsync را اضافه یا کم کنید. به عنوان مثال، اگر نمیخواهید تمام خروجیها را ببنید، از گزینه زیر استفاده میکنید.
-ahz
در هنگام ساختن نسخه پشتیبان، گزینه اصلی –a یا –archive است.
موقعیت منبع
موقعیت copyfrom آدرسی است که برای پشتیبانگیری از دادهها در production_server انتخاب میکنید. در اینجا باید مسیر فایلهای محتوای سرور را قرار دهید.
user@production_server:~/public |--------------------| |------| ^ ^ | | SSH login path
به دلیل اینکه میخواهید از یک سرور ریموت (production_server) عمل کپی را انجام دهید، ابتدا باید زمینه ورود SSH را فراهم کنید. سپس پس از علامت نقلقول (:)، آدرس دقیق فولدری را که میخواهید از آن پشتیبان تهیه کنید، وارد کنید.
در این مثال، شما از دایرکتوری ~/public پشتیبانگیری میکنید. این همان دایرکتوریای است که وبسایتهای شما در آن قرار میگیرند. دقت کنید که علامت ~ خلاصهای برای /home/user/ محسوب میشود. علامت / نیز برای تهیه نسخه پشتیبان از فولدر public است و نه فقط محتویات آن.
در صورتی که میخواهید از ریشه و به صورت کامل از سرور پشتیبانگیری کنید، باید از مسیر /* استفاده کنید. همچنین باید برخی فولدرها را حذف کنید تا با پیغامها و هشدارهای زیاد در طول پشتیبانگیری از دادهها برخورد نکنید. به عنوان مثال، /dev، /proc، /sys، /tmp و /run دارای محتوای دائمی نیستند و /mnt یک mount point برای دیگر فایلهای سیستمهای محسوب میشود. برای حذف یک مورد در فرمان rsync، در انتهای فرمان از گزینه –exclude استفاده کنید.
--exclude={/dev/*,/proc/*,/sys/*,/tmp/*,/run/*,/mnt/*}
همچنین شما برای انجام پشتیبانگیری از دادهها به صورت /* یا دایرکتوریهای سطح بالاتر نیاز به استفاده از یک کاربر با دسترسیهای روت یا sudo نیاز خواهید داشت. اگر از کاربر sudo استفاده میکنید، حتماً یا باید درخواست پسورد را غیرفعال کنید یا آن را برای سرور ارسال نمایید.
موقعیت مقصد
موقعیت copyto مسیری است که شما میخواهید پشتیبانگیری از دادهها را در backup_server ذخیره کنید.
~/backups/mybackup
در فرمان انجام پشتیبانگیری به صورت اتوماتیک، یک متغیر تاریخ به مسیر فایل ضمیمه میشود.
~/backups/public_$(date -I) |--------| <- date variable |-------------------------| ^ | path
این همان مسیر فایل محلی در backup_server است و برای ذخیره نسخههای پشتیبان مورد استفاده قرار میگیرد. متغیر $(date -I) از عملگر داخلی تاریخ برای اضافهکردن تاریخ کنونی به انتهای مسیر فایل استفاده میکند. در نتیجه، برای هر کدام از نسخههای پشتیبان یک فولدر جدید ساخته شده و به راحتی میتوان آنها را در محل ذخیره پیدا کرد.
Cron
فرمان زیر علاوه بر انجام مثال قبلی، برخی گزینههای پیشرفته دیگر را نیز اضافه کرده است.
0 3 * * * rsync -ahvz --delete --link-dest=~/backups/public_orig user@production_server:~/public ~/backups/public_$(date -I)
سری اعداد و علامتهای ستاره مشخص میکنند که چه زمانی فرمان دستور کرون باید اجرا شود. به خاطر داشته باشید که این فرمان قبلاً در فایل crontab اضافه شده است.
0 3 * * * Command ^ ^ ^ ^ ^ ^ | | | | | | Minute Hour Day of Month Month Weekday Shell command
برای هر کدام از پنج دستهبندی زمانی (دقیقه، ساعت، روز از ماه، ماه، روز هفته) میتوانید یک عدد خاص یا علامت * استفاده کنید. علامت * به معنای «هر» خواهد بود. ضمن اینکه باید از اعداد ۲۴ ساعته برای متغیر ساعت استفاده کنید. مثال بالا مشخص میکند که فرمان باید در اولین دقیقه سومین ساعت هر روز اجرا شود. هر چیزی که بعد از پنجمین عدد یا ستاره اضافه کنید به عنوان فرمان اصلی درنظر گرفته میشود. این فرمان در صورتی که آن را در shell تایپ کرده باشید، اجرا خواهد شد.
برای آزمایش اجرای این فرمان میتوانید دستور کرون را به صورت * * * * * تنظیم کنید. در این حالت، در هر دقیقه یک نسخه پشتیبان جدید ایجاد میشود. پشتیبانگیری از دادهها به این صورت میتواند کاملاً ترافیکتان را مصرف کند. بنابراین، سعی کنید حتماً به هزینههای انجام این کار توجه داشته باشید.
–delete
–delete یک گزینه دیگر برای فرمان rsync است.
با استفاده از گزینه –delete، در صورتی که فایل از موقعیت copyfrom شما حذف شده باشد، در آخرین نسخه پشتیبان copyfrom منظور نخواهد شد؛ حتی در صورتی که در پشتیبانهای قدیمیتر وجود داشته باشد. البته فایل از نسخههای قدیمیتر حذف نمیشود. چنین کاری موجب سهولت دسترسی و پیدا کردن نسخههای پشتیبان خواهد شد.
–link-dest
این گزینهای است که باعث افزایش کارآیی نسخههای پشتیبان قدیمی rsync میشود.
--link-dest=~/backups/public_orig
–link-dest گزینه دیگر فرمان rsync است که برای طرح پشتیبانگیری از دادهها به صورت پلکانی اهمیت دارد. این گزینه به ما اجازه میدهد که برای پوشههای هر کدام از نسخههای پشتیبان، نامهای مختلفی انتخاب کنیم. همچنین میتوانیم با استفاده از این گزینه چندین نسخه پشتیبان کامل را بدون اشغالکردن حجم زیادی از دیسک، ذخیره نماییم.
آرگومان اختصاصی گزینه –link-dest به صورت زیر خواهد بود.
--link-dest=comparison_backup_folder
به جای comparison_backup_folder میتوانید هر چیزی قرار دهید. هرچه به محیط شخصی (production) بیشتر شباهت داشته باشد، rsync به شکلی بهینهتر عمل خواهد کرد.
علامت / برای مطابقت با مسیر مقصد یا copyto حذف میشود.
موقعیتهای مختلف سرور
در این آموزش، از سرور ریموت با عنوان production_server و یک سرور لوکال با عنوان backup_server استفاده کردیم. با این وجود، rsync برای یک سرور لوکال production_server و یک سرور ریموت backup_server نیز میتواند کارآیی خود را داشته باشد. در این حالت، نسخههای پشتیبان محلی یا لوکال میتوانند به یک فولدر دیگر در همان سیستم یا یک سرور ریموت دیگر ذخیره شوند. هر سرور ریموتی که بخواهید در این زمینه استفاده کنید، نیازمند یک ورود SSH قبل از وارد کردن مسیر فایل خواهد بود.
اجرای فرمان rsync از طریق سرور پشتیبان یک نسخه پشتیبان «کششی» و از طریق سرور محلی، یک نسخه پشتیبان «فشاری» نامیده میشود. فولدرهای محلی نیای به ورود SSH ندارند. در صورتی که ورود SSH و سپس علامت نقلقول قبل از مسیر فایل برای فولدرهای ریموت الزامی است. نمونههای دیگر فرمان rsync را در زیر میبینید.
rsync copyfrom copyto rsync /local1 /local2/ rsync /local user@remote:/remote/ rsync user@remote:/remote /local/ rsync user@remote1:/remote user@remote2:/remote/
در تمام سرورها rsync باید نصب شده باشد. همچنین دقت کنید هر سرور ریموت باید دارای یک سرور SSH در حال اجرا باشد.
جمعبندی
پشتیبانگیری از دادهها میتواند امری حیاتی برای بازیابی سرورها در برخورد با مشکلات مختلف باشد. امیدواریم که این مطلب آموزشی نسبتاً طولانی برای شما مفید واقع شده باشد. به خاطر داشته باشید مطالب در این زمینه میتواند گستردهتر از این باشد و شاید همیشه باید اطلاعات خود را بروزرسانی کنید. به عنوان مثال، صفحه راهنمای فرمان rsynce همیشه در اختیار شماست.