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

想把上线 linux 用于生产的服务器的某个文件夹 与 本地公司部门服务器也是 linux 的进行实时同步,有什么办法?

  •  
  •   gzelvis · Mar 4, 2016 · 5732 views
    This topic created in 3750 days ago, the information mentioned may be changed or developed.
    目的是这样的,在本地公司做一个 100% 与服务器同样的环境,进行模拟调试或备份,因此最好能实现与生产服务器同时备份(就是源服务器多了什么文件本地立刻就开始同步),就算不能实时同步,否做个 cron 命令每天晚上进行文件夹同步。其它文件夹都好说,关键是图片目录, discuz 的图片目录那如繁星般的文件如果用差一点的 ftp 软件光 list 都会死机的。。。

    不知道各位有没有什么办法, 两边环境都是 linux
    32 replies    2016-03-14 17:17:44 +08:00
    shiny
        1
    shiny  
    PRO
       Mar 4, 2016
    rsync 定时同步试过吗
    SoloCompany
        2
    SoloCompany  
       Mar 4, 2016
    btsync?
    gzelvis
        3
    gzelvis  
    OP
       Mar 4, 2016 via iPhone   ❤️ 1
    回楼上两位,我就是第一次试这样的备份方式,什么 sync 都没试过,以前 windows 和文件还少的时候时候 flashfxp 的文件夹同步功能。 linux 下和那么多子文件真不知道应该怎么办
    ryd994
        4
    ryd994  
       Mar 4, 2016 via Android
    cron+rsync
    没什么大不了的
    Theo14
        5
    Theo14  
       Mar 4, 2016
    可以用 lsyncd 不需要 cron
    我之前写的一个配置方法 http://gunner.me/archives/199
    motecshine
        6
    motecshine  
       Mar 4, 2016 via Android
    不是有 git hooks 么,你们公司不用版本控制么
    noli
        7
    noli  
       Mar 4, 2016
    你只需要知道 linux 有 inode ,用 libuv 或者 nodejs 干这个应该简单得不能再简单了
    popil1987
        8
    popil1987  
       Mar 4, 2016
    DRDB 或者 lsyncd
    drdb 是块同步,应该比基于文件比较的要快,但我只在内网环境下用过。
    fff333
        9
    fff333  
       Mar 4, 2016 via Android
    Rsync 的时候,如果文件改变,会失败
    lfzyx
        10
    lfzyx  
       Mar 4, 2016
    lsyncd +1
    pupie
        11
    pupie  
       Mar 4, 2016
    试过分布式文件系统没有呢,曾经也有这样的需求,最后是在两地架设一个分布式文件系统,文件夹同步。任意一端的修改就会同步到另外一端。
    linux 不太熟,我记得 windows server 自身都有这样的功能
    likuku
        12
    likuku  
       Mar 4, 2016
    @pupie 分布式文件系统,那得把当前存储的东西迁移到新创建的分布式文件系统上。 windows 的 DFS 也有延迟的,看文件大小和网络速度。因为要通过公网,那么 vpn 把两头 连起来也是必要的了。
    likuku
        13
    likuku  
       Mar 4, 2016   ❤️ 1
    @popil1987 DRBD 是网络 RAID ,对网络品质要求蛮高的,同一个局域网下还不错,且从机的 drbd 数据盘是不可以被挂载的,只能用于离线备份。
    skydiver
        14
    skydiver  
       Mar 4, 2016
    @noli 你想说的是 inotify 吧
    noli
        15
    noli  
       Mar 4, 2016
    @skydiver 自己稍微 baidu 或者 google 一下又不会怀孕……非要浪费我 5 个铜币

    https://zh.wikipedia.org/zh/Inode

    inode 是指在许多“类 Unix 文件系统”中的一种数据结构。每个 inode 保存了文件系统中的一个文件系统对象(包括文件、目录、设备文件、 socket 、管道, 等等)的元信息数据,但不包括数据内容或者文件名[1]。
    noli
        16
    noli  
       Mar 4, 2016
    @skydiver 我错了,确实是 inotify 。 你说的是我想说的那个东西的正确名字。


    nodejs 封装了 inotify
    jarlyyn
        17
    jarlyyn  
       Mar 4, 2016
    rysnc+inotify

    写过 python 的脚本。
    vus520
        18
    vus520  
       Mar 4, 2016
    一般模式
    rysnc+inotify

    网络好就上
    分布式文件系统
    caola
        19
    caola  
       Mar 4, 2016
    一般 linux 都自带有 rsync ,为什么不用呢,一命令就完成同步,
    Srar
        20
    Srar  
       Mar 4, 2016
    Syncthing
    msg7086
        21
    msg7086  
       Mar 4, 2016
    rsync 毫无压力啊。我们论坛 Discuz 附件 20 多万个文件同步起来飞快的。
    gzelvis
        22
    gzelvis  
    OP
       Mar 5, 2016
    @msg7086 具体是怎么做的?还望赐教 。我指具体的命令
    msg7086
        23
    msg7086  
       Mar 5, 2016
    @gzelvis
    比如说生产服务器位于 a.b.c.d ,文件位于 /var/www/bbs/;
    本地测试用服务器位于 r.s.t.u ,文件也位于 /var/www/bbs/。
    现在你站在本地服务器上,那么可以用 rsync a.b.c.d:/var/www/bbs /var/www -a 来从生产机上拉数据。
    反过来,如果你站在生产服务器上,那么可以用 rsync /var/www/bbs r.s.t.u:/var/www -a 来向本地机器推送数据。

    如果从外往内推数据的话,需要你这边能从公网访问。

    上面说的 inotify 实时推送,就是生产服务器上每次拿到文件新增的消息以后,把路径填进 rsync 的命令行里,实时同步传送。
    如果对实时性要求不高的话,定时推送我觉得是足够了。
    gzelvis
        24
    gzelvis  
    OP
       Mar 5, 2016
    @msg7086 非常感谢你那么耐心的回答,想问下定时推送是设定 cron 每天做一次吗?能否把这个命令行也告诉我?再次感谢
    gzelvis
        25
    gzelvis  
    OP
       Mar 5, 2016
    @msg7086 像论坛的现在没那么多人了,估计就设定每天半夜 3 点跑一次同步应该就好了
    cevincheung
        26
    cevincheung  
       Mar 5, 2016
    哎呀我去……这不是说 ipfs 呢么
    msg7086
        27
    msg7086  
       Mar 5, 2016
    @gzelvis 你可以搜索一下 crontab 的编辑方法。
    只要一次同步成功以后,把相同的命令写进 crontab 的命令区就行了。
    无密码登录可以搜索 SSH 密钥登录。
    gzelvis
        28
    gzelvis  
    OP
       Mar 5, 2016
    @msg7086 好的我先试试
    allan888
        29
    allan888  
       Mar 5, 2016
    感觉太麻烦了, btsync 我觉得是最简单的。
    本地的机器和服务器同步,然后本地设置成不能删除的模式。
    julor
        30
    julor  
       Mar 5, 2016 via Android
    可以试试开源的 syncthing ,记得在服务器上设置为 master 模式
    qgb
        31
    qgb  
       Mar 14, 2016
    @cevincheung what ?
    cevincheung
        32
    cevincheung  
       Mar 14, 2016
    @qgb ipfs p2p file share. 可以订阅节点。互相同步数据。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   4494 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 77ms · UTC 10:05 · PVG 18:05 · LAX 03:05 · JFK 06:05
    ♥ Do have faith in what you're doing.