ssh 进入远程机器并对网络驱动器执行并行复制操作

ssh 进入远程机器并对网络驱动器执行并行复制操作

你好,我有一台安装了网络驱动器的远程机器。

我正在尝试创建一个脚本,要求我输入要复制的文件夹的名称,然后通过 ssh 进入远程机器并让其启动复制操作。

由于我有时间限制,因此需要并行/并发复制。

如果重要的话,以下是我现在在“perl”脚本中所拥有的内容......

print `ssh -t -x rocup@factory "cp -rf $folder1/ /NFS; cp -rf $folder2/ /NFS; cp -rf $folder3/ /NFS"';

我也试过

print `ssh -t -x rocup@factory "cp -rf $folder1/ /NFS & cp -rf $folder2/ /NFS & cp -rf $folder3/ /NFS &"';

print `ssh -t -x rocup@factory "nohup cp -rf $folder1/ /NFS;nohup cp -rf $folder2/ /NFS;nohup cp -rf $folder3/ /NFS"';

上述操作逐个复制,需要一个多小时才能完成,我希望通过并发复制来缩短时间

主机工厂没有设置私钥/公钥,所以我无法执行

ssh -f -t -x rocup@factory "cp -rf $folder1/ /NFS"; 因为我需要输入密码三次。

谢谢你的帮助

答案1

如果您可以设置私钥/公钥以从远程机器登录到本地机器,则可以使用两个脚本来完成此操作。

第一个脚本位于您的机器上,您将运行该脚本并将要复制的文件夹作为输入。它执行以下几项操作:

  1. 使用复制命令输出第二个脚本:

    cp -rf $文件夹1/ /NFS &
    cp -rf $文件夹2/ /NFS &
    cp -rf $文件夹3/ /NFS &

  2. chmod 生成的脚本 755

  3. 使用以下命令通过 ssh 进入远程机器:

    ssh rocup@factory “scp 你的机器:/path/to/generated/script ./ && ./script”

最后一条命令要求远程计算机上的用户拥有一个没有密码的私钥,以便将 scp 回创建生成脚本的位置。有办法绕过无密码密钥(转发代理),但这种快速而粗糙的方法至少可以证明并发复制是否节省时间。

相关内容