现在有个服务运行的时候会实时产生大量细碎文件,我需要在不停服务的情况把它的所有数据拷贝到另一个磁盘;有什么办法能够在不影响服务的情况下完整同步它的所有文件呢,以前一直用的 rsync ,但从来没有在这个场景里试过。文件系统是 xfs ,需要拷贝的数据大概在 2T 左右 。
现在有个服务运行的时候会实时产生大量细碎文件,我需要在不停服务的情况把它的所有数据拷贝到另一个磁盘;有什么办法能够在不影响服务的情况下完整同步它的所有文件呢,以前一直用的 rsync ,但从来没有在这个场景里试过。文件系统是 xfs ,需要拷贝的数据大概在 2T 左右 。
|
ursus1024Oct 25, 2022
1
压缩,迁移,解压.............
|
|
ccc008Oct 25, 2022
3
不知道你具体的场景。个人感觉要做一下文件夹规划。每天的量多不多?不多按天建文件夹,多的话每天的文件夹下面再按小时分。然后同步的时候同步每天或者每小时的文件夹去同步。
|
|
VegetableOct 25, 2022
4
rsync 就是干这个的
|
|
my3157Oct 25, 2022
5
改 zfs , 用 snapshot send/receive
|
|
cheng6563Oct 25, 2022
7
你又没走网络 IO ,那直接 rsync 对拷就是了啊,有啥不完整的。
如果分区是基于 lvm 的那就可以用快照实现一致性,不然也没其他办法了。 |
|
8
@cheng6563 这个数据很重要,我多次内网 rsync 拷过去文件都损坏了,几个 T 的目录里全是几百 K ,一两兆那种文件,坏一个都 GG ,就算是本地跨设备拷贝不走网络也有一些担心。
|
|
momocraftOct 25, 2022
9
写入是随机的,那从头复制的都不行
试试 syncthing |
|
cheng6563Oct 25, 2022
10
@Aumujun 要 100%不损坏你只能带上校验文件了,或者拷完后用 diff 比较。
这都要求你要有个类似 lvm 的分区管理器,不然你服务若在你拷贝时读写肯定校验不过。 |
|
11
@cheng6563 我试试 rsync 后再做一次完整的校验,备份的磁盘没有使用 lvm ;实在不行我把备份盘改成 lvm 用快照的方式试试。多谢老哥。
|
|
zhangggOct 25, 2022
12
raid1 双写 + 热插拔 ?
|
|
limobaiOct 25, 2022
13
|
|
limobaiOct 25, 2022
14
|
|
matrix67Oct 25, 2022
15
> 运行的时候会实时产生大量细碎文件
改改服务,写 chunk 。比如几百个合成 1M 之类的。 |
|
vhysug01Oct 25, 2022 via iPhone
16
ceph ?
|
|
microxiaoxiaoOct 25, 2022 via Android
17
glusterfs 复制卷可以吧,文件级别的双份写。
|
|
18
这个根本就不是拷贝文件的问题,而是数据一致性的问题。你这数据一直在变化,拷贝需要时间,最后得到的数据肯定是不完整的。除非有 checkpoint 机制,这个 checkpoint 机制要么你的应用自己实现,要么依赖文件系统来提供。
|
|
19
@billlee 和七楼老哥说的一样,我需要的就是这个;这个服务是可以停止后备份的,但每次停止都会耽误进度;所以寻求这样的一个解决方案,后续我会尽量把这种服务建立在 btrfs 上,方便迁移和复制。
|
|
JohnBullOct 25, 2022
20
rsync
|
|
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 是固定的 |
|
julyclydeOct 25, 2022
22
之前给一个服务器做数据备份
直接读它的日志,看哪些文件变化过,然后整理成列表给 rsync 用 |
|
23
推荐用 lsync ,直接集成 文件变动通知。
|
|
Dragonish3600Oct 25, 2022 via iPhone
24
换成 zfs ,直接定期发送快照
|
|
madao2015Oct 25, 2022
25
rsync 挺快,应该有检查文件一致性的参数
|
|
defunct9Oct 25, 2022
26
lsync ,这个是王道。但是小心它的语法,跟 rsync 有区别
|
|
MrKrabsOct 25, 2022
27
你数据一直在变怎么定义“完整同步”?
|
|
calveyOct 25, 2022
30
lsyncd
|
|
yyttrrOct 26, 2022
31
塞进 docker 里面准备两套启动命令,相同的镜像,不同的端口,不同的持久化目录。
运行第一个启动命令,产生文件,过一段时间之后,停止第一个容器,运行第二个启动命令。这时拷贝第一个产生的文件,重复执行 |
|
msg7086Oct 26, 2022
32
btrfs snapshot (或者 zfs ),先暂停,然后快照,然后继续跑。快照里的你慢慢 rsync ,跑完释放掉。
|
|
yanqiyuOct 27, 2022
33
btrfs 创建一致快照再 send 出去
|
|
liuliancaoNov 5, 2022
34
啥文件 啥服务 文件内容啥 其实也可以考虑利用起来 比如接个 filebeat 吐出来
|