linux下的批量上传文件到部署服务器,有哪些好用的命令或者工具 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
gavingeng
V2EX    Linux

linux下的批量上传文件到部署服务器,有哪些好用的命令或者工具

 
  •   gavingeng 2012-09-05 01:21:52 +08:00 11159 次点击
    这是一个创建于 4787 天前的主题,其中的信息可能已经有所发展或是发生改变。
    在之前的公司,是有中控机来做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 user@$host:/tmp ; done

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

    不知各位有没有什么好的办法来解决!
    44 条回复    1970-01-01 08:00:00 +08:00
    blankyao
        1
    blankyao  
       2012-09-05 01:25:35 +08:00
    用rsync可以吧
    013231
        2
    013231  
       2012-09-05 01:36:46 +08:00
    Dropbox?
    wingoo
        3
    wingoo  
       2012-09-05 01:51:42 +08:00   1
    git?
    bigeagle
        4
    bigeagle  
       2012-09-05 02:16:29 +08:00
    eric_q
        5
    eric_q  
       2012-09-05 02:41:05 +08:00
    dsh?
    Cofyc
        7
    Cofyc  
       2012-09-05 09:21:55 +08:00
    fabric

    python 程序,可以批量并行执行远程命令和操作
    rivsen
        8
    rivsen  
       2012-09-05 09:38:02 +08:00
    ... git push 搞定,哪里那么麻烦。。。
    welsonla
        9
    welsonla  
       2012-09-05 09:41:47 +08:00
    scp,rsync,用scp比较方便一点
    skydiver
        10
    skydiver  
       2012-09-05 10:35:55 +08:00
    没法并行吗,多个进程同时传?
    ElmerZhang
        11
    ElmerZhang  
       2012-09-05 10:41:58 +08:00
    rsync
    gavingeng
        12
    gavingeng  
    OP
       2012-09-05 12:12:38 +08:00
    @Cofyc
    @ElmerZhang
    @welsonla
    python的那个稍后可以试下,在HZLUG上问过了,加 & 后台就就可以,早上尝试过了,是OK的
    for((i=1;i<=15;i++));do echo $i;scp xxx.xxx [email protected].$i:/tmp & done

    rsync ,在我的mac上还没装
    gavingeng
        13
    gavingeng  
    OP
       2012-09-05 12:24:11 +08:00
    @eric_q
    刚搜了下dsh,感觉跟cssh相似,但不能解决我的问题!
    服务器无法知道我的ip
    gavingeng
        14
    gavingeng  
    OP
       2012-09-05 12:39:12 +08:00
    @bigeagle
    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工具。
    avenger
        15
    avenger  
       2012-09-05 12:41:40 +08:00   3
    rsync 绝对的推荐…… 部署男人袜我就是用的它,直接走 ssh 通道,下面是我用的参数,供参考:

    /usr/local/bin/rsync -avzP --exclude-from=rsync.exc . user@hostcom: -e "ssh -p 716" --delete

    推荐用 3.0 以上的版本,要自己编译,brew 里的版本好像比较旧
    shanks
        16
    shanks  
       2012-09-05 14:44:48 +08:00
    rsync推荐 +1
    自动化部署,文件夹同步
    clino
        17
    clino  
       2012-09-05 16:00:12 +08:00
    rsync +1
    如果要批量执行命令就用 pssh

    我维护的一堆服务器基本上是这两个搞定的,例如批量的工作可以写一些python脚本,用 rsync 同步到服务器上去,然后用 pssh 批量执行

    一些配置的同步也是用 rsync 来完成的
    Ranler
        18
    Ranler  
       2012-09-05 18:37:11 +08:00
    我用pdsh:pdsh -w exec:host[1-20] scp FILE %h:/path/

    可以并行处理
    fanweixiao
        19
    fanweixiao  
       2012-09-05 18:54:23 +08:00
    sftp试过吗?
    orzjerry
        20
    orzjerry  
       2012-09-10 22:04:16 +08:00
    推荐使用rsync或者统一使用svn然后统一由rsync发布,这样能杜绝一定的误操作。或者git
    gavingeng
        21
    gavingeng  
    OP
       2012-09-11 00:19:52 +08:00
    @orzjerry
    git/svn太麻烦了,不划算,而且传的也不是很快,再者如果是中控机的话还是不错的,其他就不好说了!

    不过现在用的比较多的是
    for((i=1;i<=15;i++));do echo $i;scp xxx.xxx [email protected].$i:/tmp & done
    然后通过cssh上去比较文件的md5来做 md5sum xxx.xxx
    fire9
        22
    fire9  
       2012-09-11 01:18:22 +08:00
    Capistrano+git+puppet
    lemolee
        23
    lemolee  
       2012-09-11 01:19:43 +08:00
    zhuf
        24
    zhuf  
       2012-09-11 12:28:08 +08:00
    scp?
    hyq
        25
    hyq  
       2012-09-11 12:59:39 +08:00   1
    用&后台运行或者用python多线程
    gavingeng
        26
    gavingeng  
    OP
       2012-09-16 23:23:46 +08:00
    @hyq
    python多线程?我记得是有个包,但忘了是哪个了
    fanweixiao
        27
    fanweixiao  
       2012-09-17 01:03:20 +08:00
    其实git很好,配合自己写hook,不用很复杂的架构就可以批量搞定这些:)
    sdslnmd
        28
    sdslnmd      2012-09-22 00:17:47 +08:00
    scp rsync 区别是?
    xhat
        29
    xhat  
       2012-09-22 00:59:10 +08:00
    一直用rsync,很方便。
    cabbala
        30
    cabbala  
       2012-09-22 01:26:24 +08:00
    其实用shell也能写多进程。。。经常给2000多台机器分发文件的路过,要是串行分发,会死人的
    Semon
        31
    Semon  
       2012-09-22 01:45:54 +08:00
    rsync +1
    tolbkni
        32
    tolbkni  
       2012-09-22 02:39:14 +08:00
    @fire9 Capistrano + rsync + puppet
    + 10086
    hzymyp
        33
    hzymyp  
       2012-09-22 03:21:30 +08:00
    fabric
    zava
        34
    zava  
       2012-09-23 20:54:42 +08:00
    rsync
    xinzhi
        35
    xinzhi  
       2012-09-23 21:03:37 +08:00
    scp -r 也是可以用的。
    mengzhuo
        36
    mengzhuo  
       2012-11-03 15:32:50 +08:00
    必须是fabric
    组合上git或者svn就更牛掰了
    zhairuo
        37
    zhairuo  
       2012-11-03 16:19:03 +08:00
    rsync +1
    wyx
        38
    wyx  
       2012-11-26 15:51:22 +08:00
    还是用scp,把scp这个部分封装成一个独立的函数,然后加一个&,可以用一个子进程来进行cp的事情
    voidman
        39
    voidman  
       2012-11-27 14:52:06 +08:00
    rsync +1
    Renylai
        40
    Renylai  
       2012-11-27 16:11:21 +08:00
    rsync +1
    flycn1985
        41
    flycn1985  
       2012-11-27 16:25:36 +08:00
    rsync + notify
    myhost123
        42
    myhost123  
       2012-11-28 13:04:19 +08:00
    rsync吧
    Kvm
        43
    Kvm  
       2012-11-28 16:36:12 +08:00
    scp带上-r参数就行了
    或者还是rsync吧。。。。。。
    huangmingyou
        44
    huangmingyou  
       2013-01-28 22:51:04 +08:00
    puppet
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5415 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 09:08 PVG 17:08 LAX 02:08 JFK 05:08
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86