Administration backs the server up, downloads, uploads and restores it

A Backups section (for administrators, PrivaPub's /clientapi/admin/backups): the backups kept with their kind, size,
media and the logins deleted since, what runs, the restore waiting and the last restore's report. Back up now; download
for the password through a link good for ten minutes, which the browser saves to disk; upload a downloaded backup in
pieces straight from the picked file (js/transfer.js PUTs file.slice at the offset PrivaPub has, never through .NET's
memory, and carries on after a refused or lost piece); delete after asking; restore for the password and the host typed
out, saying what it keeps and what it loses, then showing PrivaPub restarting until the ended session sends the page to
sign in.

e2e: a backup made, downloaded and uploaded again; and, only with --filter "Category=Restore", a real restore of the
pasture, which signs the town in again.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LsXgEaXee4GCU1hwYgPJXw
This commit is contained in:
thepraandClaude Opus 5.5 committed 2026-10-07 12:45:30 +02:00
1 parent 70cb389537
commit dc2190e271
11 files changed
+1058 -3

No files matched your search

+141
View File
@@ -1940,4 +1940,145 @@
<data name="&quot;{0}&quot; is not a kind of file this server takes." xml:space="preserve">
<value>"{0}" is not a kind of file this server takes.</value>
</data>
<data name="A backup is running." xml:space="preserve">
<value>A backup is running.</value>
</data>
<data name="A restore is running." xml:space="preserve">
<value>A restore is running.</value>
</data>
<data name="Back up now" xml:space="preserve">
<value>Back up now</value>
</data>
<data name="Backups" xml:space="preserve">
<value>Backups</value>
</data>
<data name="Before a deploy" xml:space="preserve">
<value>Before a deploy</value>
</data>
<data name="Before a restore" xml:space="preserve">
<value>Before a restore</value>
</data>
<data name="Delete this backup?" xml:space="preserve">
<value>Delete this backup?</value>
</data>
<data name="Deleted again: {0} logins, {1} personas, {2} groups, {3} posts. Kept from since: {4} blocks, mutes, reports and other protective acts." xml:space="preserve">
<value>Deleted again: {0} logins, {1} personas, {2} groups, {3} posts. Kept from since: {4} blocks, mutes, reports and other protective acts.</value>
</data>
<data name="Download" xml:space="preserve">
<value>Download</value>
</data>
<data name="Download a backup" xml:space="preserve">
<value>Download a backup</value>
</data>
<data name="Download {0}" xml:space="preserve">
<value>Download {0}</value>
</data>
<data name="Get the link" xml:space="preserve">
<value>Get the link</value>
</data>
<data name="It holds every persona&#x27;s private keys and private posts: keep it where only you can read it. Your password, to get a link:" xml:space="preserve">
<value>It holds every persona's private keys and private posts: keep it where only you can read it. Your password, to get a link:</value>
</data>
<data name="Its files are deleted; the server itself is untouched." xml:space="preserve">
<value>Its files are deleted; the server itself is untouched.</value>
</data>
<data name="Made after the backup, now deleted with their names kept: {0}." xml:space="preserve">
<value>Made after the backup, now deleted with their names kept: {0}.</value>
</data>
<data name="Made by hand" xml:space="preserve">
<value>Made by hand</value>
</data>
<data name="Nightly" xml:space="preserve">
<value>Nightly</value>
</data>
<data name="No backup yet." xml:space="preserve">
<value>No backup yet.</value>
</data>
<data name="PrivaPub is restarting to restore {0}. Everyone, you included, signs in again once it is back." xml:space="preserve">
<value>PrivaPub is restarting to restore {0}. Everyone, you included, signs in again once it is back.</value>
</data>
<data name="PrivaPub stops, restores this backup and starts again, in a few minutes. Everyone signs in again." xml:space="preserve">
<value>PrivaPub stops, restores this backup and starts again, in a few minutes. Everyone signs in again.</value>
</data>
<data name="Restore" xml:space="preserve">
<value>Restore</value>
</data>
<data name="Restore the backup of {0}?" xml:space="preserve">
<value>Restore the backup of {0}?</value>
</data>
<data name="Restored {0}" xml:space="preserve">
<value>Restored {0}</value>
</data>
<data name="The backup has started." xml:space="preserve">
<value>The backup has started.</value>
</data>
<data name="The backup {0} was uploaded." xml:space="preserve">
<value>The backup {0} was uploaded.</value>
</data>
<data name="The last restore, of {0}, was abandoned; nothing changed." xml:space="preserve">
<value>The last restore, of {0}, was abandoned; nothing changed.</value>
</data>
<data name="The link works for ten minutes, for this backup only." xml:space="preserve">
<value>The link works for ten minutes, for this backup only.</value>
</data>
<data name="The restore of {0}, asked for by {1}, is {2}." xml:space="preserve">
<value>The restore of {0}, asked for by {1}, is {2}.</value>
</data>
<data name="The upload failed: {0}" xml:space="preserve">
<value>The upload failed: {0}</value>
</data>
<data name="Type {0} to confirm" xml:space="preserve">
<value>Type {0} to confirm</value>
</data>
<data name="Upload a backup downloaded from here (a .tar file):" xml:space="preserve">
<value>Upload a backup downloaded from here (a .tar file):</value>
</data>
<data name="Uploaded" xml:space="preserve">
<value>Uploaded</value>
</data>
<data name="What was made since is lost: posts, edits, follows asked for, settings. What protects is not: deletions, blocks, mutes, server blocks, reports, filters and reserved names made since stay, and followers stay as they are now. Logins, personas and groups made since are deleted, keeping their names." xml:space="preserve">
<value>What was made since is lost: posts, edits, follows asked for, settings. What protects is not: deletions, blocks, mutes, server blocks, reports, filters and reserved names made since stay, and followers stay as they are now. Logins, personas and groups made since are deleted, keeping their names.</value>
</data>
<data name="asked for by {0}" xml:space="preserve">
<value>asked for by {0}</value>
</data>
<data name="not read at one instant" xml:space="preserve">
<value>not read at one instant</value>
</data>
<data name="{0} documents in {1} collections" xml:space="preserve">
<value>{0} documents in {1} collections</value>
</data>
<data name="{0} documents in {1} collections; {2} media files brought back, {3} missing." xml:space="preserve">
<value>{0} documents in {1} collections; {2} media files brought back, {3} missing.</value>
</data>
<data name="{0} free on the server&#x27;s disk" xml:space="preserve">
<value>{0} free on the server's disk</value>
</data>
<data name="{0} logins were deleted since; a restore deletes them again." xml:space="preserve">
<value>{0} logins were deleted since; a restore deletes them again.</value>
</data>
<data name="{0} media files ({1})" xml:space="preserve">
<value>{0} media files ({1})</value>
</data>
<data name="{0} media files listed, kept by the nightly backups" xml:space="preserve">
<value>{0} media files listed, kept by the nightly backups</value>
</data>
<data name="{0} missing" xml:space="preserve">
<value>{0} missing</value>
</data>
<data name="{0} of {1}" xml:space="preserve">
<value>{0} of {1}</value>
</data>
<data name="{0} posts made since answer as deleted; {1} media went to the trash; {2} sessions ended. The server as it was before is the backup {3}." xml:space="preserve">
<value>{0} posts made since answer as deleted; {1} media went to the trash; {2} sessions ended. The server as it was before is the backup {3}.</value>
</data>
<data name="pending" xml:space="preserve">
<value>pending</value>
</data>
<data name="running" xml:space="preserve">
<value>running</value>
</data>
<data name="unreadable" xml:space="preserve">
<value>unreadable</value>
</data>
</root>