Attempting to restore immich from a database backup
Hi devs,
I recently was migrating which volume my docker apps resided on, on my nas, and somehow in the process of the mgiration seemed to break soemthing with the immich app. It looked to be running healthily, but I couldn't get to the main page. I thought I would redeploy the docker container, but upon starting up the app realised that the library did not port over like other docker apps when the volume doesn't change.
I attempted to follow the instructions here https://immich.app/docs/administration/backup-and-restore/#manual-backup-and-restore and got as far as the gunzip line (With some minor modifications to the prompts). I'll be the first to admit that I'm not the most tech savy.
When I try to paste the commands as is (with the exception of modifying the file path of the sql.gz file), I get a variety of errors "-bash: syntax error near unexpected token
When I try to paste the commands as is (with the exception of modifying the file path of the sql.gz file), I get a variety of errors "-bash: syntax error near unexpected token
('
-bash: syntax error near unexpected token
|'"
I imagine this probably has to do with how I'm pasting the commands in. Should these lines be pasted all together "gunzip < "/volume3/docker/immich-app/library/backups/dump.sql.gz" \
| sed "s/SELECT pg_catalog.set_config('search_path', '', false);/SELECT pg_catalog.set_config('search_path', 'public, pg_catalog', true);/g" \
| docker exec -i immich_postgres psql --username=postgres"
I'm accessing a nas through the terminal app on a mac computer (if that's relevant)
Thanks16 Replies
:wave: Hey @NinjaEd,
Thanks for reaching out to us. Please carefully read this message and follow the recommended actions. This will help us be more effective in our support effort and leave more time for building Immich :immich:.
References
- Container Logs:
docker compose logs
docs
- Container Status: docker ps -a
docs
- Reverse Proxy: https://immich.app/docs/administration/reverse-proxy
- Code Formatting https://support.discord.com/hc/en-us/articles/210298617-Markdown-Text-101-Chat-Formatting-Bold-Italic-Underline#h_01GY0DAKGXDEHE263BCAYEGFJAChecklist
I have...
1. :blue_square: verified I'm on the latest release(note that mobile app releases may take some time).
2. :blue_square: read applicable release notes.
3. :blue_square: reviewed the FAQs for known issues.
4. :blue_square: reviewed Github for known issues.
5. :blue_square: tried accessing Immich via local ip (without a custom reverse proxy).
6. :blue_square: uploaded the relevant information (see below).
7. :blue_square: tried an incognito window, disabled extensions, cleared mobile app cache, logged out and back in, different browsers, etc. as applicable
(an item can be marked as "complete" by reacting with the appropriate number)
Information
In order to be able to effectively help you, we need you to provide clear information to show what the problem is. The exact details needed vary per case, but here is a list of things to consider:
- Your docker-compose.yml and .env files.
- Logs from all the containers and their status (see above).
- All the troubleshooting steps you've tried so far.
- Any recent changes you've made to Immich or your system.
- Details about your system (both software/OS and hardware).
- Details about your storage (filesystems, type of disks, output of commands like
fdisk -l
and df -h
).
- The version of the Immich server, mobile app, and other relevant pieces.
- Any other information that you think might be relevant.
Please paste files and logs with proper code formatting, and especially avoid blurry screenshots.
Without the right information we can't work out what the problem is. Help us help you ;)
If this ticket can be closed you can use the /close
command, and re-open it later if needed.GitHub
immich-app immich · Discussions
Explore the GitHub Discussions forum for immich-app immich. Discuss code, ask questions & collaborate with the developer community.
FAQ | Immich
User
GitHub
Issues · immich-app/immich
High performance self-hosted photo and video management solution. - Issues · immich-app/immich
Yes that should all be pasted together
Maybe share a screenshot of exactly how you're pasting it?
You can put it all on one line too:
gunzip < "/volume3/docker/immich-app/library/backups/dump.sql.gz" | sed "s/SELECT pg_catalog.set_config('search_path', '', false);/SELECT pg_catalog.set_config('search_path', 'public, pg_catalog', true);/g" | docker exec -i immich_postgres psql --username=postgres
Does this help?

Thanks Mraedis, I've solved one problem but seem to have created a different one now
Text below for reference
"kelvin@KelsNAS:/volume3/docker/immich-app$ sudo gunzip < "/volume3/docker/immich-app/library/backups/immich-db-backup-1733043600051.sql.gz" | sed "s/SELECT pg_catalog.set_config('search_path', '', false);/SELECT pg_catalog.set_config('search_path', 'public, pg_catalog', true);/g" | docker exec -i immich_postgres psql --username=postgres
permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.45/containers/immich_postgres/json": dial unix /var/run/docker.sock: connect: permission denied"
If I split it up and don't include the final docker exec line "gunzip < "/volume3/docker/immich-app/library/backups/immich-db-backup-1733043600051.sql.gz" | sed "s/SELECT pg_catalog.set_config('search_path', '', false);/SELECT pg_catalog.set_config('search_path', 'public, pg_catalog', true);/g" It seems to go through a giant process and re-creates the postgres database

It seems to hang on this final step

Not sure if this would be helpful, but this is the log that I see in the docker container

Please include the env and compose files
If you get permission denied like this you're likely running your containers as root and need sudo or just
sudo su -
Oh yeah this
Using sudo seemed to allow me to run this, but then it just kind of seemed to hang (I think), and didnt bring me back to the prompt where I expect to be able to run/input my next comand
where did you put the sudo 🙃
gunzip < "/volume3/docker/immich-app/library/backups/dump.sql.gz" | sed "s/SELECT pg_catalog.set_config('search_path', '', false);/SELECT pg_catalog.set_config('search_path', 'public, pg_catalog', true);/g" | sudo docker exec -i immich_postgres psql --username=postgres
I think this is the only place that needed itThird line up from where the cursor bar is...... just below the line where it says denied
I separated out the docker exec part
Let me try running it again all as one input
the | are pipes
if you are putting them on seperate lines then nothing will happen
pipes are "take the output of this one command and use it as input for the other"
ahhhh
let me try and not dig my own hole here
@Mraedis Thank you SO much for all of your help. It was greatly appreciated that you took the time to help, and also explain a bit about the syntax of the commands and why stuff is the way it is.
We're back in. I think what might have happened is that when I migrated the docker volumes over, the env file didn't copy over which is why it could never connect to the database.