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

时间:2015-06-04 12:41:48

标签: file file-transfer nfs

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

此处日志文件将随时间动态变化。

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

我们无法使用复制命令,因为日志文件会附加更多新日志。所以这不起作用。

我正在寻找的是..除了使用java实用程序之外,还有什么方法可以将日志文件的详细信息从本地路径传输到NFS路径。

先谢谢!!

1 个答案:

答案 0 :(得分:0)

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

如果日志增长太快并且您无法推送那么多数据,但您只想获取当前快照,我会看到三个选项:

  1. 就像现在一样,将整个文件读入内存,就像现在一样,然后将其复制到目标位置。使用大型日志文件可能会导致非常大的内存占用。需要特殊实用程序 tmpfs。
  2. 制作文件的本地副本,然后将此副本移至目标位置。非常明显。要求您有足够的可用空间并增加存储设备压力。如果临时文件在tmpfs中,这与第一种方法完全相同,但不需要特殊工具(仍然需要内存和足够大的tmpfs)。
  3. 获取当前文件大小并仅复制该数据量,忽略复制期间将附加的任何内容。
  4. E.g:

    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