我可以让 tar 在读取文件时不使用文件系统缓存吗?

And*_*ter 6 linux backup tar

我们在生产 Web 服务器上有一项任务,需要从整个文件系统中压缩文件。它运行了大约 105 分钟,在此期间,Apache 开始交换,因为所有这些文件的读取已经扩展了文件系统缓存的内存量。

tar 正在读取的数据不需要存在于文件系统缓存中。它会进入 tarfile,仅此而已。有什么我们可以说的tar cvf whatever/ --no-system-file-buffer-reads吗?我的阅读man tar没有发现任何看起来有帮助的东西。

您不必指出这可以被视为“医生,我那样去会很痛!所以不要那样去”的情况。不知何故,我们需要将文件转储到 tar 文件中,所以不这样做不是一种选择。

fue*_*ero 12

我认为这已经在这里得到了回答:

nocache实用程序,它可以添加到诸如 ionice 和 nice 之类的命令之前。它通过预加载它增加了一个图书馆 posix_fadvisePOSIX_FADV_DONTNEED标志所有打开的呼叫。

简单来说,它告诉内核该特定文件不需要缓存;内核通常不会缓存文件。有关技术细节,请参见此处

它对任何大型复制作业都有奇效,例如,如果您想在后台备份一个多 TB 的磁盘,同时对您正在运行的系统的影响最小,您可以做一些事情nice -n19 ionice -c3 nocache cp -a /vol /vol2