gpt4 book ai didi

linux - 在一个文件仍在写入时同步两个文件

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:01:11 25 4
gpt4 key购买 nike

我有一个应用程序(视频流捕获)不断地将其数据写入单个文件。应用程序通常运行数小时,创建约 1 GB 的文件。在它退出后不久(几秒钟内),我想要它正在写入的文件的 2 个副本 - 比方说,一个在 /mnt/disk1 中。 , 另一个在 /mnt/disk2 (后者是具有 FAT32 文件系统的 U 盘)。

我真的不喜欢修改应用程序以同时写入 2 个副本的想法,所以我想到了:

  • 应用程序启动并开始写入文件(我们称之为 /mnt/disk1/file.mkv )
  • 一些实用程序启动,复制/mnt/disk1/file.mkv中已经存在的内容至 /mnt/disk2/file.mkv
  • 获得初始同步状态后,它会继续以类似于 tail -f 的方式跟踪写入的文件复制它从 /mnt/disk1/file.mkv 获得的所有内容至 /mnt/disk2/file.mkv
  • 几个小时过去了
  • 应用程序退出,我们停止同步实用程序
  • 之后,我们快速运行 rsync /mnt/disk1/file.mkv /mnt/disk2/file.mkv只是为了确保它们相同。如果它们相同,它应该只运行快速检查并很快退出。

同步 2 个文件的最佳方法是什么,最好使用简单的 Linux shell 可用实用程序?可能我可以对 FUSE/md 设备/tee 使用一些巧妙的技巧/tail -f

解决方案

对我来说最好的解决方案似乎是

mencoder ... -o >(
tee /mnt/disk1/file.mkv |
tee /mnt/disk2/file.mkv |
mplayer -
)

这个使用了名为“进程替换”的 bash/zsh 特定魔法,因此无需使用 mkfifo 手动制作命名管道。 ,并显示正在编码的内容,作为奖励:)

最佳答案

嗯...文件在写入时不可用,那么你为什么不“欺骗”你的程序通过管道/fifo 写入并使用第二个非常简单的程序来创建 2 个副本?

这样,原始流程一结束,您就拥有了两个副本。

关于linux - 在一个文件仍在写入时同步两个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4289369/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com