diff --git a/src/bin/initdb/initdb.c b/src/bin/initdb/initdb.c
index 6a73e9688bc069d5e7688a6a235dc8e29f4665be..feeff9e864f4a94c25ad6e156a939afd67811c55 100644
--- a/src/bin/initdb/initdb.c
+++ b/src/bin/initdb/initdb.c
@@ -3564,10 +3564,19 @@ main(int argc, char *argv[])
 		exit(1);
 	}
 
-	/* If we only need to fsync, just to it and exit */
+	/* If we only need to fsync, just do it and exit */
 	if (sync_only)
 	{
 		setup_pgdata();
+
+		/* must check that directory is readable */
+		if (pg_check_dir(pg_data) <= 0)
+		{
+			fprintf(stderr, _("%s: could not access directory \"%s\": %s\n"),
+					progname, pg_data, strerror(errno));
+			exit_nicely();
+		}
+
 		fsync_pgdata();
 		return 0;
 	}