Distributions
› Ubuntu
› Fedora
› CentOS
中文资源站
› 网易开源镜像站
gavingeng
V2EX  ›  Linux

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

  •  
  •   gavingeng · Sep 5, 2012 · 12228 views
    This topic created in 5181 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
    blankyao
    Sep 5, 2012
    1
    用rsync可以吧
    013231
    013231
    Sep 5, 2012
    2
    Dropbox?
    wingoo
    wingoo
    Sep 5, 2012❤️1
    3
    git?
    eric_q
    eric_q
    Sep 5, 2012
    5
    dsh?
    Cofyc
    Cofyc
    Sep 5, 2012
    7
    fabric

    python 程序,可以批量并行执行远程命令和操作
    rivsen
    rivsen
    Sep 5, 2012
    8
    ... git push 搞定,哪里那么麻烦。。。
    welsonla
    welsonla
    Sep 5, 2012
    9
    scp,rsync,用scp比较方便一点
    skydiver
    skydiver
    Sep 5, 2012
    10
    没法并行吗,多个进程同时传?
    ElmerZhang
    ElmerZhang
    Sep 5, 2012
    11
    rsync
    gavingeng
    gavingeng
    OP
    Sep 5, 2012
    12
    @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
    gavingeng
    OP
    Sep 5, 2012
    13
    @eric_q
    刚搜了下dsh,感觉跟cssh相似,但不能解决我的问题!
    服务器无法知道我的ip
    gavingeng
    gavingeng
    OP
    Sep 5, 2012
    14
    @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
    avenger
    Sep 5, 2012❤️3
    15
    rsync 绝对的推荐…… 部署男人袜我就是用的它,直接走 ssh 通道,下面是我用的参数,供参考:

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

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

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

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

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