
我正在運行 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
),請安裝sort
或coreutils
刪除-h
並ls
使用sort -nr
。
答案3
我通常用來ncdu
探索磁碟空間使用情況,如果您越來越大的資料夾不會阻塞您的系統或 ncdu 掃描,您應該能夠透過查看哪些資料夾看起來異常大來找到。