import type { Metadata } from "next" import { getTranslations, getMessages, setRequestLocale } from "next-intl/server" import Image from "next/image" import { Link } from "@/i18n/navigation" import { DocHeader } from "@/components/ui/doc-header" import { Callout } from "@/components/ui/callout" export async function generateMetadata({ params, }: { params: Promise<{ locale: string }> }): Promise { const { locale } = await params const t = await getTranslations({ locale, namespace: "docs.backupRestore.creatingBackups.meta" }) return { title: t("title"), description: t("description"), keywords: [ "proxmox interactive backup", "proxmenux backup menu", "backup profile default custom", "hb_prepare_staging", "proxmenux backup wizard", ], alternates: { canonical: "https://proxmenux.com/docs/backup-restore/creating-backups" }, openGraph: { title: t("ogTitle"), description: t("ogDescription"), type: "article", url: "https://proxmenux.com/docs/backup-restore/creating-backups", }, twitter: { card: "summary_large_image", title: t("twitterTitle"), description: t("twitterDescription"), }, } } type EntryRow = { entry: string; path: string; detail: string } type MatrixRow = { combo: string; destination: string; profile: string; action: string } type StepRow = { step: string; name: string; detail: string } type WritingRow = { topic: string; detail: string } type WhereNextItem = { label: string; href: string; tail: string } export default async function CreatingBackupsPage({ params, }: { params: Promise<{ locale: string }> }) { const { locale } = await params setRequestLocale(locale) const t = await getTranslations({ locale, namespace: "docs.backupRestore.creatingBackups" }) const messages = (await getMessages({ locale })) as unknown as { docs: { backupRestore: { creatingBackups: { entryPoints: { rows: EntryRow[] } matrix: { rows: MatrixRow[] } commonPipeline: { steps: StepRow[] } included: { globalItems: string[] rootItems: string[] proxmenuxItems: string[] notInProfileItems: string[] } writing: { rows: WritingRow[] } whereNext: { items: WhereNextItem[] } } } } } const cb = messages.docs.backupRestore.creatingBackups const entryRows = cb.entryPoints.rows const matrixRows = cb.matrix.rows const pipelineSteps = cb.commonPipeline.steps const globalItems = cb.included.globalItems const rootItems = cb.included.rootItems const proxmenuxItems = cb.included.proxmenuxItems const notInProfileItems = cb.included.notInProfileItems const writingRows = cb.writing.rows const whereNextItems = cb.whereNext.items const code = (chunks: React.ReactNode) => {chunks} const strong = (chunks: React.ReactNode) => {chunks} const em = (chunks: React.ReactNode) => {chunks} return (
{t.rich("intro.body", { code, em, strong })}

{t("entryPoints.heading")}

{entryRows.map((row, idx) => ( ))}
Entry point Path Detail
{row.entry} {row.path} {t.rich(`entryPoints.rows.${idx}.detail`, { code })}

{t("modes.heading")}

{t.rich("modes.body", { code, strong })}

{t("modes.seeAlso")}

{t("modes.monitorAlt")}
{t("modes.monitorCaption")}

{t("matrix.heading")}

{t("matrix.intro")}

{matrixRows.map((row, idx) => ( ))}
# Destination Profile What it does
{row.combo} {row.destination} {row.profile} {t.rich(`matrix.rows.${idx}.action`, { code })}

{t("profiles.heading")}

{t("profiles.defaultTitle")}

{t.rich("profiles.defaultBody", { code, em })}

{t("profiles.customTitle")}

{t.rich("profiles.customBody", { code, em })}

{t("profiles.customPickerAlt")}
{t("profiles.customPickerCaption")}
{t("profiles.manageCustomAlt")}
{t("profiles.manageCustomCaption")}

{t("commonPipeline.heading")}

{t.rich("commonPipeline.intro", { code })}

{pipelineSteps.map((row, idx) => ( ))}
# Step Detail
{row.step} {row.name} {t.rich(`commonPipeline.steps.${idx}.detail`, { code, em })}

{t("included.heading")}

{t.rich("included.intro", { code })}

{t.rich("included.globalTitle", { code })}

    {globalItems.map((_, idx) => (
  • {t.rich(`included.globalItems.${idx}`, { code })}
  • ))}

{t.rich("included.rootTitle", { code })}

{t.rich("included.rootBody", { code })}

    {rootItems.map((_, idx) => (
  • {t.rich(`included.rootItems.${idx}`, { code })}
  • ))}

{t.rich("included.proxmenuxTitle", { code })}

{t.rich("included.proxmenuxBody", { code })}

    {proxmenuxItems.map((_, idx) => (
  • {t.rich(`included.proxmenuxItems.${idx}`, { code })}
  • ))}

{t("included.notInProfileTitle")}

{t.rich("included.notInProfileBody", { code })}

    {notInProfileItems.map((_, idx) => (
  • {t.rich(`included.notInProfileItems.${idx}`, { code, strong })}
  • ))}

{t("included.customPathsTitle")}

{t.rich("included.customPathsBody", { code })}

{t("archiveStructure.heading")}

{t.rich("archiveStructure.intro", { code })}

{t("archiveStructure.tree")}
      

{t("confirmation.heading")}

{t.rich("confirmation.body", { code })}

{t("writing.heading")}

{t("writing.intro")}

{writingRows.map((row, idx) => ( ))}
Topic Detail
{row.topic} {t.rich(`writing.rows.${idx}.detail`, { code })}

{t("finishedScreens.heading")}

{t("finishedScreens.intro")}

{t("finishedScreens.scriptsAlt")}
{t("finishedScreens.scriptsCaption")}
{t("finishedScreens.monitorAlt")}
{t("finishedScreens.monitorCaption")}

{t("whereNext.heading")}

    {whereNextItems.map((item) => (
  • {item.label} {item.tail}
  • ))}
) }