Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过bash脚本scp一堆文件:一定有更好的方法_Bash_Loops_Scp - Fatal编程技术网

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

通过bash脚本scp一堆文件:一定有更好的方法,bash,loops,scp,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秒 是否有一种方法只需要向服务器发送一条命令(以尽量减少我的VPN发送和接收每条命令的时间)?通常,我会做一些类似于scp的事情doneill@server:/mnt/devi

我目前拥有以下bash脚本:

for a in `seq 16 75`; 
do scp doneill@server:/mnt/device/folder/numbered_file$a.txt ./; 
done;
虽然这确实有效,但速度非常慢。对于每个文件,向服务器发送请求大约需要4-7秒,然后再发送文件大约需要3秒

是否有一种方法只需要向服务器发送一条命令(以尽量减少我的VPN发送和接收每条命令的时间)?通常,我会做一些类似于
scp的事情doneill@server:/mnt/device/folder/numbered_file*
但文件夹中有数千个我不想复制的文件。我只需要获得那些(由序列定义的)少数内容。

在bash中:

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

这对bash有用吗

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

rsync应该做到这一点:


您可能需要对参数进行一些修改,但如果操作得当,这可能是通过ssh传输文件的最快方式。

作为将来的参考,您可以在
For
语句中使用该括号语法,而不是在{16..17}中调用外部
seq
实用程序:
。您还可以为((a=16;a)执行: