将文件从本地路径传输到 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 路径的最佳方法的主要内容,如果未能解决你的问题,请参考以下文章