Jas*_*n C 5 open-files rename files
我有一个正在运行的应用程序正在生成一个大(~200GB)的输出文件,需要大约 35 小时才能运行(目前我大约需要 12 小时)。应用程序只打开文件一次,然后在写入时保持打开状态,直到完成;应用程序还会对文件进行大量随机访问写入(即不是顺序写入)。
现在文件正在保存到我的本地硬盘驱动器,但我刚刚决定,当它完成后,我将把它移到不同的设备上(网络驱动器,通过 SMB 安装的 NTFS)。
为了节省时间而不是稍后移动文件,有什么方法可以暂停程序并以某种方式将当前部分完成的文件移动到另一个设备,做一些技巧,然后恢复程序,以便它现在使用新位置?
我非常肯定答案是否定的,但我想我会问,有时那里有令人惊讶的技巧......
由于文件是随机写入的,因此发布另一个解决方案打破了我的tail想法。这里的想法rsync可能是有希望的,因为rsync可以使用增量传输算法进行操作,通过仅发送文件的更改部分来节省传输时间。如果您rsync在两个本地文件上运行,它将默认为--whole-file模式,这不是您想要的。
建议
rsync -av --inplace --no-whole-file /your/local/file.dat /your/remote/file.dat
Run Code Online (Sandbox Code Playgroud)
...或者也许(如果 CIFS 安装不同意增量传输)使用 pure rsync:
rsync -av --inplace --no-whole-file /your/local/file.dat remoteserver:/your/directory/file.dat
Run Code Online (Sandbox Code Playgroud)
因此,当 200 GB 文件填满时,您需要多次运行此命令。每次运行它时,它都会增量更新远程文件。当源文件随机更新时,这甚至应该起作用。也许您可以每 15 分钟运行一次。然后,当您的 pid 完成时,您将再次运行它,这将是一个快速增量增量。
| 归档时间: |
|
| 查看次数: |
575 次 |
| 最近记录: |