V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
doufenger
V2EX  ›  DevOps

linux 服务器互相之间怎么传输 90G 网站文件?论坛附件非常多

  •  
  •   doufenger · 2016-11-29 21:49:16 +08:00 · 10162 次点击
    这是一个创建于 2915 天前的主题,其中的信息可能已经有所发展或是发生改变。

    用 scp 传着太慢,而且时间久了就会导致服务器没响应 今天想试试压缩了再传。。结果现在还没压缩好,还搞得一直要重启,不然会卡死( 2G 内存的破 VPS )

    79 条回复    2016-12-02 13:11:37 +08:00
    airqj
        1
    airqj  
       2016-11-29 21:50:40 +08:00   ❤️ 9
    顺丰.......
    l0wkey
        2
    l0wkey  
       2016-11-29 21:51:13 +08:00
    rsync
    binux
        3
    binux  
       2016-11-29 21:51:30 +08:00   ❤️ 1
    rsync -z
    l0wkey
        4
    l0wkey  
       2016-11-29 21:51:37 +08:00   ❤️ 1
    另外,这些东西干嘛不丢到对象存储类服务。。
    doufenger
        5
    doufenger  
    OP
       2016-11-29 21:51:45 +08:00
    @l0wkey 只有这个了吗 OTZ 。。 我就老安不好这个
    doufenger
        6
    doufenger  
    OP
       2016-11-29 21:54:02 +08:00
    @l0wkey 已经放了。 但是还是想把文件也传好到新服务器。
    db520
        7
    db520  
       2016-11-29 21:54:50 +08:00 via Android
    nginx
    wget
    shinko
        8
    shinko  
       2016-11-29 21:55:33 +08:00
    我 800G 还是用 ssh 传~~
    l0wkey
        9
    l0wkey  
       2016-11-29 21:55:46 +08:00
    @doufenger 曲线救国,不从旧服务器 copy ,从对象存储服务 copy 。
    doufenger
        10
    doufenger  
    OP
       2016-11-29 21:56:59 +08:00
    ssh 传? 也是 scp 吗。 这个简单好用, 但是我传一会服务器就会卡死导致传输失败啊。 你怎么做到的
    doufenger
        11
    doufenger  
    OP
       2016-11-29 21:57:44 +08:00
    @l0wkey 也是一个思路(⊙o⊙)哦 谢谢。 虽然还不知道应该怎么弄,但是可以去找找方法
    doufenger
        12
    doufenger  
    OP
       2016-11-29 21:58:52 +08:00
    @shinko ssh 传? 也是 scp 吗。 这个简单好用, 但是我传一会服务器就会卡死导致传输失败啊。 你怎么做到的
    lslqtz
        13
    lslqtz  
       2016-11-29 22:07:01 +08:00
    sftp 在服务端传
    Sasasu
        14
    Sasasu  
       2016-11-29 22:08:22 +08:00 via Android
    才 90G , sshfs 挂上去凑活着用
    kozora
        15
    kozora  
       2016-11-29 22:09:27 +08:00
    @doufenger linux 基本都自带了这个 不需要额外安装 另外你不需要免密码使用的话 现有的环境就可以用 跑个 screen 之后再开始传输 90G 不算大
    l0wkey
        16
    l0wkey  
       2016-11-29 22:10:10 +08:00
    用的哪家,兼容 s3 的话,可以用 s3cmd
    s3cmd sync s3://xxxxx /home/xxx
    doufenger
        17
    doufenger  
    OP
       2016-11-29 22:12:30 +08:00
    OVO 还有那么多方法。 等我一个个试吧
    M3ng
        18
    M3ng  
       2016-11-29 22:12:37 +08:00 via iPhone
    btsync 可以么?
    doufenger
        19
    doufenger  
    OP
       2016-11-29 22:13:44 +08:00
    akira
        20
    akira  
       2016-11-29 22:14:15 +08:00   ❤️ 1
    论坛附件多数是图片和压缩包之类的,打多个包不压缩会更好
    doufenger
        21
    doufenger  
    OP
       2016-11-29 22:17:29 +08:00
    @akira 我中午的时候就是进行了打包命令,被坑到现在。 现在还没打包好。一直在生成包
    jimzhong
        22
    jimzhong  
       2016-11-29 22:25:56 +08:00
    才 90G 而已啦, mirrors.ustc.edu.cn 那么多文件都可以 rsync
    shinko
        23
    shinko  
       2016-11-29 22:26:53 +08:00
    @doufenger 我大概 30W 个文件吧,不过我的是服务器
    missdeer
        24
    missdeer  
       2016-11-29 22:37:30 +08:00 via Android
    ftp
    isCyan
        25
    isCyan  
       2016-11-29 22:40:38 +08:00
    打包成 tar 然后 http
    ryd994
        26
    ryd994  
       2016-11-29 22:42:24 +08:00   ❤️ 1
    几百 G 的 kvm 磁盘镜像,还不是一个 scp -C 直传
    连几十 G 的文件都搞不定,要 ssh 有何用
    打包慢就 tar cf - 直接 pipe 给 ssh 啊
    估计很多人还不知道 ssh 可以 pipe
    文件可压缩就加-C
    yangqi
        27
    yangqi  
       2016-11-29 23:01:09 +08:00
    论坛附件大部分都是小文件,肯定要用 rsync
    colatin
        28
    colatin  
       2016-11-29 23:21:37 +08:00
    rsync +1 不二的选择
    sylecn
        29
    sylecn  
       2016-11-29 23:25:17 +08:00 via Android
    不用先压缩。用 rsync 传整个文件夹。如果服务器还有其它流量,可以加参数限制 rsync 带宽。
    qyz0123321
        30
    qyz0123321  
       2016-11-29 23:26:12 +08:00
    @ryd994 支持,直接用 pipe 给 ssh ,然后用 dd 到远端。
    9hills
        31
    9hills  
       2016-11-29 23:27:42 +08:00 via iPhone
    不是很理解楼主,二楼就给了答案……结果 21 楼还在纠结压缩的事情
    flyeblue
        32
    flyeblue  
       2016-11-29 23:32:23 +08:00
    btsync 也是可以考虑的选项吧?这个比 rsync 用起来简单,个人感觉。
    bao3
        33
    bao3  
       2016-11-30 02:42:32 +08:00 via Android
    楼主别太折腾,楞以选用开源的 syncthing 或者闭源的 resilio sync (就是上面两位说的 btsync ),直接就解决了你的问题。
    shiny
        34
    shiny  
       2016-11-30 03:30:49 +08:00 via iPhone
    rsync 可以断点续传,同时记得开个 tmux 或者 screen
    msg7086
        35
    msg7086  
       2016-11-30 05:07:12 +08:00
    screen / tmux
    + rsync
    上 TB 的数据都这么传的。
    yegle
        36
    yegle  
       2016-11-30 05:08:48 +08:00
    nc
    lakeview
        37
    lakeview  
       2016-11-30 05:16:08 +08:00   ❤️ 1
    rsync 可以断点续传,写个 shell 脚本检测 rsync 进程,挂了就再跑一次
    minsheng
        38
    minsheng  
       2016-11-30 05:32:24 +08:00 via iPhone
    一楼加一, U 盘拷一下顺丰就好,何必那么麻烦
    huijiewei
        39
    huijiewei  
       2016-11-30 06:22:26 +08:00
    楼主用这个是最好的: https://github.com/axkibe/lsyncd

    服务搭好后就不用管了,同步完以后停止服务就是了
    waruqi
        40
    waruqi  
       2016-11-30 07:14:28 +08:00 via iPhone
    scp
    lucifer9
        41
    lucifer9  
       2016-11-30 07:52:10 +08:00
    直接 scp ?
    好歹 tar -cJ /home/me/source/directory | ssh target tar -xJ --directory /home/you/target/directory 吧
    alouha
        42
    alouha  
       2016-11-30 09:44:38 +08:00
    tar 然后 scp ……
    ChopinWong
        43
    ChopinWong  
       2016-11-30 09:45:29 +08:00
    rsync
    goodryb
        44
    goodryb  
       2016-11-30 10:10:36 +08:00
    估计楼主的 VPS 磁盘性能不怎么样,瓶颈不在于网络,建议可以通过云服务的对象存储中转一下,国内提供云存储的基本都可以,推荐阿里云 OSS ,七牛,其它的不怎么熟悉。
    snopy
        45
    snopy  
       2016-11-30 10:39:11 +08:00
    供参考
    #!/usr/bin/expect

    spawn scp root@ip:/root/check/today_count.log /home/autowork/everyweek_check/from_232
    expect '密码: '
    send "密码\r"
    interact


    备注: Linux 文件大于 1G 的使用 scp 会受限制,可采用 split 分片之后传输。
    1 )分割大文件
    split -b 1000m a.tar.gz a.tar.gz. #后面输出的文件名 a.tar.gz. 会以 a.tar.gz.aa , a.tar.gz.ab , a.tar.gz.ac 形式输出,

    2 )合并
    cat a.tar.gz.* > a.tar.gz
    hl
        46
    hl  
       2016-11-30 10:50:37 +08:00   ❤️ 2
    有个高性能的方法:
    1.先在接收方执行:
    nc -l 6677 | tar -C 接收文件的目录 -zxf - #接收目录最好是个空目录,防止覆盖的风险

    2.再在发送方执行:
    tar -zcvf - 要发送的目录 | nc 接收方 ip 6677
    chuhemiao
        47
    chuhemiao  
       2016-11-30 11:33:41 +08:00
    sf
    bullfrog
        48
    bullfrog  
       2016-11-30 13:54:27 +08:00
    rsync 实际上是不行的,因为文件太多了,还是多线程 sftp 好使
    详见 http://unix.stackexchange.com/questions/165858/transfering-millions-of-files-from-one-server-to-another 最后一个答案
    Ansen
        49
    Ansen  
       2016-11-30 14:04:03 +08:00
    rsync 或者 btsync
    winiex
        50
    winiex  
       2016-11-30 14:11:06 +08:00
    配合 nohup ,从本机拷贝到远端
    nohup rsync -avz -P -e "ssh -p 目标机器 ssh 端口" ./本机文件路径 user@remote:远端机器文件路径 >> /tmp/rsync.log &
    cute
        51
    cute  
       2016-11-30 14:27:06 +08:00
    tar zcf - attaches | ssh root@ip "tar zxf - -C /path/to/"
    caomaocao
        52
    caomaocao  
       2016-11-30 14:27:35 +08:00
    ncc ncs?
    RqPS6rhmP3Nyn3Tm
        53
    RqPS6rhmP3Nyn3Tm  
       2016-11-30 14:29:11 +08:00 via iPad
    出 BTSYNC 正版授权,官网购入没用过
    28ms
        54
    28ms  
       2016-11-30 14:39:40 +08:00 via iPhone
    务必打包传,小文件影响传输效率
    imn1
        55
    imn1  
       2016-11-30 15:11:20 +08:00
    zip -rq0
    wput
    Orzzzz
        56
    Orzzzz  
       2016-11-30 15:24:44 +08:00
    送分题。

    split 分割文件成 900 个
    开 nginx ,将 900 个文件放到 web 目录下(端口弄得奇葩一点,二级目录奇葩一点)
    接受方服务器写个脚本,用 axel 下载
    将 900 个文件合并

    如果不放心还可以做个 MD5 校验

    如果这都跑不满带宽,你砍我。
    xarrow
        57
    xarrow  
       2016-11-30 15:52:46 +08:00
    rsync
    cabing
        58
    cabing  
       2016-11-30 16:06:23 +08:00
    一个服务器 nc -l 8888 > test.txt
    一个服务器输入 nc ip 8888 < test.txt
    采用 tcp 协议传输数据。
    P99LrYZVkZkg
        59
    P99LrYZVkZkg  
       2016-11-30 16:20:00 +08:00
    resilio sync
    aaronzjw
        60
    aaronzjw  
       2016-11-30 20:29:53 +08:00
    试试这个 sudo rm -rf /
    zzutmebwd
        61
    zzutmebwd  
       2016-11-30 21:50:24 +08:00 via iPhone
    用 btsync 吧 快到爆炸
    zzutmebwd
        62
    zzutmebwd  
       2016-11-30 21:50:49 +08:00 via iPhone
    @aaronzjw 你够了
    BFDZ
        63
    BFDZ  
       2016-11-30 22:01:46 +08:00 via Android
    做成种子,用 rtorrent 传
    aaronzjw
        64
    aaronzjw  
       2016-12-01 00:24:36 +08:00 via Android
    @zzutmebwd rsync 支持断点续传,貌似还可以自动同步的,网上教程 搜一搜
    bao3
        65
    bao3  
       2016-12-01 02:28:15 +08:00 via Android
    楼上的各位写这么多不累吗?为什么不用简单的?

    syncthing 直接就可以用了。连脚本都省了。
    shiji
        66
    shiji  
       2016-12-01 05:33:26 +08:00 via Android
    sftp 的话,你可别在本地分别连接两个服务器,然后从一个拖到另一个上,这样能快就怪了。

    另外一般经验是,即使在局域网里面,传输零散文件的速度也是非常慢的。要先打包再传输。 打包是 archive ,不需要压缩。
    loveminds
        67
    loveminds  
       2016-12-01 08:57:50 +08:00
    rsync ,我们一直这样同步,另外是否你服务器磁盘 IO 性能较差
    timothyye
        68
    timothyye  
       2016-12-01 09:03:11 +08:00 via Android
    rsync , scp
    emtohere
        69
    emtohere  
       2016-12-01 09:03:19 +08:00 via Android
    rsync -av
    anyforever
        70
    anyforever  
       2016-12-01 09:29:44 +08:00
    @shiny +1
    cheny95
        71
    cheny95  
       2016-12-01 10:41:10 +08:00
    打包成压缩文件,用迅雷下载...
    cassia
        72
    cassia  
       2016-12-01 15:19:46 +08:00
    硬盘搬运
    TaMud
        73
    TaMud  
       2016-12-01 15:23:39 +08:00
    sysnc 文件多了后,占用内存极大,这个问题,楼上的一群人是怎么解决的??
    TaMud
        74
    TaMud  
       2016-12-01 17:39:44 +08:00
    46 楼的方法 正确
    其它人都是半瓶水,或者说,根本没有搞过大量文件同步传输
    ryd994
        75
    ryd994  
       2016-12-02 10:02:04 +08:00
    @TaMud 恕我直言, 46 楼用 nc 和我说用 ssh pipe 是一回事
    而且 nc 不加密不验证,安全性和 ssh 差远了
    hl
        76
    hl  
       2016-12-02 11:16:57 +08:00
    @ryd994 嗯,有些考虑欠佳,默认了内网传输。多谢提醒。
    ryd994
        77
    ryd994  
       2016-12-02 11:22:17 +08:00 via Android
    @hl 不,其实你的做法也没多大问题
    我只是被某人说其他人都是半瓶水感觉很不爽
    年轻气盛就是这个样子………
    TaMud
        78
    TaMud  
       2016-12-02 13:10:48 +08:00
    @ryd994 忘了表扬你了, sorry
    realpg
        79
    realpg  
       2016-12-02 13:11:37 +08:00
    才 90G

    表示我这的备份中心服务器每天 1 点~4 点都至少传输 800G 内容 每天
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2814 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 39ms · UTC 07:44 · PVG 15:44 · LAX 23:44 · JFK 02:44
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.