Why did 'gbak -r' overwrite my database?
That '-r' switch caused a lot of problems so far. The general advice is to never use -r, as R stands for 'Replace' not 'Restore':
gbak -b backup
gbak -r replace
gbak -c create
You should always use -c to create a new database from backup and then simply rename the database file. This will save you a lot of trouble as using temporary file ensures that nobody else is trying to access it until it is ready. When using -c switch, GBak will warn you if the database file already exists and it would abort the restore. Also, if you use -r and restore fails for some reason you won't have any functional database as the old one is deleted when restore starts.
This has been changed in Firebird 2, now -R means RECREATE database, and will not overwrite existing database file. If you desire the old behaviour of -R switch, you can use -REP or -R -O, where -O means OVERWRITE.