Path: blob/master/src/packages/sync-fs/lib/send-files.ts
1496 views
/*1Send files over a websocket to a remote server2*/34import getLogger from "@cocalc/backend/logger";5const logger = getLogger("sync-fs:send-files");67import { spawn } from "child_process";89export default function sendFiles({10ws,11HOME = process.env.HOME,12args,13}: {14ws;15HOME?;16args: string[];17}) {18if (args.length == 0) {19ws.emit("error", "no arguments given");20ws.close();21return;22}23let start = Date.now();24const tar = spawn("tar", args, {25cwd: HOME,26});27logger.debug("got connection", start);28let fileSize = 0;2930// TODO: here we would wait for a message listing files we should send31// or maybe that is just input to this function32logger.debug("Sending files...");3334tar.stdout.on("data", (data) => {35fileSize += data.length;36// logger.debug("sending ", data.length, "bytes");37ws.send(data);38});3940tar.stdout.on("end", () => {41let end = Date.now();42let timeTaken = (end - start) / 1000; // convert ms to s43let speed = fileSize / timeTaken / 1000000;44logger.debug(45`sendFiles: ${fileSize / 1000000}MB sent in ${46end - start47} ms, speed: ${speed} MB/s`,48);49ws.close();50});51}525354