最近迷上了各种各样的scripts,想起来以前用fugu往本地一个一个的下载数据的时候,真的是花了很多的时间,而且那个不快不慢的传输速度导致了眼睛要不间断地盯着电脑屏幕,整个过程朴实无华且枯燥[dodge]
用和之前提交任务的script一样的原理,写一个bash的loop,就可以让shell自己去跑这个枯燥的循环了
一个从服务器下载文件的script——batchscp
- 首先理清思路,script是放在有一堆任务的父文件夹的,从这个文件夹开始,打开每一个job的文件夹,然后运行scp命令从服务器copy文件到当前文件,然后返回上级目录
scp 命令的用法如下(均在本地的terminal进行操作):
a. 从服务器下载文件
scp username@remoteIP:/path/filename /local_destination
b. 上传本地文件到服务器
scp /local_filename username@remoteIP:/path
- 代码如下:
#!/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的位置就可以了