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

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

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

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

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

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

    spawn scp [email protected]:/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
        46
    hl   2016-11-30 10:50:37 +08:00   ♥ 2
    有个高性能的方法:
    1.先在接收方执行:
    nc -l 6677 | tar -C 接收文件的目录 -zxf - #接收目录最好是个空目录,防止覆盖的风险

    2.再在发送方执行:
    tar -zcvf - 要发送的目录 | nc 接收方 ip 6677
        47
    chuhemiao   2016-11-30 11:33:41 +08:00
    sf
        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 最后一个答案
        49
    Ansen   2016-11-30 14:04:03 +08:00
    rsync 或者 btsync
        50
    winiex   2016-11-30 14:11:06 +08:00
    配合 nohup ,从本机拷贝到远端
    nohup rsync -avz -P -e "ssh -p 目标机器 ssh 端口" ./本机文件路径 [email protected]:远端机器文件路径 >> /tmp/rsync.log &
        51
    cute   2016-11-30 14:27:06 +08:00
    tar zcf - attaches | ssh [email protected] "tar zxf - -C /path/to/"
        52
    caomaocao   2016-11-30 14:27:35 +08:00
    ncc ncs?
        53
    BXIA   2016-11-30 14:29:11 +08:00 via iPad
    出 BTSYNC 正版授权,官网购入没用过
        54
    28ms   2016-11-30 14:39:40 +08:00 via iPhone
    务必打包传,小文件影响传输效率
        55
    imn1   2016-11-30 15:11:20 +08:00
    zip -rq0
    wput
        56
    Orzzzz   2016-11-30 15:24:44 +08:00
    送分题。

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

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

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

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

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

    表示我这的备份中心服务器每天 1 点~4 点都至少传输 800G 内容 每天
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   951 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 33ms · UTC 21:44 · PVG 05:44 · LAX 13:44 · JFK 16:44
    ♥ Do have faith in what you're doing.