【问题标题】:Best way to transfer file from Local path to NFS path将文件从本地路径传输到 NFS 路径的最佳方法
【发布时间】:2015-06-04 12:41:48
【问题描述】:

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

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

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

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

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

提前致谢!!

【问题讨论】:

  • 不清楚你在问什么。如果你受限于网络速度,你可以尝试使用一些快速压缩/解压缩。如果不是,普通的cp有什么问题?
  • @keltar plz 找到更新的查询 .. 如果还不清楚,请告诉我。

标签: file file-transfer nfs


【解决方案1】:

如果你的网络速度高于日志增长速度,你可以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

【讨论】:

  • 谢谢.. 会尝试这个建议。
猜你喜欢
  • 2023-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-27
  • 1970-01-01
  • 1970-01-01
  • 2016-04-28
  • 2016-12-12
相关资源
最近更新 更多