* You can create a 10MB gzip file like this:
head -c 10M /dev/urandom | gzip -1 >10m.gz
This uses `urandom` to get a high-entropy stream of bytes: since this is incompressible, the gzipped version will be about the same size as the input.
* You can then catenate copies of your gzip file together:
cat $(perl -e "print '10m.gz ' x 30") >300m.gz
Thirty copies of the source file will be about 300MB, and 100 copies will be about a gigabyte.