使用io.Copy() 複製稀疏檔案時,它們經常會膨脹
io.Copy() 傳輸原始字節,這會掩蓋稀疏文件中存在的漏洞- 沒有數據的空間實際上居住著。此資訊無法透過標準系統呼叫(如 read(2))存取。因此,io.Copy() 無法保持檔案的稀疏性。
為了解決這個問題,我們需要使用系統呼叫套件和手動處理進行更深入的研究。 lseek(2) 系統調用,具有特殊的 SEEK_HOLE 和 SEEK_DATA 值,可用於操作檔案中的空洞。
如果你想在傳輸過程中保持文件的稀疏性,情況就更複雜了。 Fallocate(2) 可用於嘗試在支援的檔案系統上建立漏洞。但是,某些檔案系統本質上缺乏漏洞支持,例如 FAT 系列。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3