پرش به مطلب اصلی

پشتیبان از دیسک دائمی

پشتیبان دیسک دائمی امکان ایجاد snapshot از دیسک‌های متصل به اپلیکیشن (PVC) و بازیابی آن‌ها را فراهم می‌کند.

تفاوت با پشتیبان پایگاه داده

این سند درباره دیسک‌های دائمی اپلیکیشن است (فایل‌های آپلودشده، SQLite، cache). برای پشتیبان پایگاه‌های داده (PostgreSQL، MongoDB) به پشتیبان پایگاه داده مراجعه کنید.

🖼️
مدیریت پشتیبان دیسک دائمیplaceholder — تصویر را اینجا جایگزین کنید

پیش‌نیازها

  • یک اپلیکیشن با دیسک دائمی فعال
  • دسترسی به داشبورد یا API

ایجاد پشتیبان دستی

پشتیبان دیسک یک snapshot لحظه‌ای از تمام داده‌های روی دیسک است. این snapshot روی Object Storage ذخیره می‌شود.

از طریق داشبورد

۱. وارد داشبورد ابرکلیک شوید ۲. پروژه موردنظر را باز کنید ۳. از منوی سمت راست، دیسک‌ها را انتخاب کنید ۴. روی دیسک موردنظر کلیک کنید ۵. تب پشتیبان‌ها را باز کنید ۶. دکمه ایجاد پشتیبان را بزنید

پشتیبان ظرف چند دقیقه (بسته به حجم داده) آماده می‌شود.

از طریق API

curl -X POST https://api.abrclick.ir/v1/disks/{diskId}/backups \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"description": "قبل از migration"
}'

پاسخ:

{
"data": {
"id": "backup-uuid",
"diskId": "disk-uuid",
"sizeBytes": 524288000,
"status": "creating",
"description": "قبل از migration",
"createdAt": "2026-07-20T10:30:00Z"
},
"status": 201
}

مشاهده لیست پشتیبان‌ها

از طریق داشبورد

در صفحه دیسک، تب پشتیبان‌ها لیست تمام snapshot های موجود را نشان می‌دهد.

از طریق API

curl https://api.abrclick.ir/v1/disks/{diskId}/backups \
-H "Authorization: Bearer <token>"

پاسخ:

{
"data": [
{
"id": "backup-uuid",
"diskId": "disk-uuid",
"sizeBytes": 524288000,
"status": "ready",
"description": "قبل از migration",
"createdAt": "2026-07-20T10:30:00Z",
"completedAt": "2026-07-20T10:35:00Z"
}
],
"status": 200
}

دانلود پشتیبان

شما می‌توانید فایل پشتیبان را دانلود کنید.

از طریق API

curl https://api.abrclick.ir/v1/disks/{diskId}/backups/{backupId}/download \
-H "Authorization: Bearer <token>"

پاسخ یک URL موقت (presigned) است:

{
"data": {
"url": "https://s3.ir-thr-1.arvancloud.com/abrclick-backups/...",
"expiresAt": "2026-07-20T12:00:00Z"
},
"status": 200
}

لینک دانلود تا ۱ ساعت معتبر است:

wget "https://s3.ir-thr-1.arvancloud.com/abrclick-backups/..." -O backup.tar.gz

بازیابی از پشتیبان

بازیابی یک پشتیبان دیسک در دو مرحله انجام می‌شود:

۱. دریافت URL موقت برای آپلود فایل پشتیبان ۲. آپلود فایل به URL و درخواست restore

توجه

بازیابی داده‌های فعلی دیسک را جایگزین می‌کند. این عملیات غیرقابل بازگشت است. قبل از restore یک پشتیبان جدید بگیرید.

مرحله ۱: دریافت URL آپلود

curl -X POST https://api.abrclick.ir/v1/disks/{diskId}/backups/restore/presign \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"sizeBytes": 524288000
}'

پاسخ:

{
"data": {
"uploadUrl": "https://s3.ir-thr-1.arvancloud.com/...",
"uploadId": "upload-uuid",
"expiresAt": "2026-07-20T12:00:00Z"
},
"status": 200
}

مرحله ۲: آپلود فایل پشتیبان

curl -X PUT "https://s3.ir-thr-1.arvancloud.com/..." \
--data-binary @backup.tar.gz \
-H "Content-Type: application/gzip"

مرحله ۳: اجرای restore

curl -X POST https://api.abrclick.ir/v1/disks/{diskId}/backups/restore \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"uploadId": "upload-uuid"
}'

پاسخ:

{
"data": {
"jobId": "restore-job-uuid",
"status": "running"
},
"status": 202
}

دیسک به‌صورت موقت unavailable می‌شود. پس از اتمام restore، اپلیکیشن به‌طور خودکار ری‌استارت می‌شود و داده‌های بازیابی‌شده در دسترس قرار می‌گیرند.

سهمیهٔ فضای پشتیبان

پشتیبان‌های دیسک و دامپ‌های پایگاه داده از یک سهمیهٔ مشترک فضای پشتیبان در هر حساب استفاده می‌کنند. اگر ساخت پشتیبان به‌خاطر پر شدن این سهمیه رد شد، پشتیبان‌های قدیمی را حذف کنید یا پلن خود را ارتقا دهید. مدت نگهداری پشتیبان‌ها بر اساس پلن است (۷ تا ۹۰ روز).

tar czf backup.tar.gz /data
توصیه

برای دیسک‌های بزرگ، از ابزارهای compression بهتری مثل xz یا zstd استفاده کنید:

tar -I zstd -cf backup.tar.zst /data

حذف پشتیبان

curl -X DELETE https://api.abrclick.ir/v1/disks/{diskId}/backups/{backupId} \
-H "Authorization: Bearer <token>"

مثال کامل: Backup و Restore

فرض کنید یک اپلیکیشن Node.js با دیسک دائمی روی /uploads دارید.

۱. ایجاد پشتیبان

curl -X POST https://api.abrclick.ir/v1/disks/disk-123/backups \
-H "Authorization: Bearer mytoken" \
-H "Content-Type: application/json" \
-d '{"description": "before update"}'

۲. دانلود پشتیبان

curl https://api.abrclick.ir/v1/disks/disk-123/backups/backup-456/download \
-H "Authorization: Bearer mytoken" | jq -r .data.url | xargs wget -O backup.tar.gz

۳. بازیابی (اگر نیاز باشد)

# درخواست URL آپلود
RESPONSE=$(curl -X POST https://api.abrclick.ir/v1/disks/disk-123/backups/restore/presign \
-H "Authorization: Bearer mytoken" \
-H "Content-Type: application/json" \
-d '{"sizeBytes": 524288000}')

UPLOAD_URL=$(echo $RESPONSE | jq -r .data.uploadUrl)
UPLOAD_ID=$(echo $RESPONSE | jq -r .data.uploadId)

# آپلود فایل
curl -X PUT "$UPLOAD_URL" --data-binary @backup.tar.gz

# اجرای restore
curl -X POST https://api.abrclick.ir/v1/disks/disk-123/backups/restore \
-H "Authorization: Bearer mytoken" \
-H "Content-Type: application/json" \
-d "{\"uploadId\": \"$UPLOAD_ID\"}"

رفع خطاهای رایج

ساخت پشتیبان رد می‌شود — سهمیهٔ فضا پر است

علت: سهمیهٔ مشترک فضای پشتیبان حساب (پشتیبان دیسک + دامپ پایگاه داده) پر شده است.

راه‌حل: پشتیبان‌های قدیمی را حذف کنید تا فضا آزاد شود، یا پلن خود را ارتقا دهید.

# حذف فایل‌های موقت
rm -rf /data/tmp/*

# استفاده از compression قوی‌تر
tar -I zstd -9 -cf backup.tar.zst /data

DISK_IN_USE — دیسک در حال استفاده است

علت: نمی‌توان در حین استفاده از دیسک restore کرد.

راه‌حل: اپ را detach یا stop کنید:

abrclick disk detach disk-123
# سپس restore کنید
# سپس دوباره attach کنید
abrclick disk attach disk-123 --app app-456

BACKUP_NOT_FOUND — پشتیبان یافت نشد

علت: ID پشتیبان اشتباه است یا پشتیبان حذف شده.

راه‌حل: لیست پشتیبان‌های موجود را بررسی کنید:

curl https://api.abrclick.ir/v1/disks/{diskId}/backups \
-H "Authorization: Bearer <token>"

PRESIGNED_URL_EXPIRED — URL منقضی شده

علت: URL آپلود پس از ۱ ساعت منقضی می‌شود.

راه‌حل: URL جدید بگیرید:

curl -X POST https://api.abrclick.ir/v1/disks/{diskId}/backups/restore/presign \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{"sizeBytes": 524288000}'

مطالب مرتبط