Download 使用ssh,下载大量文件的最佳方式是什么

Download 使用ssh,下载大量文件的最佳方式是什么,download,copy,wildcard,sftp,transfer,Download,Copy,Wildcard,Sftp,Transfer,我正在尝试编写一个bash脚本,并且只使用ssh协议(sftp,scp),下载大量文件的最佳方式是什么。我说的就像10000+一样 当我使用sftp编写bash脚本时,sftp一次只能看到500个。以一种非常原始的方式,我一直运行mget**,直到下载完所有文件 curl不支持sftp,但不支持通配符/多个文件 wget可以处理多个文件,但不能处理sftp 感谢您的帮助。scp递归选项允许您下载和上载任意数量的文件 scp-rroot@my.web.server.com:/var/www/*/v

我正在尝试编写一个bash脚本,并且只使用ssh协议(sftp,scp),下载大量文件的最佳方式是什么。我说的就像10000+一样

当我使用sftp编写bash脚本时,sftp一次只能看到500个。以一种非常原始的方式,我一直运行
mget**
,直到下载完所有文件

curl不支持sftp,但不支持通配符/多个文件

wget可以处理多个文件,但不能处理sftp


感谢您的帮助。

scp递归选项允许您下载和上载任意数量的文件

scp-rroot@my.web.server.com:/var/www/*/var/www/local

#!/usr/bin/expect -f

# connect via scp
spawn scp -r "user@example.com:/home/santhosh/" /u01/dumps
#######################
expect {
  -re ".*es.*o.*" {
    exp_send "yes\r"
    exp_continue
  }
  -re ".*sword.*" {
    exp_send "PASSWORD\r"
  }
}
也可以尝试上面的方法,下面链接中的代码片段

若服务器安装了rsync,您还可以查看rsync以从服务器下载文件 rsync

rsync-ausername@remote_host:/home/username/dir1在本地机器上放置到同步

scp username@server:path/to/remote/dir/* /path/to/local/dir
如果我想做任何事情:

scp -r username@server:path/to/remote/dir/* /path/to/local/dir
这比我在小bash脚本中运行的要好一百万倍


非常感谢。

我从未见过500个文件的限制。您的SFTP服务器是什么?如果使用
ls
命令,会发生什么情况?它是否也只显示500个文件,即使有更多的文件?当您执行
mget*
时,需要一段时间来加载,然后一次下载500个文件。服务器知道我已经下载了这500个,并打开了开关。当我再次运行
mget*.
时,它将获得一个新的500个文件并再次运行。是否可以使用sftp命令提示符编写循环?因此,500限制是特意内置在sftp服务器中的一些自定义功能?这甚至比这更容易,因为我正在为无条目执行ssh密钥。。。所以expect不一定要用。我自己也没有用expect,但看到了帖子,我想这可能就是你要找的。我使用过ssh密钥,它们工作得很好。