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

Linux 大目录拷贝

  •  
  •   byte404 ·
    None · Oct 25, 2022 · 5881 views
    This topic created in 1475 days ago, the information mentioned may be changed or developed.

    现在有个服务运行的时候会实时产生大量细碎文件,我需要在不停服务的情况把它的所有数据拷贝到另一个磁盘;有什么办法能够在不影响服务的情况下完整同步它的所有文件呢,以前一直用的 rsync ,但从来没有在这个场景里试过。文件系统是 xfs ,需要拷贝的数据大概在 2T 左右 。

    34 replies  •  2022-11-05 14:58:00 +08:00
    ursus1024
    ursus1024
    Oct 25, 2022
    1
    压缩,迁移,解压.............
    byte404
    byte404
    OP
    Oct 25, 2022
    2
    @ursus1024 怎么保证文件的完整性?
    ccc008
    ccc008
    Oct 25, 2022
    3
    不知道你具体的场景。个人感觉要做一下文件夹规划。每天的量多不多?不多按天建文件夹,多的话每天的文件夹下面再按小时分。然后同步的时候同步每天或者每小时的文件夹去同步。
    Vegetable
    Vegetable
    Oct 25, 2022
    4
    rsync 就是干这个的
    my3157
    my3157
    Oct 25, 2022
    5
    改 zfs , 用 snapshot send/receive
    byte404
    byte404
    OP
    Oct 25, 2022
    6
    @ccc008 不可能这么做的,这是一个服务,你仔细看一下描述。
    cheng6563
    cheng6563
    Oct 25, 2022
    7
    你又没走网络 IO ,那直接 rsync 对拷就是了啊,有啥不完整的。

    如果分区是基于 lvm 的那就可以用快照实现一致性,不然也没其他办法了。
    byte404
    byte404
    OP
    Oct 25, 2022
    8
    @cheng6563 这个数据很重要,我多次内网 rsync 拷过去文件都损坏了,几个 T 的目录里全是几百 K ,一两兆那种文件,坏一个都 GG ,就算是本地跨设备拷贝不走网络也有一些担心。
    momocraft
    momocraft
    Oct 25, 2022
    9
    写入是随机的,那从头复制的都不行
    试试 syncthing
    cheng6563
    cheng6563
    Oct 25, 2022
    10
    @Aumujun 要 100%不损坏你只能带上校验文件了,或者拷完后用 diff 比较。
    这都要求你要有个类似 lvm 的分区管理器,不然你服务若在你拷贝时读写肯定校验不过。
    byte404
    byte404
    OP
    Oct 25, 2022
    11
    @cheng6563 我试试 rsync 后再做一次完整的校验,备份的磁盘没有使用 lvm ;实在不行我把备份盘改成 lvm 用快照的方式试试。多谢老哥。
    zhanggg
    zhanggg
    Oct 25, 2022
    12
    raid1 双写 + 热插拔 ?
    matrix67
    matrix67
    Oct 25, 2022
    15
    > 运行的时候会实时产生大量细碎文件

    改改服务,写 chunk 。比如几百个合成 1M 之类的。
    vhysug01
    vhysug01
    Oct 25, 2022 via iPhone
    16
    ceph ?
    microxiaoxiao
    microxiaoxiao
    Oct 25, 2022 via Android
    17
    glusterfs 复制卷可以吧,文件级别的双份写。
    billlee
    billlee
    Oct 25, 2022 via Android❤️4
    18
    这个根本就不是拷贝文件的问题,而是数据一致性的问题。你这数据一直在变化,拷贝需要时间,最后得到的数据肯定是不完整的。除非有 checkpoint 机制,这个 checkpoint 机制要么你的应用自己实现,要么依赖文件系统来提供。
    byte404
    byte404
    OP
    Oct 25, 2022
    19
    @billlee 和七楼老哥说的一样,我需要的就是这个;这个服务是可以停止后备份的,但每次停止都会耽误进度;所以寻求这样的一个解决方案,后续我会尽量把这种服务建立在 btrfs 上,方便迁移和复制。
    JohnBull
    JohnBull
    Oct 25, 2022
    20
    rsync
    novolunt
    novolunt
    Oct 25, 2022❤️1
    21
    @ursus1024 对,使用 Facebook 开源压缩程序 zstd
    同步到服务器
    zstd -14 -T0 -r /opt -c | ssh $slave "cat > pkg_file. tgz "
    同步到微软云 blob
    zstd -14 -T0 -r /opt -c | azcopy copy --from-to PipeBlob "https://myaccountname.blob.core.windows.net/inputs/input.fastq.gz" #input.fastq.gz 这里需要固定得文件名,PipeBlob 是固定的
    julyclyde
    julyclyde
    Oct 25, 2022
    22
    之前给一个服务器做数据备份
    直接读它的日志,看哪些文件变化过,然后整理成列表给 rsync 用
    lvzhiqiang
    lvzhiqiang
    Oct 25, 2022❤️1
    23
    推荐用 lsync ,直接集成 文件变动通知。
    Dragonish3600
    Dragonish3600
    Oct 25, 2022 via iPhone
    24
    换成 zfs ,直接定期发送快照
    madao2015
    madao2015
    Oct 25, 2022
    25
    rsync 挺快,应该有检查文件一致性的参数
    defunct9
    defunct9
    Oct 25, 2022
    26
    lsync ,这个是王道。但是小心它的语法,跟 rsync 有区别
    MrKrabs
    MrKrabs
    Oct 25, 2022
    27
    你数据一直在变怎么定义“完整同步”?
    byte404
    byte404
    OP
    Oct 25, 2022 via Android
    28
    @MrKrabs 你猜楼上给出解决方案的老哥们怎么定义的?
    byte404
    byte404
    OP
    Oct 25, 2022 via Android
    29
    @defunct9 正在用了,还没拷完,后面看看效果。
    calvey
    calvey
    Oct 25, 2022
    30
    lsyncd
    yyttrr
    yyttrr
    Oct 26, 2022
    31
    塞进 docker 里面准备两套启动命令,相同的镜像,不同的端口,不同的持久化目录。
    运行第一个启动命令,产生文件,过一段时间之后,停止第一个容器,运行第二个启动命令。这时拷贝第一个产生的文件,重复执行
    msg7086
    msg7086
    Oct 26, 2022
    32
    btrfs snapshot (或者 zfs ),先暂停,然后快照,然后继续跑。快照里的你慢慢 rsync ,跑完释放掉。
    yanqiyu
    yanqiyu
    Oct 27, 2022
    33
    btrfs 创建一致快照再 send 出去
    liuliancao
    liuliancao
    Nov 5, 2022
    34
    啥文件 啥服务 文件内容啥 其实也可以考虑利用起来 比如接个 filebeat 吐出来
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   660 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 71ms · UTC 18:15 · PVG 02:15 · LAX 10:15 · JFK 13:15
    ♥ Do have faith in what you're doing.