使用io.Copy() 複製稀疏檔案時,它們經常複製稀疏檔案時,它們經常複製稀疏檔案時,它們經常複製稀疏檔案時,它們經常複製稀疏檔案時,它們經常複製稀疏檔案時,它們經常複製稀疏檔案時,它們經常複製稀疏檔案時,它們經常複製稀疏檔案時,它們經常複製稀疏檔案時,它們經常複製稀疏檔案時,它們經常複製稀疏檔案時,它們經常複製稀疏檔案時,它們經常複製稀疏檔案時,它們經常複製稀疏檔案時,它們經常複製稀疏檔案時,它們經常複製稀疏檔案時,它們經常複製稀疏檔案時,它們經常複製稀疏檔案時,它們經常複製稀疏檔案時,它們經常複製稀疏檔案會膨脹
io.Copy() 傳輸原始字節,這掩蓋了稀疏文件中存在的漏洞- 沒有數據的空間實際上居住著。此資訊無法透過標準系統呼叫(如 read(2))存取。因此,io.Copy() 無法保持檔案的稀疏性。
為了解決這個問題,我們需要使用系統呼叫套件和手動處理進行更深入的研究。 lseek(2) 系統調用,具有特殊的 SEEK_HOLE 和 SEEK_DATA 值,可用於操作檔案中的空洞。
如果你想在傳輸過程中保持檔案的稀疏性,情況就更複雜了。 Fallocate(2) 可用於嘗試在支援的檔案系統上建立漏洞。但是,某些檔案系統本質上缺乏漏洞支持,例如 FAT 系列。
以上是## 如何在 Go 中複製稀疏檔案而不擴展它們?的詳細內容。更多資訊請關注PHP中文網其他相關文章!