跳转到主要内容
Snapshots 取代了 v3 的 backup / backups API。app.backupapp.backups 在 v4 中仍然导出,但它们会打印弃用警告并代理到 app.snapshots。请更新你的代码以使用新名称。
app.snapshots 暴露 SnapshotsModule
const app = await api.applications.fetch("abc123def456abc123def456");
app.snapshots; // SnapshotsModule

列出 snapshot

app.snapshots.list() 返回一个 Snapshot 实例数组。
const snapshots = await app.snapshots.list();

for (const snap of snapshots) {
    console.log(snap.url);          // signed download URL (valid for 30 days)
    console.log(snap.size);         // bytes
    console.log(snap.modifiedAt);   // Date
    console.log(snap.key);          // signed query string
}
每个 snapshot 都可以直接下载:
const buffer = await snapshots[0].download();

创建新的 snapshot

app.snapshots.create() 触发一次全新的 snapshot,并返回签名 URL 和 key。
const fresh = await app.snapshots.create();
console.log(fresh.url); // valid for 30 days
console.log(fresh.key);

一步完成下载

app.snapshots.download() 创建一个 snapshot 并将其作为 Buffer 下载。
import { writeFile } from "node:fs/promises";

const buffer = await app.snapshots.download();
await writeFile("./backup.zip", buffer);

从 snapshot 恢复

app.snapshots.restore({ snapshotId, versionId }) 将应用回滚到之前的某个 snapshot 版本。
await app.snapshots.restore({
    snapshotId: "00000000-0000-4000-8000-000000000000",
    versionId: "abc123def4567890",
});
FieldTypeDescription
snapshotIdstringsnapshot 标识符(UUID v4)
versionIdstringlist() 返回的版本标识符

列出账户范围内的所有 snapshot

api.user.snapshots(scope) 返回你在所有应用或数据库中拥有的每一个 snapshot。
const appSnapshots = await api.user.snapshots("applications");
const dbSnapshots  = await api.user.snapshots("databases");
api.user.snapshots() 需要有效的付费订阅。