[英]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.