让搬砖变得轻松——在服务器和本地之间传输数据用的脚本

最近迷上了各种各样的scripts,想起来以前用fugu往本地一个一个的下载数据的时候,真的是花了很多的时间,而且那个不快不慢的传输速度导致了眼睛要不间断地盯着电脑屏幕,整个过程朴实无华且枯燥[dodge]

用和之前提交任务的script一样的原理,写一个bash的loop,就可以让shell自己去跑这个枯燥的循环了

一个从服务器下载文件的script——batchscp

  1. 首先理清思路,script是放在有一堆任务的父文件夹的,从这个文件夹开始,打开每一个job的文件夹,然后运行scp命令从服务器copy文件到当前文件,然后返回上级目录

scp 命令的用法如下(均在本地的terminal进行操作):
a. 从服务器下载文件
scp username@remoteIP:/path/filename /local_destination

b. 上传本地文件到服务器
scp /local_filename username@remoteIP:/path

  1. 代码如下:
#!/bin/bash
for i in $(seq 12 1 20)
do
cd $i/
scp remoteserver@IP:/home/remote_job_parent_directory/12-20/$i/filename .
cd ../
done

一般这个过程可能会要求你输入密码,但是因为之前已经把公钥放到了服务器上,这个过程是已经不需要再输入密码的了(关于如何放置公钥,可以看Jenny的博客),于是就是一个全自动的过程
在jobs的父目录下直接bash batchscp就好了
同理,向服务器上传输文件也是这样,交换“.”和remoteserver的位置就可以了

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容