Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

I have all PostgreSQL databases backed up during incremental backups using WHM, which creates a $dbName.tar file.

Data is stored in these .tar files, but I do not know how to restore it back into the individual databases via SSH. In particular the file location.

I have been using:

pg_restore -d client03 /backup/cpbackup/daily/client03/psql/client03.tar

which generates the error 'could not open input file: Permission denied'

Any assistance appreciated.

share|improve this question
    
Does the user you're running this command with has access to that file ? –  mat Feb 21 '10 at 8:15
    
Hi Mat, you would think so, (running as root) but have just solved the issue after many many combinations, and moving the raw .tar file to tmp.... pg_restore -c -i -U postgres -d client03 -v "/tmp/client03.tar" -W The -W at the end was the main trick which forced the password input as required which enabled everything to be put back together. –  Stephen Feb 21 '10 at 9:15
add comment

4 Answers

Found the correct string of code, in case someone else finds this thread.

pg_restore -c -i -U postgres -d client03 -v "/tmp/client03.tar" -W

The break down was from http://www.postgresql.org/docs/7.3/static/app-pgrestore.html and a bit of trial and error.

Essentially...

-c to clean the database -i to ignore any database version checks -U to force a user -d to select the database -v verbose mode, don't know why "$$" the location of the files to import in tmp to get around permission issues -W to force asking for the password to the user (postgres)

Hope the above assists someone else.

share|improve this answer
add comment

I'm not certain it can import a .tar file. I would do a

tar -zxvf client03.tar 

to extract whatever was inside the file, and try pg_restore again. I know pg_restore works, as we have the same restore method from bare metal restores.

share|improve this answer
1  
Hi Stephen, yes apparently it can, it just took me a while to get the correct code, and to drop the file into a folder with permission to be accessed :) –  Stephen Feb 21 '10 at 10:05
    
The "-z" would return an error, as it is just a tar, not compressed with gzip. –  Alex Feb 21 '10 at 15:28
    
Alex is 100% correct. –  Stephen Thompson Feb 21 '10 at 21:01
add comment

When using PgAdmin III to do the restore for me, it worked flawlessly by using the following command which it constructed itself:

pg_restore --host localhost --port 5432 --username "my_user_name" --dbname "my_db_name" --role "my_user_name" --no-password  --verbose "/Users/me/Desktop/backup_file.tar"

Note to avoid warnings it's a good idea to have the role of the owner of objects in the backup file already existing in the target server. Also you should already have the target DB created and owned by that role.

share|improve this answer
add comment

Below was generated for me from pgAdmin iii by clicking on the database and right clicking and selecting restore. I navigated to the .tar file I had and it did it on its own.

/usr/bin/pg_restore --host localhost --port 5434 --username "postgres" \
--dbname "dvdrental" --no-password  --schema public --verbose \
"/home/npena/Desktop/dvd/dvdrental.tar"
share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.