単一ファイルのみの場合
ローカル側のファイルlocal.txt
をcatで読み込み、それをsshにパイプして、サーバー側でファイルupload.txt
にリダイレクトすることでアップロードができます。
※Windowsの場合、git-bash(gitをインストールするとついてくる)が必要です
cat local.txt | ssh -i *****.pem user@server "cat > ~/upload.txt"
複数ファイルをアップロードする場合
複数ファイルをアップロードしたい場合は、cat
の代わりにtar
を使いアーカイブしてから転送します
- ローカル側でtarを使ってファイルをまとめる
- サーバーへアップロード(パイプで転送)する
- サーバー側で解凍する
# ローカルの転送ディレクトリ、リモートの出力先ディレクトリを指定する
LOCAL_DIR=***** # ./test_upload
UPLOAD_DIR=***** # ./
tar -zcf - $LOCAL_DIR | ssh -i *****.pem user@server "tar zxf - -C $UPLOAD_DIR"
- tar の
-
は「標準入力/出力」を入出力先として利用するためのオプション