技术解析

linux下的批量上传文件到部署服务器,有哪些好用的命令或者工具
0
2021-07-26 22:39:01
idczone
在之前的公司,是有中控机来做scp文件到各个部署服务器,现在的公司没中控的概念,都走本机,一般都是写脚本来做scp上传,如:

for((i=1;i<=15;i++));do echo $i;scp xxx.xxx [email protected]$i:/tmp ; done

或者是
hosts="A B C D E F G H ..."
for host in $hosts;do echo $host; scp xxx.xxx [email protected]$host:/tmp ; done

但是这样有个问题,就是在scp一个大的文件时,传完一个文件之后,才会接着在foreach下一个服务器,有时会耽误一些时间!

不知各位有没有什么好的办法来解决!
用rsync可以吧

Dropbox?

git?

恩 也许你需要 pssh
http://www.theether.org/pssh/docs/0.2.3/pssh-HOWTO.html#AEN55

dsh?

bittorrent?
http://torrentfreak.com/bittorrent-makes-twitters-server-deployment-75-faster-100716/

fabric
python 程序,可以批量并行执行远程命令和操作

... git push 搞定,哪里那么麻烦。。。

scp,rsync,用scp比较方便一点

没法并行吗,多个进程同时传?

rsync




python的那个稍后可以试下,在HZLUG上问过了,加 & 后台就就可以,早上尝试过了,是OK的
for((i=1;i<=15;i++));do echo $i;scp xxx.xxx [email&& done
rsync ,在我的mac上还没装


刚搜了下dsh,感觉跟cssh相似,但不能解决我的问题!
服务器无法知道我的ip


pssh,这个没怎么听说过,先看看
下面这个链接里有说
http://linuxtoy.org/archives/dsh.html
还有 pssh(比较成熟的项目) http://www.theether.org/pssh/
erlyssh(Erlang实现的,支持交互式的shell,可cd切换目录) http://code.google.com/p/erlyssh/
都是很好的分布式ssh shell工具。

rsync 绝对的推荐…… 部署男人袜我就是用的它,直接走 ssh 通道,下面是我用的参数,供参考:
/usr/local/bin/rsync -avzP --exclude-from=rsync.exc . [email&-e "ssh -p 716" --delete
推荐用 3.0 以上的版本,要自己编译,brew 里的版本好像比较旧

rsync推荐 +1
自动化部署,文件夹同步

rsync +1
如果要批量执行命令就用 pssh
我维护的一堆服务器基本上是这两个搞定的,例如批量的工作可以写一些python脚本,用 rsync 同步到服务器上去,然后用 pssh 批量执行
一些配置的同步也是用 rsync 来完成的

我用pdsh:pdsh -w exec:host[1-20] scp FILE %h:/path/
可以并行处理

sftp试过吗?

推荐使用rsync或者统一使用svn然后统一由rsync发布,这样能杜绝一定的误操作。或者git


git/svn太麻烦了,不划算,而且传的也不是很快,再者如果是中控机的话还是不错的,其他就不好说了!
不过现在用的比较多的是
for((i=1;i<=15;i++));do echo $i;scp xxx.xxx [email&& done
然后通过cssh上去比较文件的md5来做 md5sum xxx.xxx

Capistrano+git+puppet

命令在这里: http://www.howvps.com/discussion/23

scp?

用&后台运行或者用python多线程


python多线程?我记得是有个包,但忘了是哪个了

其实git很好,配合自己写hook,不用很复杂的架构就可以批量搞定这些:)

scp rsync 区别是?

一直用rsync,很方便。

其实用shell也能写多进程。。。经常给2000多台机器分发文件的路过,要是串行分发,会死人的

rsync +1

Capistrano + rsync + puppet
+ 10086

fabric

rsync

scp -r 也是可以用的。

必须是fabric
组合上git或者svn就更牛掰了

rsync +1

还是用scp,把scp这个部分封装成一个独立的函数,然后加一个&,可以用一个子进程来进行cp的事情

rsync +1

rsync +1

rsync + notify

rsync吧

scp带上-r参数就行了
或者还是rsync吧。。。。。。

puppet

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服