بکاپ سایت؛ چرا باید خودت یه نسخه از پروژهت داشته باشی
بکاپ سایت یعنی خودت یه نسخه جدا از کد، دیتابیس و فایلها داشته باشی. ببین از چی نسخه بگیری، کجا نگهش داری و چطور تستش کنی.

بکاپ سایت (همون نسخه پشتیبان) یعنی یه کپی کامل و جدا از پروژهت داشته باشی، بیرون از جایی که سایتت الان روش اجرا میشه.
جواب کوتاه: از سه چیز باید نسخه خودت رو داشته باشی — کد، دیتابیس و فایلهایی که کاربرها یا خودت آپلود کردین. و از همه مهمتر، حداقل یه بار باید امتحان کنی که اون نسخه واقعاً برمیگرده؛ وگرنه فقط یه فایل داری، نه یه پشتیبان.
چرا خودم باید نسخه نگه دارم؟
چون تو تنها کسی هستی که مطمئنی به کل پروژهت دسترسی داره.
فرض نکن هر جایی که کدت روش اجرا میشه، حتماً یه نسخه سالم و قابلبرگشت ازش داره. ممکنه داشته باشه، ممکنه فقط بخشیش رو داشته باشه، ممکنه اون نسخه برای کار داخلی خودشون باشه نه برای تحویل دادن به تو. تنها نسخهای که مطمئنی وجود داره، اونیه که خودت گرفتی و خودت یه بار بازش کردی.
تازه بیشتر چیزهایی که پروژهها رو نابود میکنن اصلاً خرابی سختافزار نیست:
- یه دستور اشتباه که جدول دیتابیس رو خالی میکنه.
- یه آپدیت که وسط کار نصفه میمونه.
- AI یه بازنویسی بزرگ انجام میده و فایلهای قبلی رو عوض میکنه.
- لپتاپت گم میشه یا سوخت میکنه و تنها نسخه کد روش بود.
- حساب یه سرویس جانبی بسته میشه و دادهها باهاش میرن.
هیچکدوم اینها «اتفاق نادر» نیست. نسخه خودت تنها چیزیه که بین این اتفاقها و از دست رفتن کل پروژه وایمیسته.
اگه تازه داری پروژهت رو آنلاین میکنی، این یکی از کارهاییه که تو مسیر آنلاین کردن سایتی که با AI ساختی هم بهش اشاره شده و بهتره از همون اول جاش رو درست کنی.
از چی دقیقاً نسخه بگیرم؟
۱. کد: یه مخزن گیت آنلاین
سادهترین جای نگهداری کد، گیت (Git) هست: ابزاری که تاریخچه تغییرات کدت رو نگه میداره. ولی گیت روی لپتاپ خودت، هنوز یعنی یه نسخه.
کار اصلی اینه که کدت رو به یه ریموت (remote) هم بفرستی، یعنی یه مخزن روی اینترنت:
git remote -v # ببین اصلاً ریموت داری یا نه
git remote add origin <آدرس مخزن>
git push -u origin main
اگه خروجی دستور اول خالی بود، یعنی کل تاریخچه پروژهت فقط روی همین یه کامپیوتره. اگه با گیت کار نکردی، گیت برای کسی که با AI کد میزنه رو بخون؛ نصف کار پشتیبانگیری همینه.
یه نکته مهم: فایل .env و کلیدها نباید تو گیت باشن. اونها رو جدا و جای امن نگه دار، نه داخل مخزن.
۲. دیتابیس: یه فایل خروجی
کد رو میشه دوباره ساخت، داده رو نه. سفارشها، کاربرها، متنهایی که نوشتی — اینها فقط تو دیتابیساند و هیچ کپی دیگهای ازشون نیست.
دیتابیس رو با یه دستور میتونی به یه فایل تبدیل کنی:
# PostgreSQL
pg_dump "$DATABASE_URL" > backup-1404-06-29.sql
# MySQL / MariaDB
mysqldump -u USER -p DBNAME > backup-1404-06-29.sql
# SQLite (فایل خود دیتابیسه)
cp data.db backup-1404-06-29.db
اون فایل رو از سروری که سایتت روشه بیار پایین و جای دیگه نگه دار. فایلی که کنار خود دیتابیس مونده، وقتی همون سرور مشکل پیدا کنه با بقیهش از بین میره. اگه هنوز دقیق نمیدونی دادههای اپت کجا ذخیره میشن، دیتابیس چیه و دادهها کجا میمونن جواب همین سواله.
۳. فایلهای آپلودی و تنظیمها
سومین چیزی که معمولاً یادش میره: عکس محصولها، فایلهای پروفایل، پیوستها. اینها تو دیتابیس نیستن؛ یه پوشهان کنار پروژه یا تو یه سرویس ذخیره فایل.
اینها رو هم یه بار در ماه با هم بردار:
tar -czf uploads-1404-06-29.tar.gz ./public/uploads
و کنارش یه یادداشت ساده از چیزهایی که جای دیگهان: اسم دامنه و جایی که ازش خریدی، سرویسهای جانبی که ازشون کلید گرفتی، و اینکه هر تنظیم .env مال کدوم سرویسه.
کجا نگهشون دارم؟
قانون سادهای هست که خیلی قدیمیه و هنوز جواب میده: دو نسخه در دو جای متفاوت، که یکیش جایی باشه که سایتت اونجا نیست.
نکتهای که راحت فراموش میشه: نسخهای که فقط روی همون سرور نگه داشتی، در عمل نسخه دوم نیست. هر چیزی که به اون یه سرور بزنه، به اون هم میزنه.
اسم فایلها رو تاریخدار بذار
اگه اسم همه فایلها backup.sql باشه، هر بار قبلی رو پاک میکنی و در نهایت فقط یه نسخه داری — که ممکنه همون نسخه خرابه باشه. تاریخ رو بذار تو اسم فایل و چند نسخه آخر رو نگه دار.
نسخهای که تستش نکردی، نسخه نیست
این مهمترین قسمت این مطلبه و بیشترین چیزیه که ازش رد میشن.
خیلیها ماهها فایل میگیرن و روزی که لازم میشه میفهمن فایل خالی بوده، نصفه بوده، یا دستوری که گرفته فقط ساختار جدولها رو ذخیره کرده نه دادهها رو. یه نسخه وقتی واقعی میشه که یه بار برگردونده باشیش.
یه بار، همین این هفته، این کار رو بکن:
- یه دیتابیس خالی و جدید روی سیستم خودت بساز.
- فایل خروجی آخرت رو توش بارگذاری کن.
- پروژه رو با همون دیتابیس بالا بیار.
- ببین دادهها سر جاشون هستن: چند تا کاربر، چند تا سفارش، آخرین رکورد چه تاریخیه.
- مراحلی که انجام دادی رو تو یه فایل کوتاه بنویس، چون روزی که لازمت میشه احتمالاً حالت خوب نیست.
همین یه بار امتحان کردن، فرق بین «فکر میکنم پشتیبان دارم» و «دارم» است.
چند وقت یه بار نسخه بگیرم؟
جواب دقیقی نداره، ولی معیارش سادهست: چقدر داده از دست بدی، برات قابل تحمله؟
- سایت شخصی یا پروژهای که دادهش کم عوض میشه: ماهی یکی، و حتماً قبل از هر تغییر بزرگ.
- فروشگاه یا اپی که هر روز سفارش و کاربر جدید داره: روزانه، حتی اگه دستی باشه.
- کد: هر بار که یه تغییر معنادار دادی
pushکن؛ این یعنی عملاً هر روز.
و یه قانون همیشگی: قبل از هر آپدیت بزرگ، هر مهاجرت دیتابیس و هر بازنویسی بزرگ با AI، یه نسخه تازه بگیر. این ارزونترین بیمه دنیاست.
سوالهای پرتکرار
گیت به تنهایی بکاپ حساب میشه؟
برای کد تقریباً آره، به شرطی که به یه مخزن آنلاین هم push کرده باشی. ولی گیت دیتابیس و فایلهای آپلودی رو نگه نمیداره، و اون دو تا معمولاً همون چیزیه که نمیشه دوباره ساختش.
پروژهم رو با AI ساختم و کد رو بلد نیستم؛ باز هم لازمه؟
بیشتر لازمه. وقتی کد رو خودت ننوشتی، اگه یه روز چیزی خراب بشه سختتر میتونی از اول بسازیش. نسخه سالم قبلی، سریعترین راه برگشتنه.
چقدر نسخه قدیمی نگه دارم؟
چند نسخه آخر کافیه؛ مثلاً هفت نسخه روزانه و چند نسخه ماهانه. دلیلش اینه که بعضی مشکلها دیر معلوم میشن و ممکنه آخرین نسخهت هم مشکل رو داشته باشه.
فایل بکاپ رو کجا نذارم؟
روی همون سروری که سایتت اونجاست، و توی مخزن گیت عمومی. اولی با خود سرور از بین میره، دومی داده کاربرها رو عمومی میکنه.
خلاصه
- بکاپ سایت یعنی نسخهای که خودت داری و خودت بهش دسترسی داری، جدا از جایی که سایت اجرا میشه.
- سه چیز: کد (مخزن گیت آنلاین)، خروجی دیتابیس، و فایلهای آپلودی و یادداشت تنظیمها.
- دو نسخه در دو جای متفاوت، با اسم فایل تاریخدار.
- نسخهای که یه بار برنگردوندیش، هنوز ثابت نشده کار میکنه.
- قبل از هر آپدیت بزرگ یا بازنویسی با AI، یه نسخه تازه بگیر.
این یکی از کارهای همیشگی بعد از آنلاین شدنه؛ بقیهشون رو تو بعد از Launch؛ نگهداری و آپدیت سایت نوشتیم.


