Filesystems

磁碟大小管理

  • October 30, 2012

我正在使用 Fedora 16。我的 /dev/sda2 安裝在 / (root) 上,類似 50G 的東西被填滿了 100%:

[foampile@~ 13:13:39]> df
Filesystem     1K-blocks     Used Available Use% Mounted on
rootfs          51606140 49025452         0 100% /
devtmpfs         2988452        0   2988452   0% /dev
tmpfs            2999424       96   2999328   1% /dev/shm
/dev/sda2       51606140 49025452         0 100% /
tmpfs            2999424    51992   2947432   2% /run
tmpfs            2999424        0   2999424   0% /sys/fs/cgroup
tmpfs            2999424        0   2999424   0% /media
/dev/sda1          99150    79569     14461  85% /boot
/dev/sda5      247972844 10782056 224594412   5% /home

Q1 : 有沒有一個命令,或者 ls 的選項,它會遞歸地列出一個目錄下的所有文件,並按大小降序排列?我想看看哪些文件/目錄佔用了設備。

Q2 : 我的 /home 比較沒用。有沒有辦法重新分區磁碟並將一些磁碟空間從 /dev/sda5 (/home) 切換到 /dev/sda2?

謝謝

Q1。嘗試類似的東西sudo du -a -m -x | sort -k1n -r | head -n40。to的-a標誌du是遞歸的。該-m標誌以 MB 為單位顯示大小。停留在-x單個文件系統上。這將列出文件和目錄,並且只列出最大的 40 個(因為-n40選項 to head)。某些du實現可以-t SIZE選擇僅顯示大小超過 SIZE 的條目。

要僅列出文件,您可以嘗試類似find / -xdev -type f -size +1M -ls/這將僅列出大小超過 1 MB的文件系統上的文件。

Q2。幾乎可以確定。但是您應該單獨詢問這個問題,或者在“linux”和“repartition”等關鍵字上搜尋(此處或其他地方),因為我經常看到它被討論過。以下是本站之前的一些問答:

rootfs 的 50GB 是巨大的,最好檢查文件系統為什麼會被填滿,而不是盲目地擴展它。如果您只是擴展根文件系統,它很可能會在短時間內再次填滿。我希望 /var、/var/log 或 /tmp 被填充。

以我的經驗,這通常是由大量相對較小(ish)的文件引起的,因此最好以手動和結構化的方式進行。下面的方法可以讓您找到單個大文件或包含大量小文件的目錄。

sudo -i
cd /
du -sxh * | sort -h
  • du列出磁碟使用情況

    • -h人類可讀格式的列印尺寸(例如,1K 234M 2G)
    • -s只顯示每個參數的總數
    • -x用於跳過不同文件系統上的目錄
  • sort -h使最大的目錄最後出現。

現在調查最後(幾個)目錄:

cd the_large_diretory

並重複

du -sxh * | sort -h

直到找到包含大文件的目錄。最後,您可以使用以下命令檢查目錄的內容:

cd the_large_directory
ls -hlrS
  • ls列出目錄的內容

    • -h以“人類可讀的形式”顯示文件大小
    • -l顯示文件詳細資訊
    • -r反轉排序(最大文件在後)
    • -S按文件大小排序

筆記

  • 如果任一命令dusort您的系統不支持該-h標誌,只需使用du -sxk * | sort -n. 輸出類似,只是由於數字長而難以閱讀。
  • 如果ls您的系統不支持該-h標誌,請跳過它,它不是必需的,但可以提高可讀性。
  • 如果ls您的系統不支持該-S標誌,請將輸出通過管道傳輸到sort -nk5

引用自:https://unix.stackexchange.com/questions/53230