我正在尝试编写一个bash脚本并且只使用ssh协议(sftp,scp),下载大量文件的最佳方法是什么。我说话就像10,000 +。
当我使用sftp bash脚本时会发生什么,sftp一次只能看到500个。以一种非常原始的方式,我一直在运行mget *.*
,直到我下载了所有文件。
curl执行sftp但不支持通配符/多个文件。
wget执行多个文件但不执行sftp。
感谢您的帮助。
答案 0 :(得分:0)
scp recursive选项允许您下载和上传任意数量的文件。
scp -r root@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"
}
}
请尝试以上操作,请参阅以下链接中的代码段 https://blogs.oracle.com/SanthoshK/entry/automate_linux_scp_command
如果服务器安装了rsync,您还可以查看rsync从服务器下载文件 的 rsync的强>
rsync -a username @ remote_host:/ home / username / dir1 place_to_sync_on_local_machine
答案 1 :(得分:0)
scp username@server:path/to/remote/dir/* /path/to/local/dir
如果我想做一切递归的话:
scp -r username@server:path/to/remote/dir/* /path/to/local/dir
这比我在小bash脚本中运行的好一百万倍。
非常感谢你。