如何找到哪個資料夾佔用空間快?

如何找到哪個資料夾佔用空間快?

我正在運行 Linux 伺服器,我們使用該伺服器作為 samba 共用磁碟機。從昨天開始,其中一個共用磁碟機的大小突然增加(每十分鐘約 100 MB)。此共用磁碟機中的資料夾和子資料夾過多。現在共享驅動器空間不足。

請幫助我如何找到哪個資料夾正在增加。我嘗試過以下命令來獲取共享驅動器子目錄的大小。但我需要比較輸出,並且需要很長時間才能發現我是否不幸運。

du -sh --maxdepth=1  

您能否建議我,是否有其他方法可以在此檔案系統中找到資料事務?

答案1

使用以下命令尋找最近修改的檔案。它將顯示資料夾內最後十分鐘內修改的檔案。增加 -mmin -10 參數以查看資料夾隨時間的修改情況。看人發現並尋找-mtime-mmin欲了解完整詳情:

sudo find FOLDER -xdev -type f -mmin -10 -ls

另一種情況是,已刪除的檔案仍然佔用磁碟空間,而由於進程仍在使用它們而無法恢復這些空間。在這種情況下,請識別使用已刪除檔案的進程並完成它們以恢復空間:

sudo lsof | grep deleted

尋找大小在這裡沒有幫助,因為許多小檔案可能佔用與大檔案一樣多的空間,甚至更多。也要檢查索引節點號。另外,要取得 FOLDER 內所有資料夾的大小:

sudo find FOLDER -xdev -type d | xargs -I DIR du -sm DIR | sort -nk1

答案2

您可以嘗試使用iotop工具來顯示進程的 I/O 使用情況(換句話說,哪些頂級進程正在使用您的磁碟),這樣您就可以追蹤哪個進程負責佔用空間。另一種方法是使用inotify(的一部分inotify-tools)它可以監視目錄的變更。

du或者簡單的方法是以下方式使用。

定義以下別名:

alias big='du -ah . | sort -rh | head -20'
alias big-files='ls -1Rhs | sed -e "s/^ *//" | grep "^[0-9]" | sort -hr | head -n20'

然後轉到一些可疑的資料夾並運行big以顯示當前目錄中最大的檔案和目錄。或運行big-files以遞歸方式查看當前資料夾中最大的檔案。

注意:要在 OSX/BSD 上正常運作(因為sort沒有-h),請安裝sortcoreutils刪除-hls使用sort -nr

答案3

我通常用來ncdu探索磁碟空間使用情況,如果您越來越大的資料夾不會阻塞您的系統或 ncdu 掃描,您應該能夠透過查看哪些資料夾看起來異常大來找到。

相關內容