On 03/08/22 17:12, Nathan Bossart wrote: > I spent some time trying to come up with a workable script to replace the > existing one. I think the main problem is that you need to write out both > the backup label file and the tablespace map file, but I didn't find an > easy way to write the different output columns of pg_backup_stop() to > separate files via psql.
Something like this might work: SELECT * FROM pg_backup_stop(true) \gset \out /tmp/backup_label \qecho :labelfile \out /tmp/tablespace_map \qecho :spcmapfile \out \! ... tar command adding /tmp/{backup_label,tablespace_map} to the tarball I notice the \qecho adds a final newline (and so if :spcmapfile is empty, a file containing a single newline is made). In a quick test with a bogus restore_command, I did not see any error messages specific to the format of the backup_label or tablespace_map files, so maybe the final newline isn't a problem. Assuming the newline isn't a problem, that might be simple enough to use in an example, and maybe it's not a bad thing that it highlights a few psql capabilities the reader might not have stumbled on before. Or, maybe it is just too confusing to bother. While agreeing that pg_basebackup is the production-ready thing that does it all for you (with tests for likely errors and so on), I think there is also some value in a dead-simple example that concretely shows you what "it" is, what the basic steps are that happen beneath pg_basebackup's chrome. If the added newline is a problem, I haven't thought of a way to exclude it that doesn't take the example out of the realm of dead-simple. Regards, -Chap