diff --git a/doc/src/sgml/ref/pg_basebackup.sgml b/doc/src/sgml/ref/pg_basebackup.sgml
index 32fa9f858c..47dce43b19 100644
--- a/doc/src/sgml/ref/pg_basebackup.sgml
+++ b/doc/src/sgml/ref/pg_basebackup.sgml
@@ -168,13 +168,27 @@ PostgreSQL documentation
+
+
+
+
+
+ Enables gzip compression of tar file output, with the default
+ compression level. Compression is only available when using
+ the tar format.
+
+
+
+
- Enables gzip compression of tar file output. Compression is only
- available when using the tar format.
+ Enables gzip compression of tar file output, and specifies the
+ compression level (1 through 9, 9 being best
+ compression). Compression is only available when using the tar
+ format.
@@ -393,11 +407,11 @@ PostgreSQL documentation
- To create a backup of the local server with one maximum compressed
+ To create a backup of the local server with one compressed
tar file for each tablespace, and store it in the directory
backup, showing a progress report while running:
-$pg_basebackup -D backup -Ft -Z9 -P
+$pg_basebackup -D backup -Ft -z -P
diff --git a/src/bin/pg_basebackup/pg_basebackup.c b/src/bin/pg_basebackup/pg_basebackup.c
index 2af7b50586..036d3ae762 100644
--- a/src/bin/pg_basebackup/pg_basebackup.c
+++ b/src/bin/pg_basebackup/pg_basebackup.c
@@ -126,7 +126,8 @@ usage(void)
printf(_(" -D, --pgdata=DIRECTORY receive base backup into directory\n"));
printf(_(" -F, --format=p|t output format (plain, tar)\n"));
printf(_(" -x, --xlog include required WAL files in backup\n"));
- printf(_(" -Z, --compress=0-9 compress tar output\n"));
+ printf(_(" -z, --gzip compress tar output\n"));
+ printf(_(" -Z, --compress=0-9 compress tar output with given compression level\n"));
printf(_("\nGeneral options:\n"));
printf(_(" -c, --checkpoint=fast|spread\n"
" set fast or spread checkpointing\n"));
@@ -941,6 +942,7 @@ main(int argc, char **argv)
{"format", required_argument, NULL, 'F'},
{"checkpoint", required_argument, NULL, 'c'},
{"xlog", no_argument, NULL, 'x'},
+ {"gzip", no_argument, NULL, 'z'},
{"compress", required_argument, NULL, 'Z'},
{"label", required_argument, NULL, 'l'},
{"host", required_argument, NULL, 'h'},
@@ -1000,6 +1002,13 @@ main(int argc, char **argv)
case 'l':
label = xstrdup(optarg);
break;
+ case 'z':
+#ifdef HAVE_LIBZ
+ compresslevel = Z_DEFAULT_COMPRESSION;
+#else
+ compresslevel = 1; /* will be rejected below */
+#endif
+ break;
case 'Z':
compresslevel = atoi(optarg);
if (compresslevel <= 0 || compresslevel > 9)