将文件从本地路径传输到NFS路径的最佳方式



我正在寻找最佳的优化方式,我们可以使用它将大型日志文件从本地路径传输到NFS路径。

这里的日志文件会随着时间的变化而动态变化。

我目前使用的是一个java实用程序,它将从本地路径读取文件,并将其传输到NFS路径。但这似乎很耗费时间。

我们不能使用复制命令,因为日志文件被附加了更多的新日志。所以这行不通。

我要找的是…除了使用java实用程序之外,还有其他方法可以将日志文件的详细信息从本地路径传输到NFS路径吗?

提前感谢!!

如果您的网络速度高于日志增长速度,您可以直接使用cp src dst

如果日志增长太快,你不能推送那么多数据,但你只想要当前快照,我看到三个选项:

  1. 像现在一样,将整个文件读入内存,然后复制到目标。使用大的日志文件可能会导致非常大的内存占用。需要特殊的工具 tmpfs.
  2. 创建文件的本地副本,然后将该副本移动到目标。很明显的。需要有足够的空闲空间,增加存储设备的压力。如果临时文件在tmpfs中,这与第一种方法完全相同,但不需要特殊工具(仍然需要内存和足够大的tmpfs)。
  3. 取当前文件大小并只复制该数量的数据,忽略复制过程中附加的任何内容。

例如:

dd if=src.file of=/remote/dst.file bs=1 count=`stat -c '%s' src.file`

stat取当前文件大小,然后指示dd只复制该字节数。

由于bs较低,为了获得更好的性能,您可能希望将其与另一个dd结合使用:

dd status=none bs=1 count=`stat -c '%s' src.file` | dd bs=1M of=/remote/dst.file

相关内容

  • 没有找到相关文章

最新更新