在更新文件时tar安全地压缩文件

阿黛尔·戈德堡:

我需要使用进程中的线程中的tar压缩Linux上的文件文件正在每秒更新一次。

我正在运行以下命令来从一个单独的进程中执行此操作。

tar -cvzf /destination/compressed_files.tar.gz /directory/to/archive

它运作良好。找不到问题。但是,我有以下问题。

主要问题:
我正在尝试使自己的代码更安全,更可靠。从tar命令的角度来看,上述方法是安全的。tar是否隐式地照顾到文件正在更新并尽可能压缩的事实?tar是否在内部复制内容?

第二个问题:
我发现以下也是tar的一种方法

    tar -cvzf /destination/compressed_files.tar.gz -C /destination /directory/to/archive

看起来像-C选项更改目录?-C在这里使用安全吗?

约翰·温克(John Zwinck):

您将获得的行为取决于许多因素,包括文件系统的类型(例如NFS与本地磁盘),文件的写入方式以及每次附加多少数据。

在最佳情况下,编写器将以附加模式打开本地文件,并写入不超过某些内部缓冲区大小的文本行。在这种情况下,您可能不会看到任何问题。如果线条很长,您可能会看到部分线条。如果没有附加文件模式,或者文件系统是NFS或其他异常,则文件末尾可能会出现零或垃圾值(因为在内容前更改了文件长度)。

通常,最好不要依赖于此。一种典型的方法是每隔一段时间“滚动”文件,关闭旧文件并开始编写新文件。然后,您只能归档编写者已关闭(可能已重命名以表明它们已完成)的“完整”文件。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章