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