در یادداشتی اختصاصی برای جام جم آنلاین مطرح شد
پشتیبانگیری از اطلاعات سرور همانند پشتیبانگیری از اطلاعات رایانه شخصی مهم است و نباید اینگونه فرض کرد که چون سرور و شرکت پشتیبان داریم، جای هیچ نگرانی نیست. در وبسایتهایی که دیتابیس محور هستند، 2 نوع پشتیبانگیری مرسوم است: فایلهایی که وبسایت را بالا میآورند (پیاچپی، پایتون، پرل،فایلهای CSS، جاوا اسکریپتها و ...) و محتوای دیتابیس. در ادامه بررسی خواهیم کرد که یک سیستم مناسب پشتیبانگیری باید از هر دوی این اطلاعات پشتیبان تهیه کند.
فرض میگیریم برای انجام این پشتیبانگیری، نیازمندیهای زیر را دارید:
1 ـ وبسایت شما از نوع LAMP است (لینوکس، آپاچی، مایسهکوئل و پیاچپی/پرل یا پایتون).
2 ـ دسترسی به SSH سرور
3- ایجاد فولدر و آشنایی با chmodهای فایلها
4 ـ اجرای اسکریپتهای bash و راهاندازی کرون جابها (کرونجابها را در شماره پیش توضیح دادیم).
5 ـ این که بدانید فایلهای وبسرور کجاست، چه دیتابیسهایی را باید کپی کنیم و شناسه و دانستن رمز عبور مایسهکوئل خود
6 ـ در صورت پشتیبان گیری از سرور دیگر، دسترسی به SSH آن سرور ضروری است.
گام اول: پشتیبانگیری محلی
برای پشتیبانگیری از وبسایت، اسکریپتمان باید 2 قابلیت داشته باشد؛ تمام فایلهای نیرودهنده به سایت را کپی کند، تمام دادههای موجود در دیتابیس را ذخیره کند. در این مثال، ما صفحههای تولید شده توسط اسکریپتها را ذخیره نمیکنیم و فقط از عناصر اساسی و حیاتی راهاندازی وبسایت پشتیبان میگیریم.
در این صورت اگر هر اتفاقی برای سایت افتاد، بسادگی میتوان همه چیز را در میزبانی جدید بهحالت قبلی برگرداند.
نخست، به سرور خود SSH بزنید و در دایرکتوری home خود، فولدری بهنام backups ایجاد کنید. در این فولدر فایلی بهنام backup.sh بسازید. سپس فولدری بهنام files ایجاد کنید.
نتیجه باید این شکلی باشد:
your_home_directory/
|
+ - backups/
|
+ - backup.sh
|
+ - files/
حالا به فایل backup.sh میپردازیم. این فایل حاوی اسکریپتی خواهد بود که دادهها را زیپ کرده و درون فولدر files قرار میدهد.
اسکریپتی را که در اینجا آورده شده است در فایل backup.sh قرار دهید.
#!/bin/sh
THESITE="smarterware.org"
THEDB="my_database_name"
THEDBUSER="my_database_user"
THEDBPW="my_database_password"
THEDATE=`date +%d%m%y%H%M`
mysqldump -u $THEDBUSER -p${THEDBPW} $THEDB | gzip » /var/www/vhosts/$THESITE/backups/files/dbbackup_${THEDB}_${THEDATE}.bak.gz
tar czf /var/www/vhosts/$THESITE/backups/files/sitebackup_${THESITE}_${THEDATE}.tar -C / var/www/vhosts/$THESITE/httpdocs
gzip /var/www/vhosts/$THESITE/backups/files/sitebackup_${THESITE}_${THEDATE}.tar
find /var/www/vhosts/$THESITE/backups/files/site* -mtime +5 -exec rm {} \;
find /var/www/vhosts/$THESITE/backups/files/db* -mtime +5 -exec rm {} \;
خط 3 تا 7 را با دقت بررسی کنید، باید مقادیر آنها را با مقدار متناسب خود عوض کنید. این نسخه از اسکریپت 2پیشفرض دارد که مربوط به مکان قرار گرفتن فایلهاست. بیشتر میزبانهای وب (و نه همهشان) دایرکتوری home در مسیری مشابه مسیر زیر قرار دارد:
/var/www/vhosts/example.com/
که فایلهای عمومی قابل دسترسی از طریق وب را میتوان در دایرکتوری زیر پیدا کرد:
/var/www/vhosts/example.com/httpdocs/
اگر مسیر فایلهای وبتان با مقادیر تفاوت دارد، در اسکریپت آن را اصلاح کنید.
حالا بیایید عملکرد این اسکریپت را بررسی کنیم. این اسکریپت تمام دادههای دیتابیس معرفی شده را dump کرده و در یک فایل زیپ به نام زیر، در پوشه files قرار میدهد:
dbbackup_example.com_1402120101.bak.gz.tar
در این مرحله سورسکد سایت را از دایرکتوری httpdocs برمیدارد و در فولدر files با نام زیر قرار میدهد:
sitebackup_example.com_1402120101.tar
و دست آخر، خطوط 14 و 15 نسخههای پشتیبان بیش از 5 روز پیش را حذف میکنند. این یعنی شما نسخه پشتیبان تا 5 روز پیش را همیشه در دسترس دارید. البته میتوانید تعداد روزهای خود را بیشتر یا کمتر کنید، اما مطلع باشید که حجم نسخههای پشتیبان معمولا خیلی سریع افزایش پیدا میکند.
برای اجرای این اسکریپت، باید دستور زیر را ابتدا وارد کرد:
chmod –x backup.sh
و بعد به اجرای اسکریپت بهصورت دستی پرداخت که فایلهای پشتیبان را ایجاد کند. سپس آن را در بخش cron jobs سرور تنظیم کنید که مثلا ساعت 3 صبح هر روز این اسکریپت اجرا شود.
این اسکریپت را برای هر سرور و وبسایتی که اطلاعاتش برایتان مهم است، بهکار ببرید. حالا دیگر شبها با خیال آسوده میخوابید، چرا که نسخه پشتیبان هر شب در حال تهیه است؛ اما هنوز کار تمام نشده است.
گام دوم: پشتیبانگیری از راه دور
داشتن پشتیبان روی سرور، زمانی خیلی مفید است که کدهای سایتتان بر اثر بهروزرسانی از کار بیفتد، آن موقع است که با خیال آسوده و چند کلیک، همه چیز را به روال عادی برمیگردانید. اما اگر سرور از کار بیفتد یا قابل دسترسی نباشد و مواردی از این دست، در این صورت این نسخهها نیز کارایی نخواهد داشت. بههمین دلیل، باید فایلهای پشتیبانگیری شده را روی سرور دیگری بفرستیم تا در صورت خرابی سرور، سایتمان از دست نرود.
با توجه به این که این سرور را از دوست خود میگیرید یا با رایانه خانگی یک لینوکس راهاندازی میکنید، کافی است یک rsync راهاندازی کنید. این کار تمام پشتیبانهای سرور را به سمت خود منتقل میکند. برای این منظور باید عملیات زیر را انجام دهید:
در سرور دوم، فولدری بهنام offsitebackups ایجاد کنید. برای rsync کردن فایلها به سرور دوم، به آن سرور SSH بزنید و کرونجابی مشابه زیر ایجاد کنید:
rsync -e ssh -a —delete you@example.com:/var/www/vhosts/example.com/backups/files/ /your/path/to/offsitebackups/
نام کاربری، وبسایت و مسیر بالا را با اطلاعات خود جایگزین کنید.
این دستور تمام فایلهای فولدر backups را با فولدر offsitebackups سینک میکند. از اجرای صحیح آن مطمئن شوید. بعد از انجام دستور، فایلها را در فولدر Offsitebackups مشاهده خواهید کرد.
محمدرضا قربانی
در یادداشتی اختصاصی برای جام جم آنلاین مطرح شد
در یادداشتی اختصاصی برای جام جم آنلاین مطرح شد
در گفتگو با جام جم آنلاین مطرح شد
در یادداشتی اختصاصی برای جام جم آنلاین مطرح شد
در گفتگو با جام جم آنلاین مطرح شد
در گفتوگوی «جامجم» با رئیس سازمان نظام روانشناسی و مشاوره کشور مطرح شد