Recovering a partial PostgreSQL archive I have $PGDATA/base but nothing else.  It was taken from an installation after the postgreSQL service was shutdown, so is clean.  Is there any way to recreate the other elements in $PGDATA that allow it to be used again - pg_tblspc/, global/ ?

FWIW I am running 8.1.23.

Thanks
You've left out so much that your chances of recovering useful data are negligible.


pg_clog contains the commit/rollback logs. Without these, the system doesn't know which parts of the database files are valid and which are not. (gross oversimplification, but hey).
pg_xlog, the write-ahead logs. Without these, the database can't handle incomplete writes, so it'll see the database files in an incomplete state that might be damaged. Indexes may be corrupt, heap pages might be partially written, etc.
global/pg_control, the file that contains the system identifier, transaction wrap-around value, transaction log checkpoint position, and a whole lot more.


... and more.

It is vital to follow the instructions in the documentation on how to back up a database. Failure to follow the instructions will result in a useless, unrecoverable backup. Testing backups is also vital.

With in-depth analysis and a hacked version of the postgres server binary that was modified for data recovery I expect it might be possible to recover a corrupted version of your data, with duplicate entries in primary keys, broken foreign keys, multiple copies of data that was updated, reappearing deleted rows, etc. This would require some in-depth knowledge of the PostgreSQL server and take some significant time - so you'd be looking at a non-trivial cost and you'd only get back a mangled copy of your data.