Backup

Zip berisi konten Anda sebagai berkas data, tanpa kredensial dan field pribadi.

Baca 4 menit

Apa itu backup

Backup adalah satu berkas zip berisi konten satu brand. Backup dibuat untuk menyimpan salinan dan memindahkan data, sehingga Anda bisa menyimpan salinan di luar ATLAS dan mengunduhnya kapan pun perlu.

Semua yang ada di halaman ini untuk admin. Semua panggilan berada di bawah https://api.atlascms.id/v1/manage dan memerlukan sesi yang sudah masuk serta header X-Brand-Id.

Tidak ada tombol restore

ATLAS tidak memulihkan brand dari backup brand lewat API maupun dasbor. Arsip ini adalah salinan data yang bisa dibaca, bukan rollback sekali klik. Untuk membatalkan kesalahan di konten, gunakan revisi dan rollback pada entri. Untuk memulihkan seluruh instalasi, hubungi orang yang mengoperasikan server ATLAS Anda, yang memegang backup database tingkat platform.

Isi arsip

BerkasIsi
manifest.jsonschema_version, atlas_version, brand, created_at, target, counts per tabel, exclusions, dan media_count.
{table}.jsonlSatu berkas per tabel milik brand (entri, revisi, term, menu, pengaturan, formulir, dan seterusnya), satu objek JSON per baris. Baris yang dihapus lunak disertakan dengan deleted_at.
entry_term.jsonlHubungan antara entri dan term, hanya untuk entri brand ini.
media.jsonlDaftar berkas media Anda. Berkasnya sendiri tidak ada di dalam zip.

Berkas media tetap berada di penyimpanan media Anda. Arsip mendaftarkannya agar Anda tahu mana yang milik brand.

Yang tidak disertakan

Backup tidak pernah memuat secret atau data pribadi:

  • Apa pun yang disimpan terenkripsi atau ter-hash, seperti secret integrasi, hash token API, secret webhook, dan hash token undangan.
  • Username, host, dan password koneksi email.
  • Field pribadi lead: field yang dikirim, nilai UTM, id klik, catatan, halaman sumber, referrer, hash IP, user agent, error, dan penerima tugas.

manifest.json mendaftar setiap kolom yang dikecualikan per tabel, sehingga Anda bisa memeriksa persis apa yang tidak ada.

Memulai backup

POST/v1/manage/backups

Mengantrekan backup dan menjawab 202 beserta prosesnya. Anda bisa memulai hingga 10 per menit. Selama backup lain masih pending atau berjalan (dan berusia kurang dari 2 jam), jawabannya 409 dengan "code": "backup_in_progress".

terminalbash
curl -s -X POST "https://api.atlascms.id/v1/manage/backups" \
  -H "X-Brand-Id: $BRAND_ID" --cookie "$SESSION"
202 Acceptedjson
{ "data": { "id": "01m5300000000000000000000b", "kind": "backup", "status": "pending",
  "file_name": null, "file_size": null, "download": null, "created_at": "2026-10-21T14:42:20+00:00" } }

status berpindah dari pending ke running, lalu completed atau failed. Progres disiarkan di brand.{id}.tools. Proses yang gagal membawa error berisi alasan singkat.

GET /v1/manage/backups menampilkan daftar proses, 20 per halaman, terbaru lebih dulu. GET /v1/manage/backups/{toolRun} menampilkan satu proses. Id proses milik brand lain dijawab 404.

Mengunduh

Proses yang selesai membawa objek download berisi URL bertanda tangan dan expires_at-nya. Tautan berlaku 5 menit, dan setiap pembacaan proses menerbitkan tautan baru.

terminalbash
curl -s "https://api.atlascms.id/v1/manage/backups/$RUN_ID" \
  -H "X-Brand-Id: $BRAND_ID" --cookie "$SESSION" \
  | jq -r '.data.download.url' \
  | xargs curl -s -o backup.zip

Endpoint unduhannya adalah GET /v1/backups/{id}/download. Tautan tanpa tanda tangan atau yang kedaluwarsa dijawab 403, brand yang ditangguhkan dijawab 403, dan backup yang sudah tidak tersedia dijawab 410. Unduhan dibatasi 30 per menit dan setiap unduhan dicatat di log audit.

Hanya tautannya yang kedaluwarsa. Arsip tetap ada sampai retensi atau Anda menghapusnya dengan DELETE /v1/manage/backups/{toolRun} (204, yang juga menghapus berkasnya).

Pengaturan

GET /v1/manage/backups/settings dan PUT /v1/manage/backups/settings membaca dan mengubah jadwal, retensi, dan tujuan. Sebelum penyimpanan pertama Anda mendapat nilai bawaan: jadwal off, 02:00, simpan 5 terakhir, simpan 30 hari, target shared.

PengaturanKeterangan
scheduleoff, daily, atau weekly. Mingguan berjalan pada hari Senin.
run_atHH:MM (00:00 sampai 23:59) dalam zona waktu brand. Proses dimulai pada atau setelah jam ini.
keep_lastSimpan N backup selesai terbaru (1 sampai 100).
keep_daysHapus backup yang lebih tua dari N hari (1 sampai 3650).
targetshared, brand_storage, atau s3.
endpoint, region, bucket, prefix, path_styleUntuk s3. Endpoint harus alamat HTTPS publik di port 443. Prefix mengizinkan huruf, angka, ., _, -, dan /.
access_key_id, secret_access_keyUntuk s3. Hanya bisa ditulis.
PUT /v1/manage/backups/settingsjson
{
  "schedule": "daily",
  "run_at": "02:30",
  "keep_last": 7,
  "keep_days": 30,
  "target": "s3",
  "endpoint": "https://s3.example.com",
  "region": "auto",
  "bucket": "my-atlas-backups",
  "prefix": "atlas",
  "path_style": true,
  "access_key_id": "AKIA...",
  "secret_access_key": "..."
}

Responsnya mengulang pengaturan dengan penanda has_access_key dan has_secret. Kuncinya sendiri tidak pernah dikembalikan.

Ke mana berkas disimpan

TargetDisimpan di
sharedPenyimpanan media platform, di bawah tools/{brand_id}/backups/. Ini bawaan.
brand_storageKonfigurasi penyimpanan media milik brand. Proses gagal dengan backup_failed bila brand belum punya.
s3Bucket milik Anda sendiri, di {prefix}/tools/{brand_id}/backups/{run}.zip. Menyimpan salinan di bucket yang Anda kendalikan adalah pilihan paling aman.

Setiap proses mengingat ke mana ia ditulis. Jika Anda mengubah target atau bucket kemudian, backup lama tetap bisa diunduh dan dihapus dari tempatnya.

Uji sebelum diandalkan

POST /v1/manage/backups/settings/test (6 per menit) memeriksa tujuan tanpa menyimpan. Kirim field yang sama dengan pengaturan, atau kosongkan untuk menguji yang tersimpan. Jawabannya { "data": { "ok", "reason", "at" } }. Bila ok bernilai false, reason adalah salah satu dari credentials_missing, bucket_missing, storage_not_configured, endpoint_refused, auth_failed, bucket_not_found, atau unreachable.

Jadwal dan retensi

Penjadwal memeriksa setiap menit. Untuk tiap brand, ia memulai paling banyak satu backup per jendela:

  • daily berjalan sekali sehari setelah run_at, weekly sekali seminggu setelah run_at hari Senin.
  • Brand yang punya backup pending, berjalan, selesai, atau gagal di jendela saat ini dilewati.
  • Proses yang macet lebih dari 2 jam ditandai failed dengan alasan stale. Proses gagal dicoba lagi paling cepat satu jam kemudian, hingga 3 kali gagal per jendela.
  • Retensi berjalan setelah setiap backup berhasil dan sekali sehari. keep_days menghapus proses selesai dan gagal yang lebih tua dari batas, keep_last menyimpan proses selesai terbaru. Proses pending dan berjalan tidak pernah dihapus.

Ukuran dan waktu

Backup mengalirkan tiap tabel lewat berkas sementara dan mengunggah zip sebagai aliran, sehingga pemakaian memori tetap datar bahkan untuk brand besar. Proses masuk ke antrean panjang imports dengan batas waktu satu jam. Karena berkas media tidak ada di dalam zip, ukurannya mengikuti konten teks, revisi, dan pengaturan, bukan pustaka gambar Anda. Brand besar dengan revisi bertahun-tahun tetap bisa memerlukan beberapa menit, jadi tunggu sampai completed sebelum mengunduh.

Keamanan

  • Hanya admin yang bisa memulai, melihat daftar, mengunduh, mengubah pengaturan, atau menghapus. Editor dan publisher mendapat 403.
  • Tautan unduhan bertanda tangan dan berlaku 5 menit.
  • Kredensial S3 dienkripsi, hanya bisa ditulis, dan tidak pernah muncul di respons, log, atau baris audit. Baris audit (backup.started, backup.downloaded, backup.deleted, backup.settings.updated) memuat id dan nama pengaturan, tidak pernah nilainya.
  • Panggilan keluar ke bucket Anda memakai penjaga yang sama dengan penyimpanan media: HTTPS, port 443, hanya alamat publik.
  • Perlakukan zip sebagai data sensitif. Isinya seluruh konten Anda dan alamat email undangan yang masih tertunda.

Apakah halaman ini membantu?

Usulkan perubahan