簡體   English   中英

更新時安全地 tar 壓縮文件

[英]Safely tar compress a file while it is updating

我需要使用進程中線程中的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更安全嗎?

您將獲得的行為取決於許多因素,包括文件系統的類型(例如 NFS 與本地磁盤)、文件的寫入方式以及每次附加的數據量。

在最好的情況下,寫入器在 append 模式下打開一個本地文件,並且寫入的文本行不超過某個內部緩沖區大小。 在這種情況下,您可能不會看到任何問題。 如果線條很長,您可能會看到部分線條。 如果文件模式不是 append,或者文件系統是 NFS 或其他異常,您可能會在文件末尾看到零或垃圾值(因為文件長度在內容之前已更改)。

一般來說,最好不要依賴這個。 一種典型的方法是每隔一段時間“滾動”文件,關閉舊文件並開始編寫新文件。 然后,您可以僅歸檔作者已關閉的“完整”文件(並且可能重命名以表明它們已完成)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM