通过bash脚本scp一堆文件:必须有更好的方法

时间:2011-01-18 20:35:41

标签: bash loops scp

我目前有以下bash脚本:

for a in `seq 16 75`; 
do scp doneill@server:/mnt/device/folder/numbered_file$a.txt ./; 
done;

虽然这确实有效,但速度很慢。每个文件,对服务器的请求大约需要4-7秒,然后发送文件需要另外3秒左右。

有没有办法做到这一点只涉及发送到服务器的1个命令(以最小化我的VPN花费发送接收每个命令的时间)?通常,我会做scp doneill@server:/mnt/device/folder/numbered_file*之类的事情,但文件夹中有数千个我不想复制的文件。我只需要那些少数(由序列定义)。

3 个答案:

答案 0 :(得分:4)

在bash中:

scp doneill@server:/mnt/device/folder/numbered_file{16..75}.txt ./

答案 1 :(得分:3)

rsync应该可以解决问题:http://www.manpagez.com/man/1/rsync/

你可能不得不对参数进行一些调整,但是做得对,它可能是通过ssh传输文件的最快方式。

答案 2 :(得分:2)

这适用于bash吗?

scp doneill@server:/mnt/device/folder/numbered_file{16..75}.txt ./