作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一个应用程序(视频流捕获)不断地将其数据写入单个文件。应用程序通常运行数小时,创建约 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/
我是一名优秀的程序员,十分优秀!