[{"data":1,"prerenderedAt":358},["ShallowReactive",2],{"docs-admin\u002Fbackups":3,"navigation":215,"docs-surround-admin\u002Fbackups":353},{"id":4,"title":5,"body":6,"description":207,"extension":208,"meta":209,"navigation":210,"path":211,"seo":212,"stem":213,"__hash__":214},"docs\u002F2.admin\u002F14.backups.md","Backups & Restore",{"type":7,"value":8,"toc":199},"minimark",[9,13,36,39,44,51,70,77,88,92,106,109,127,131,138,141,164,171,174,181,187,191],[10,11,5],"h1",{"id":12},"backups-restore",[14,15,16,17,21,22,27,28,32,33,35],"p",{},"udServer can take and restore a full backup of its own database from the ",[18,19,20],"strong",{},"Backups"," page in the ",[23,24,26],"a",{"href":25},"admin-console","Admin console",", without going near ",[29,30,31],"code",{},"pg_dump"," or needing shell access to the host. It requires the ",[18,34,20],{}," global permission, which is separate from every other administrative permission precisely because a backup file is a copy of everything.",[14,37,38],{},"Only one backup or restore runs at a time.",[40,41,43],"h2",{"id":42},"what-a-backup-contains","What a Backup Contains",[14,45,46,47,50],{},"A backup is a snapshot of the ",[18,48,49],{},"entire"," database:",[52,53,54,58,61,64,67],"ul",{},[55,56,57],"li",{},"All users, including password hashes",[55,59,60],{},"Organisations, projects, scenes and their edit history",[55,62,63],{},"Sessions, licences and licence allocations",[55,65,66],{},"Software packages, including the embedded file data",[55,68,69],{},"Webhooks, OAuth provider secrets, per-project storage credentials and the server's own keys",[71,72,74],"callout",{"icon":73},"i-lucide-triangle-alert",[14,75,76],{},"A backup file is a complete set of credentials for this server and everything it connects to. Treat it as the most sensitive artefact your deployment produces: encrypt it at rest, restrict who can fetch it, and do not leave it in a shared download folder.",[14,78,79,82,83,87],{},[18,80,81],{},"Files in external project storage are not included."," Anything in S3, Azure Blob Storage or a local\u002Fnetwork file share belongs to the project's storage rather than the database, and must be backed up separately. What the backup holds is the ",[84,85,86],"em",{},"configuration"," pointing at that storage, not its contents.",[40,89,91],{"id":90},"creating-a-backup","Creating a Backup",[14,93,94,97,98,101,102,105],{},[18,95,96],{},"Create backup"," starts the job and reports progress as it runs — the table being read, then the compression pass. When it finishes you are told the compressed and uncompressed sizes, and ",[18,99,100],{},"Download backup"," fetches the ",[29,103,104],{},".udbackup"," file.",[14,107,108],{},"Two things to know:",[52,110,111,121],{},[55,112,113,116,117,120],{},[18,114,115],{},"The backup is held in memory"," and is released roughly ",[18,118,119],{},"15 minutes"," after it completes if it has not been downloaded. It is not written to the server's disk.",[55,122,123,126],{},[18,124,125],{},"It can only be downloaded once."," Downloading takes it. Save the file somewhere durable rather than treating the server as the place it lives.",[40,128,130],{"id":129},"restoring","Restoring",[14,132,133,134,137],{},"Restoring ",[18,135,136],{},"replaces every row in the database"," with the contents of the backup file. It is the most destructive action available in the admin console, and the confirmation dialog requires you to type the confirmation phrase rather than just clicking through.",[14,139,140],{},"What happens when you restore:",[142,143,144,151,158],"ol",{},[55,145,146,147,150],{},"The server enters ",[18,148,149],{},"maintenance mode",". Every API request except the backup endpoints is rejected for the duration, so nothing can write while the database is being replaced.",[55,152,153,154,157],{},"The data is restored, then ",[18,155,156],{},"migrated to the current database version"," if the backup came from an older build. Restoring an older backup into a newer server is supported and expected.",[55,159,160,163],{},[18,161,162],{},"Every session is invalidated, including yours."," You are logged out and have to sign in again.",[14,165,166,167,170],{},"A ",[18,168,169],{},"restore either completes or leaves the server exactly as it was"," — a failure rolls the whole thing back rather than leaving a half-replaced database, and the error is reported on the page.",[14,172,173],{},"A server restart is recommended after a successful restore.",[14,175,176,177,180],{},"Restore uploads through the web interface are limited to ",[18,178,179],{},"128 MB",". A larger backup has to be restored by another route.",[182,183,184],"blockquote",{},[14,185,186],{},"Do not close the page while a restore is running. It is the page polling for progress, and it is what prompts you to sign back in when the restore completes.",[40,188,190],{"id":189},"when-to-take-one","When to Take One",[14,192,193,194,198],{},"At minimum, before any upgrade. The database is migrated in place on first start of a new build, and a migration is not reversible — the backup is what makes the upgrade reversible. The ",[23,195,197],{"href":196},"\u002Freleases","release notes"," name the database version each release migrates to.",{"title":200,"searchDepth":201,"depth":201,"links":202},"",2,[203,204,205,206],{"id":42,"depth":201,"text":43},{"id":90,"depth":201,"text":91},{"id":129,"depth":201,"text":130},{"id":189,"depth":201,"text":190},"udServer can take and restore a full backup of its own database from the Backups page in the Admin console, without going near pg_dump or needing shell access to the host. It requires the Backups global permission, which is separate from every other administrative permission precisely because a backup file is a copy of everything.","md",{},true,"\u002Fadmin\u002Fbackups",{"title":5,"description":207},"2.admin\u002F14.backups","-hdlhglORtf9CuZs5seYeDJw1w-30J2Yqq-ZCnl60u0",[216,220,281,340],{"title":217,"path":218,"stem":219},"udServer Manuals","\u002F","0.index",{"title":221,"path":222,"stem":223,"children":224},"User Guide","\u002Fdocs\u002Fuser","1.user\u002F0.index",[225,229,233,237,241,245,249,253,257,261,265,269,273,277],{"title":226,"path":227,"stem":228},"Login","\u002Fdocs\u002Fuser\u002Flogin","1.user\u002F1.login",{"title":230,"path":231,"stem":232},"Account Settings","\u002Fdocs\u002Fuser\u002Faccount-settings","1.user\u002Faccount-settings",{"title":234,"path":235,"stem":236},"Files","\u002Fdocs\u002Fuser\u002Ffiles","1.user\u002Ffiles",{"title":238,"path":239,"stem":240},"Jobs","\u002Fdocs\u002Fuser\u002Fjobs","1.user\u002Fjobs",{"title":242,"path":243,"stem":244},"3rd Party Licenses","\u002Fdocs\u002Fuser\u002Flicenses","1.user\u002Flicenses",{"title":246,"path":247,"stem":248},"Licensing","\u002Fdocs\u002Fuser\u002Flicensing","1.user\u002Flicensing",{"title":250,"path":251,"stem":252},"Organisations","\u002Fdocs\u002Fuser\u002Forganisations","1.user\u002Forganisations",{"title":254,"path":255,"stem":256},"Permissions","\u002Fdocs\u002Fuser\u002Fpermissions","1.user\u002Fpermissions",{"title":258,"path":259,"stem":260},"Connecting an Azure Blob Container to a Project","\u002Fdocs\u002Fuser\u002Fproject-azure-setup","1.user\u002Fproject-azure-setup",{"title":262,"path":263,"stem":264},"Connecting an AWS S3 Bucket to a Project","\u002Fdocs\u002Fuser\u002Fproject-s3-setup","1.user\u002Fproject-s3-setup",{"title":266,"path":267,"stem":268},"Projects","\u002Fdocs\u002Fuser\u002Fprojects","1.user\u002Fprojects",{"title":270,"path":271,"stem":272},"Scenes","\u002Fdocs\u002Fuser\u002Fscenes","1.user\u002Fscenes",{"title":274,"path":275,"stem":276},"Software Downloads","\u002Fdocs\u002Fuser\u002Fsoftware","1.user\u002Fsoftware",{"title":278,"path":279,"stem":280},"Work Items","\u002Fdocs\u002Fuser\u002Fworkitems","1.user\u002Fworkitems",{"title":282,"path":283,"stem":284,"children":285},"IT Administrators Guide","\u002Fdocs\u002Fadmin","2.admin\u002F0.index",[286,290,294,298,302,306,308,312,316,320,324,328,332,336],{"title":287,"path":288,"stem":289},"System Requirements","\u002Fdocs\u002Fadmin\u002Fsystem-requirements","2.admin\u002F1.system-requirements",{"title":291,"path":292,"stem":293},"Publishing Software (Packages)","\u002Fdocs\u002Fadmin\u002Fsoftware-packages","2.admin\u002F10.software-packages",{"title":295,"path":296,"stem":297},"Legal Documents","\u002Fdocs\u002Fadmin\u002Flegal-documents","2.admin\u002F11.legal-documents",{"title":299,"path":300,"stem":301},"Licensing & Purchasing","\u002Fdocs\u002Fadmin\u002Flicensing","2.admin\u002F12.licensing",{"title":303,"path":304,"stem":305},"Egress","\u002Fdocs\u002Fadmin\u002Fegress","2.admin\u002F13.egress",{"title":5,"path":307,"stem":213},"\u002Fdocs\u002Fadmin\u002Fbackups",{"title":309,"path":310,"stem":311},"Generic Installation","\u002Fdocs\u002Fadmin\u002Fgettingstarted","2.admin\u002F2.gettingstarted",{"title":313,"path":314,"stem":315},"Setting up on an Amazon EC2 instance","\u002Fdocs\u002Fadmin\u002Famazon-ec2","2.admin\u002F3.amazon-ec2",{"title":317,"path":318,"stem":319},"Configuring OAuth \u002F OIDC Authentication","\u002Fdocs\u002Fadmin\u002Foauth","2.admin\u002F4.oauth",{"title":321,"path":322,"stem":323},"Admin Console","\u002Fdocs\u002Fadmin\u002Fadmin-console","2.admin\u002F5.admin-console",{"title":325,"path":326,"stem":327},"Server Configuration","\u002Fdocs\u002Fadmin\u002Fserver-configuration","2.admin\u002F6.server-configuration",{"title":329,"path":330,"stem":331},"Users & Organisations","\u002Fdocs\u002Fadmin\u002Fusers-and-organisations","2.admin\u002F7.users-and-organisations",{"title":333,"path":334,"stem":335},"Analytics & System Log","\u002Fdocs\u002Fadmin\u002Fanalytics-and-logs","2.admin\u002F8.analytics-and-logs",{"title":337,"path":338,"stem":339},"Webhooks","\u002Fdocs\u002Fadmin\u002Fwebhooks","2.admin\u002F9.webhooks",{"title":341,"path":342,"stem":343,"children":344},"Developers Guide","\u002Fdocs\u002Fdev","3.dev\u002F0.index",[345,349],{"title":346,"path":347,"stem":348},"udServer API","\u002Fdocs\u002Fdev\u002Fudserverapi","3.dev\u002FudServerAPI",{"title":350,"path":351,"stem":352},"WebSocket API","\u002Fdocs\u002Fdev\u002Fwebsocketapi","3.dev\u002Fwebsocketapi",[354,356],{"title":303,"path":355,"stem":305,"children":-1},"\u002Fadmin\u002Fegress",{"title":309,"path":357,"stem":311,"children":-1},"\u002Fadmin\u002Fgettingstarted",1787483255459]