私は毎日ファイルを転送するために同様のことをしています。yakxxx が示唆するように、ファイルを圧縮してから転送します。私が行うことの例 (Windows マシン上):
import zipfile
from glob import glob as gg
files = gg('path*.txt')
# open zip file (create it, or open if already exists)
zFile = zipfile.ZipFile('FileName.zip','w')
# zip files on local machine
[zFile.write(r,r,zipfile.ZIP_DEFLATED) for r in files]
または、zipfile が既に存在し、新しいファイルを追加する場合。
zFile = zipfile.ZipFile('FileName.zip','a')
# List files already zipped.
done = zipfile.ZipFile('FileName.zip','r').namelist()
# zip file into zip file.
[zFile.write(r,r,zipfile.ZIP_DEFLATED) for r in files if r not in done]
この zip ファイルを paramiko 経由でリモート マシンにプッシュします。
---------------
編集
参考までに、zip ファイルに書き込むときは注意が必要です。圧縮したいファイルがあるディレクトリ内で実行していると仮定して、これを書きました。そうでない場合は、次を使用する必要があります。
import os
zFile.write(r,os.path.basename(r),zipfile.ZIP_DEFLATED)