Probably the fastest technique is taring the data up, running it through a pipe, and then untaring at the other end.
Something like this
$ tar -czf - root_dir | ssh -c blowfish remote_machine (cd parent_dir ; tar -xzf -)
The -z flag tells tar to compress, which should be very similar to a separate gzip step, which you include separately if you want.
If you need to copy or synchronize data a subsequent time, you can use rsync (-z gives compression). In particular, if the above command is interrupted, rsync will confirm your data, and send anything you missed.
It will be much cleaner if ssh is not asking you for passwords, but I think it will work even with passwords.