如何以相當快的速度粉碎 git 儲存庫?
我有興趣在合理的時間內準確刪除 git 儲存庫。
但這樣做需要相當長的時間。在這裡,我有一個小型測試儲存庫,其中的
.git
文件夾小於 5MiB。$ du -ac ~/tmp/.git | tail -1 4772 total $ find ~/tmp/.git -type f | wc -l 991
使用
shred
的預設選項,這需要很長時間。在下一個命令中,我--force
用來更改權限並--zero
在粉碎後用零覆蓋。預設粉碎方法是用隨機數據覆蓋 3 次 (-n3
)。之後我也想刪除文件。根據
man shred
,--remove=wipesync
(預設值,何時--remove
使用)僅對目錄進行操作,但這似乎讓我慢了下來,即使我只對文件進行操作。比較(每次我重新初始化 git repo):$ time find ~/tmp/.git -type f | xargs shred --force --zero --remove=wipesync real 8m18.626s user 0m0.097s sys 0m1.113s $ time find ~/tmp/.git -type f | xargs shred --force --zero --remove=wipe real 0m45.224s user 0m0.057s sys 0m0.473s $ time find ~/tmp/.git -type f | xargs shred --force --zero -n1 --remove=wipe real 0m33.605s user 0m0.030s sys 0m0.110s
有更好的方法嗎?
*編輯:*是的,加密是關鍵。我現在只是使用
-n0
.time find ~/tmp/.git -type f | xargs shred --force --zero -n0 --remove=wipe real 0m32.907s user 0m0.020s sys 0m0.333s
使用 64 並行
shreds
:time find ~/tmp/.git -type f | parallel -j64 shred --force --zero -n0 --remove=wipe real 0m3.257s user 0m1.067s sys 0m1.043s
算了
shred
,它會花很多時間做無用的事情,而忽略了本質。
shred
通過使用隨機數據多次覆蓋文件來擦除文件(“Gutmann 擦除”),因為使用 20-30 年前的磁碟技術和一些昂貴的實驗室設備,有可能(至少在理論上)恢復被覆蓋的數據. 現代磁碟技術不再是這種情況:用零覆蓋一次也一樣好——但多次隨機傳遞的想法在它過時後仍然存在。請參閱https://security.stackexchange.com/questions/10464/why-is-writing-zeros-or-random-data-over-a-hard-drive-multiple-times-better-th另一方面,
shred
擦除敏感資訊完全失敗,因為它只擦除被告知要擦除的文件中的數據。任何儲存在以前擦除的文件中的數據仍然可以通過直接訪問磁碟而不是通過文件系統來恢復。來自 git 樹的數據可能不太容易重建;然而,這是一個現實的威脅。為了能夠快速擦除某些數據,請對其進行加密。您可以使用ecryptfs(主目錄加密)或encfs(目錄樹加密)或dm-crypt(整個分區加密)或任何其他方法。要擦除數據,只需擦除密鑰。
另請參閱如何確定目錄或文件已被實際刪除?