概要
ローカルマシンからリモートマシンにデータ転送する時、進捗を取得する方法で少し手こずったのでメモ。
scpを使った方法ではうまくいかず、rsyncを使っています。
サンプルコード
const childprocess = require("child_process");
const sourcePath = "転送するデータのパス";
const destPath = "転送先ユーザー名@転送先ホスト名(IPアドレス):保存先パス";
const spawn = childprocess.spawn("rsync", [
"-avzP",
"-e", // ホスト名だけで接続できる場合は不要
"ssh -i ローカルマシンの秘密鍵ファイルパス(~/.ssh/xxx.pemなど)", // ホスト名だけで接続できる場合は不要
sourcePath,
destPath,
]);
spawn.stdout.on("data", (data) => {
var per = data.toString().match(/\d{1,3}%/g);
console.log(per);
});
spawn.stderr.on("data", (data) => {
console.log(data.toString());
});
出力
最初にいくつかnullでますが、とりあえず取得できました。
null
null
null
[ '0%' ]
[ '18%' ]
[ '36%' ]
[ '41%' ]
[ '43%' ]
[ '45%' ]
[ '47%' ]