你好,我有一台安装了网络驱动器的远程机器。
我正在尝试创建一个脚本,要求我输入要复制的文件夹的名称,然后通过 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
如果您可以设置私钥/公钥以从远程机器登录到本地机器,则可以使用两个脚本来完成此操作。
第一个脚本位于您的机器上,您将运行该脚本并将要复制的文件夹作为输入。它执行以下几项操作:
使用复制命令输出第二个脚本:
cp -rf $文件夹1/ /NFS &
cp -rf $文件夹2/ /NFS &
cp -rf $文件夹3/ /NFS &chmod 生成的脚本 755
使用以下命令通过 ssh 进入远程机器:
ssh rocup@factory “scp 你的机器:/path/to/generated/script ./ && ./script”
最后一条命令要求远程计算机上的用户拥有一个没有密码的私钥,以便将 scp 回创建生成脚本的位置。有办法绕过无密码密钥(转发代理),但这种快速而粗糙的方法至少可以证明并发复制是否节省时间。