V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
gavingeng
V2EX  ›  Linux

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

  •  
  •   gavingeng · Sep 5, 2012 · 11590 views
    This topic created in 4995 days ago, the information mentioned may be changed or developed.
    在之前的公司,是有中控机来做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 replies    1970-01-01 08:00:00 +08:00
    blankyao
        1
    blankyao  
       Sep 5, 2012
    用rsync可以吧
    013231
        2
    013231  
       Sep 5, 2012
    Dropbox?
    wingoo
        3
    wingoo  
       Sep 5, 2012   ❤️ 1
    git?
    bigeagle
        4
    bigeagle  
       Sep 5, 2012
    eric_q
        5
    eric_q  
       Sep 5, 2012
    dsh?
    Cofyc
        7
    Cofyc  
       Sep 5, 2012
    fabric

    python 程序,可以批量并行执行远程命令和操作
    rivsen
        8
    rivsen  
       Sep 5, 2012
    ... git push 搞定,哪里那么麻烦。。。
    welsonla
        9
    welsonla  
       Sep 5, 2012
    scp,rsync,用scp比较方便一点
    skydiver
        10
    skydiver  
       Sep 5, 2012
    没法并行吗,多个进程同时传?
    ElmerZhang
        11
    ElmerZhang  
       Sep 5, 2012
    rsync
    gavingeng
        12
    gavingeng  
    OP
       Sep 5, 2012
    @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
       Sep 5, 2012
    @eric_q
    刚搜了下dsh,感觉跟cssh相似,但不能解决我的问题!
    服务器无法知道我的ip
    gavingeng
        14
    gavingeng  
    OP
       Sep 5, 2012
    @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  
       Sep 5, 2012   ❤️ 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  
       Sep 5, 2012
    rsync推荐 +1
    自动化部署,文件夹同步
    clino
        17
    clino  
       Sep 5, 2012
    rsync +1
    如果要批量执行命令就用 pssh

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

    一些配置的同步也是用 rsync 来完成的
    Ranler
        18
    Ranler  
       Sep 5, 2012
    我用pdsh:pdsh -w exec:host[1-20] scp FILE %h:/path/

    可以并行处理
    fanweixiao
        19
    fanweixiao  
       Sep 5, 2012
    sftp试过吗?
    orzjerry
        20
    orzjerry  
       Sep 10, 2012
    推荐使用rsync或者统一使用svn然后统一由rsync发布,这样能杜绝一定的误操作。或者git
    gavingeng
        21
    gavingeng  
    OP
       Sep 11, 2012
    @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  
       Sep 11, 2012
    Capistrano+git+puppet
    lemolee
        23
    lemolee  
       Sep 11, 2012
    zhuf
        24
    zhuf  
       Sep 11, 2012
    scp?
    hyq
        25
    hyq  
       Sep 11, 2012   ❤️ 1
    用&后台运行或者用python多线程
    gavingeng
        26
    gavingeng  
    OP
       Sep 16, 2012
    @hyq
    python多线程?我记得是有个包,但忘了是哪个了
    fanweixiao
        27
    fanweixiao  
       Sep 17, 2012
    其实git很好,配合自己写hook,不用很复杂的架构就可以批量搞定这些:)
    sdslnmd
        28
    sdslnmd  
       Sep 22, 2012
    scp rsync 区别是?
    xhat
        29
    xhat  
       Sep 22, 2012
    一直用rsync,很方便。
    cabbala
        30
    cabbala  
       Sep 22, 2012
    其实用shell也能写多进程。。。经常给2000多台机器分发文件的路过,要是串行分发,会死人的
    Semon
        31
    Semon  
       Sep 22, 2012
    rsync +1
    tolbkni
        32
    tolbkni  
       Sep 22, 2012
    @fire9 Capistrano + rsync + puppet
    + 10086
    hzymyp
        33
    hzymyp  
       Sep 22, 2012
    fabric
    zava
        34
    zava  
       Sep 23, 2012
    rsync
    xinzhi
        35
    xinzhi  
       Sep 23, 2012
    scp -r 也是可以用的。
    mengzhuo
        36
    mengzhuo  
       Nov 3, 2012
    必须是fabric
    组合上git或者svn就更牛掰了
    zhairuo
        37
    zhairuo  
       Nov 3, 2012
    rsync +1
    wyx
        38
    wyx  
       Nov 26, 2012
    还是用scp,把scp这个部分封装成一个独立的函数,然后加一个&,可以用一个子进程来进行cp的事情
    voidman
        39
    voidman  
       Nov 27, 2012
    rsync +1
    Renylai
        40
    Renylai  
       Nov 27, 2012
    rsync +1
    flycn1985
        41
    flycn1985  
       Nov 27, 2012
    rsync + notify
    myhost123
        42
    myhost123  
       Nov 28, 2012
    rsync吧
    Kvm
        43
    Kvm  
       Nov 28, 2012
    scp带上-r参数就行了
    或者还是rsync吧。。。。。。
    huangmingyou
        44
    huangmingyou  
       Jan 28, 2013
    puppet
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2899 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 121ms · UTC 15:30 · PVG 23:30 · LAX 08:30 · JFK 11:30
    ♥ Do have faith in what you're doing.