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

Posted

技术标签:

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

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

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

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

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

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

提前致谢!!

【问题讨论】:

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

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

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

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

例如:

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

【讨论】:

谢谢.. 会尝试这个建议。

以上是关于将文件从本地路径传输到 NFS 路径的最佳方法的主要内容,如果未能解决你的问题,请参考以下文章

如何读写NFS服务器上的文件

为不存在的文件解析相对路径(如 realpath)的最佳方法是啥?

linux 命令

PHP 无法从 NFS 共享读取会话

用于将文件传输到 SAP PI 中间件的 NFS 设置?

请问一下linux,如何将服务器文件拿到本地?啥命令?