階層化されたフォルダをまるごとFTP転送するには?

Pythonモジュールをサーバーにインストールするために必要なフォルダをFTP転送しようとしたところ、フォルダごとアップロードできるようなコマンドはないようだ。

転送先にフォルダを作成→中身を「mput *」

だと複雑な階層をもったフォルダだと果てしなく面倒な作業。
まず思いついたのがシェルスクリプト

フォルダの有無を判定→転送先に同名のフォルダを作成→下の階層に移動→中身のファイルを転送

を実行することだが、どうもスマートではないし、検索しても見つからないので一般的なやり方でないかも?
次に思いついたのは

tar.gzでパッケージング・圧縮してFTP転送→SSHで転送先サーバー上で展開

これがいまんとこ一番楽そう。
うーむ、皆はどうやってフォルダごと転送してるのだろうか。
以下そのコマンドのメモ

tar.gzでパッケージング・圧縮・展開

$tar cvfz hoge_dir.tar.gz hoge_dir

//FTPで転送した後、SSHでログインして展開

$tar xvfz hoge_dir.tar.gz

参考

  • Linuxの圧縮/解凍コマンドまとめ | dTblog | デザインとプログラムの境界をさまようブログ」

http://www.deftrash.com/blog/archives/2008/05/linux_commands.html