Làm thế nào để tôi giải phóng không gian đĩa?


181

Máy chủ đám mây Ubuntu của tôi chỉ còn lại 900 MB dung lượng đĩa.

Tôi sẽ chỉ làm trống thư mục / tmp và tự hỏi nếu có bất kỳ vị trí nào khác để dọn dẹp.


1
Hãy thử cái này quá: dpkg -l | g ^ ^ | cắt -d '' -f3 | xargs sudo apt-get purge -y
crsuarezf

Nếu bạn đang sử dụng docker
Gerard Carbó

trong nhiều trường hợp:sudo docker container prune -f && sudo docker image prune -f
smftr

Câu trả lời:


104
sudo apt-get autoremove

Điều đó có thể dọn sạch rất nhiều guff (hạt nhân cũ, v.v.) đã được thay thế. Bạn có thể thực hiện một điều tương tự trong Synaptic (tải nó lên và chọn nút trạng thái và sau đó là tùy chọn Tự động xóa).


nó sẽ không ảnh hưởng đến các ứng dụng đang chạy như nếu nó loại bỏ bất kỳ gói cần thiết nào mà ứng dụng nào phụ thuộc vào?.
dùng3215

1
Không. Autoremove tìm kiếm các gói mồ côi, nghĩa là các gói mà bạn không tự cài đặt rõ ràng (các gói được đánh dấu tự động) và không có phụ thuộc. Nếu bạn sử dụng aptitudethay vì apt-get, nó có thể dọn sạch khi bạn đi nhưng việc cài đặt cũ hơn là thu thập một loạt các hạt nhân đã cài đặt khi các bản cập nhật bảo mật xuất hiện.
Oli

1
Typo trong bình luận cuối cùng của tôi. Tôi muốn nói rằng các gói mồ côi là những gói không phụ thuộc vào, không phải là những gói "không có sự phụ thuộc". Họ cũng có thể có sự phụ thuộc và nếu họ chỉ ở đó cho gói mồ côi đó, họ cũng sẽ bị xóa. Đôi khi (với những cây phụ thuộc thực sự sâu) có thể mất một vài thiết bị tự động để dọn dẹp.
Oli

5
Mặc dù lệnh trên chắc chắn là hữu ích, nhưng nó sẽ không loại bỏ các hạt nhân cũ. Điều đó phải được thực hiện bằng tay hoặc bằng các công cụ bổ sung như Ubuntu Tweak.
mã hóa

1
@nyarlathotep Nó sẽ xóa các tệp tiêu đề kernel, thoạt nhìn có thể khiến người ta nghĩ rằng nó sẽ loại bỏ các hạt nhân cũ - tuy nhiên, các hạt nhân cũ vẫn còn (thử dpkg --get-selections | grep linux-image).
drevicko

211

Để xóa các gói đã tải xuống (.deb) đã được cài đặt (và không còn cần thiết)

sudo apt-get clean

Để xóa tất cả các lưu trữ được lưu trữ trong bộ nhớ cache của bạn cho các gói không thể tải xuống được nữa (do đó các gói không còn trong kho lưu trữ hoặc có phiên bản mới hơn trong kho lưu trữ).

sudo apt-get autoclean

Để xóa các gói không cần thiết (Sau khi gỡ cài đặt ứng dụng, có thể có các gói bạn không cần nữa)

sudo apt-get autoremove

Để xóa các phiên bản kernel cũ

sudo apt-get remove --purge linux-image-X.X.XX-XX-generic

Nếu bạn không biết nên gỡ bỏ phiên bản kernel nào

dpkg --get-selections | grep linux-image

Nguồn: Limpiando Ubuntu: comandos y programas (factización) ( google dịch )


1
Chạy cleangiải phóng khá nhiều không gian. Ngay sau đó, tôi chạy autocleanvà dung lượng trống của tôi giảm 45 MB. Chạy cleanlại phát hành thêm không gian này.
vẽ Noakes

8
Tôi đã xóa tất cả hình ảnh linux được liệt kê do dpkg --get-selections | grep linux-imagelỗi khởi động - Ubuntu đã biến mất khỏi menu khởi động grub - câu trả lời này đã khắc phục sự cố - thử không xóa hình ảnh mới nhất
laplasz

Chính xác thì chúng ta đang làm gì khi xóa hình ảnh linux?
Menelaos Bakopoulos

4
Ok, điều này đã được trả lời 100 lần (và trong chủ đề này), nhưng tôi thấy thật kỳ lạ khi được nâng cấp 160 lần, bởi vì: sudo apt-get clean Nó sẽ - loại bỏ các gói tất cả các bản sao cục bộ của các gói mà bạn có thể có tải về khi thực hiện cài đặt + nâng cấp. Điều này sẽ gần như làm trống thư mục / var / cache / apt / archives. ... Vì vậy, lần tới khi bạn chạy, sudo apt-get updatesẽ tải xuống lại mọi thứ (đã có). Chỉ cần một cái đầu lên! .. :)
Nostromov

168
  • hiển thị 10 thư mục con lớn nhất trong thư mục hiện tại.

    du -sk * | sort -nr | head -10
    
  • sử dụng filelight hoặc kDirStat để xem không gian đĩa sẽ hiển thị ở đâu

  • kiểm tra nếu bạn có hạt nhân cũ để xóa

    ls -lh /boot
    
  • gói làm sạch

    sudo apt-get autoremove
    sudo apt-get autoclean
    

    xem danh sách tất cả các gói được cài đặt, sắp xếp theo kích thước. Nếu bạn thấy một cái gì đó lớn và không sử dụng nó - gỡ cài đặt nó

    dpkg-query -W --showformat='${Installed-Size} ${Package}\n' | sort -nr | less
    
  • làm sạch các tập tin ngôn ngữ không sử dụng với các bản dịch (có rất nhiều trong số chúng)

    sudo apt-get install localepurge
    
  • kiểm tra nội dung của / var / tmp /

    du -sh /var/tmp/
    
  • kiểm tra cũng

    man deborphan
    
  • Tìm kiếm các tập tin lớn:

    find / -type f -size +1024k
    

    hoặc là

    find / -size +50000  -exec ls -lahg {} \;
    
  • gói cài đặt lớn

    dpigs
    

đây là một phần của gói: debian-goodies


4
Để tìm các tệp lớn tôi đề xuất ncdu, cung cấp một cách nhanh chóng để xem thư mục nào đang sử dụng dung lượng ổ đĩa của bạn
rubo77

1
kDirStatđược thay thế bằngbaobab
rubo77

17

Tôi vừa giải phóng gần 2 hợp đồng biểu diễn bằng cách xóa các tệp cũ và tệp tiêu đề:

sử dụng

uname -r

để kiểm tra phiên bản hiện tại của bạn, sau đó

dpkg -l linux-image-* linux-headers-*

để xem tất cả các tập tin nhân và tiêu đề cũ, sau đó

sudo apt-get remove linux-image-<XYZ> linux-headers-<XYZ>

các apt-get removelệnh hỗ trợ kí tự, vì vậy bạn có thể làm apt-get remove linux-image 3.0.* linux-headers-3.0.*ví dụ, để thoát khỏi nhiều cùng một lúc.

Hãy chắc chắn rằng bạn không giết bỏ kernel hiện tại! Và có thể giữ một hoặc hai phiên bản cũ, chỉ trong trường hợp ... nhưng không phải là 10 hoặc 20!


Đó là một chút về ký tự đại diện? Trước khi sử dụng nó, tôi sẽ kiểm tra lại vì tôi đã thử và tôi nhận được nhiều hơn tôi muốn. Có thể (thậm chí có khả năng) rằng tôi đã nhồi nhét theo một cách nào đó nhưng tôi không biết làm thế nào và tôi đã mất nhiều tiêu đề hơn tôi muốn.
glaucon

Các ký tự đại diện là các ký tự đại diện regex chứ không phải là các khối.
Chai T. Rex

13

Đừng quên Thùng rác.

nhập mô tả hình ảnh ở đây


Hoặc từ dòng lệnh:

rm -r ~/.local/share/Trash/info/ && rm -r ~/.local/share/Trash/files/  

11

Tôi thực sự khuyên bạn nên chương trình BleachBit, chương trình giúp dọn dẹp mọi thứ trên Ubuntu.

Cài đặt nó bằng lệnh sau:

sudo apt-get install bleachbit


11

Gỡ cài đặt các gói lớn mà bạn không sử dụng

Một số gói có thể khá lớn. Một cách thuận tiện để tìm những thứ này là sử dụng dpigs. Nó không được cài đặt theo mặc định nhưng có thể được tìm thấy trong debian-goodies( dự án GitHub )

sudo apt-get install debian-goodies

Sau đó:

$ dpigs
419576 texlive-latex-extra-doc
204112 nvidia-319
175463 google-chrome-stable
141058 linux-image-extra-3.11.0-15-generic
113173 libreoffice-core
104822 valgrind
102322 qt4-doc
93337 blender
91105 texlive-pstricks-doc
90517 libboost1.53-dev

Có một vài tùy chọn:

-n, --lines=N
  Display the N largest packages on the system (default 10).
-s, --status=status-file
  Use status-file instead of the default dpkg status file.
-S, --source
  Display the largest source packages of binary packages installed
  on the system.
-H, --human-readable
  Display package sizes in human-readable format (like ls -lh or du -h)
-h, --help
  Display this message.

10

Tự động xóa tất cả các phiên bản kernel cũ

Chú ý: Nếu bạn vừa nâng cấp kernel, hãy khởi động lại trước khi xóa các phiên bản cũ hơn!

Hãy nhớ kiểm tra loại kernel nào bạn đang sử dụng:

uname -r

Sau đó là root:

sudo apt-get remove --purge $(dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d')

đọc chủ đề đó để được an toàn không loại bỏ các hạt nhân cần thiết với lệnh này!


8

Nếu bạn sử dụng UFW, hãy kiểm tra thư mục nhật ký. Trên một trong những máy của tôi, UFW đã tạo ra 8Gb nhật ký trong một vài ngày.

Bạn cũng có thể làm trống bộ đệm apt với:

sudo apt-get clean

Tôi có thể tìm thấy tệp nhật ký UfW không?
Người học việc tò mò

8

Hãy thử sử dụng BleachBit ( nằm ở sourceforge ). Nó là một chương trình tuyệt vời. ý tưởng cơ bản là nó nhanh chóng giải phóng không gian đĩa và loại bỏ rất nhiều rác được ẩn trong hệ thống. Có khoảng 70 ứng dụng mà nó có thể nhận ra và xóa sạch. Ngoài ra còn có khả năng sử dụng nó để "xóa sạch" không gian đĩa trống. Tôi nghĩ về nó như CCleaner từ windows chỉ dành cho linux.


3
Lưu ý rằng câu hỏi đặc biệt yêu cầu các công cụ máy chủ và đây là chương trình máy tính để bàn (yêu cầu hiển thị X).
Ryre

Công cụ tốt nhất cho đến bây giờ!
Roger

8

Kiểm tra số lượng lớn các tệp nhật ký quá:

sudo du -h /var/log

Hoặc như rubo77 chỉ ra trong phần thưởng, bạn có thể sử dụng công cụ sử dụng đĩa NCurses:

sudo ncdu /var/log

lệnh tiện dụng liệt kê kích thước tệp chứ không phải "số lượng tệp nhật ký"
dogmatic69

hoặc sử dụngsudo ncdu /var/log
rubo77

@ rubo77, cảm ơn, đó là một công cụ thực sự tốt đẹp!
Drew Noakes

4

Đầu tiên, có một công cụ để liệt kê tất cả các thư mục và tệp lớn. Chỉ cần nhập 'Baobab' vào trình khởi chạy. Bằng cách xóa các thư mục và tệp bạn không cần, bạn sẽ có thêm dung lượng.


Sau đó, có một chương trình để loại bỏ các tập tin kép. Chương trình được gọi fslint. Cài đặt nó bằng cách nhập

sudo apt-get install fslint

trong một nhà ga.

hoặc đồ họa

Cài đặt fslint qua trung tâm phần mềm


Bạn cũng có thể xóa bộ đệm gói với

sudo apt-get autoclean
sudo apt-get clean
sudo apt-get autoremove

Bước thứ tư là loại bỏ các mục Kernel cũ. Bạn có thể làm điều này bằng cách cài đặt và mở Synaptic. Trong Synaptic, tìm kiếm các mục Kernel cũ (mọi mục Kernel được hiển thị trong GRUB ngoại trừ mới nhất) và xóa nó.


Một bước tốt là loại bỏ bộ đệm ứng dụng. Làm điều này bằng cách cài đặt và chạy bleachbit:

sudo apt-get install bleachbit

hoặc đồ họa

Cài đặt Bleachbit thông qua trung tâm phần mềm

Quan trọng: Đã xóa bộ nhớ cache!


Bước cuối cùng là chống phân mảnh hệ thống tập tin. Làm như sau cho việc này:

cd $HOME
git clone git://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git
cd e2fsprogs
./configure
make

Với các lệnh này, bạn tải xuống và biên dịch e2fspross. (Nếu bạn hoặc cộng đồng có cách cài đặt chương trình tốt hơn, vui lòng chỉnh sửa!)

Cũng đảm bảo rằng đã git-coređược cài đặt. Nếu không, thực thi:

sudo apt-get install git-core 

hoặc sử dụng Trung tâm phần mềm Cài đặt git-core thông qua trung tâm phần mềm

Bây giờ bạn có thể chạy chương trình với:

cd $HOME/e2fsprogs/misc
./e4defrag /dev/sda1    #defragment /dev/sda1
./e4defrag -v /dev/sda1 # verbose output
./e4defrag -c /dev/sda1 # see overview of fragmentation status

Thay thế / dev / sda1 bằng hệ thống tệp hoặc thư mục / tệp bạn muốn. Lưu ý rằng để chống phân mảnh một thiết bị (chẳng hạn như ổ cứng), bạn cần có đặc quyền root, nhưng không phải cho các tệp của riêng bạn.


Nguồn (tiếng Đức): tại đây


Wow, xóa các phiên bản linux-title và linux-image cũ đã giải phóng khoảng một gig rưỡi trong bản cài đặt 10.04 của tôi. Fslint là một phát hiện tuyệt vời là tốt. Cảm ơn.
braddock

Thay vì baobab, bạn cũng có thể sử dụng công cụ dòng lệnh ncdu để tìm các thư mục và tệp lớn:sudo apt-get install ncdu
rubo77

4

kịch bản sạch hơn

Kịch bản này sẽ thực thi các khối lớn nhất trên bàn điều khiển:

  • Làm sạch bộ đệm apt
  • Xóa các tệp cấu hình còn lại khỏi các gói .deb đã gỡ cài đặt (xảy ra nếu bạn không sử dụng --purgechuyển đổi với apt-get)
  • Xóa mọi kernel trừ cái bạn đang sử dụng
  • Làm trống các thùng rác của mọi người dùng (bao gồm cả root)

tạo một tệp có nội dung này và cung cấp cho nó quyền thực thi:

#!/bin/bash
# Adapted from 71529-ubucleaner.sh - http://www.opendesktop.org/CONTENT/content-files/71529-ubucleaner.sh

OLDCONF=$(dpkg -l|grep "^rc"|awk '{print $2}')
CURKERNEL=$(uname -r|sed 's/-*[a-z]//g'|sed 's/-386//g')
LINUXPKG="linux-(image|headers|ubuntu-modules|restricted-modules)"
METALINUXPKG="linux-(image|headers|restricted-modules)-(generic|i386|server|common|rt|xen)"
OLDKERNELS=$(dpkg -l|awk '{print $2}'|grep -E $LINUXPKG |grep -vE $METALINUXPKG|grep -v $CURKERNEL)
YELLOW="\033[1;33m"; RED="\033[0;31m"; ENDCOLOR="\033[0m"

if [ $USER != root ]; then
  echo -e $RED"Error: must be root! Exiting..."$ENDCOLOR
  exit 0
fi

echo -e $YELLOW"Cleaning apt ..."$ENDCOLOR
aptitude clean
apt-get autoremove
apt-get autoclean

echo -e $YELLOW"Those packages were uninstalled without --purge:"$ENDCOLOR
echo $OLDCONF
#apt-get purge "$OLDCONF"  # fixes the error in the original script
for PKGNAME in $OLDCONF ; do  # a better way to handle errors
  echo -e $YELLOW"Purge package $PKGNAME"
  apt-cache show "$PKGNAME"|grep Description: -A3
  apt-get -y purge "$PKGNAME"
done

echo -e $YELLOW"Removing old kernels..."$ENDCOLOR
echo current kernel you are using:
uname -a
aptitude purge $OLDKERNELS

echo -e $YELLOW"Emptying every trashes..."$ENDCOLOR
rm -rf /home/*/.local/share/Trash/*/** &> /dev/null
rm -rf /root/.local/share/Trash/*/** &> /dev/null

echo -e $YELLOW"Script Finished!"$ENDCOLOR

Chuyển thể từ 71529-ubucleaner.sh


tìm các thư mục và gói lớn

Một số công cụ sẽ giúp bạn tìm các thư mục và gói lớn:

sudo apt-get install ncdu debian-goodies deborphan

sudo ncdu /    # lists all folders by size on the console (like the gui `baobab`)
dpigs -H       # shows large packages that you don't use
man deborphan  # finds packages that have no packages depending on them
deborphan --guess-all --libdevel | xargs apt-get -s purge

địa phương

Sử dụng localepurge để gỡ cài đặt các ngôn ngữ không sử dụng trong hệ thống của bạn:

sudo apt-get install localepurge

xóa ảnh snapd cũ

LANG=c snap list --all | awk '/disabled/{print $1, $3}' | \
    while read snapname revision; do \
        snap remove "$snapname" --revision="$revision"; \
    done

thuốc tẩy

Một công cụ GUI đồ họa tuyệt vời để phù hợp với mọi nhu cầu:

sudo apt-get install bleachbit

xóa trang và tài liệu

Ngoài ra, bạn có thể xóa các trang và tài liệu như được mô tả trong Ubuntu Wiki :

Tạo một tập tin /etc/dpkg/dpkg.cfg.d/01_nodoc chỉ định các bộ lọc mong muốn. Thí dụ:

path-exclude /usr/share/doc/*
# if we need to keep copyright files for legal reasons:
# path-include /usr/share/doc/*/copyright
path-exclude /usr/share/man/*
path-exclude /usr/share/groff/*
path-exclude /usr/share/info/*
# lintian stuff is small, but really unnecessary
path-exclude /usr/share/lintian/*
path-exclude /usr/share/linda/*

Xóa cùng một tập tin và thư mục trong postinst của dự án-config. Thí dụ:

echo "Removing documentation..."
# if we need to keep copyright files for legal reasons:
# find /usr/share/doc -depth -type f ! -name copyright | xargs rm || true
# else:
find /usr/share/doc -depth -type f | xargs rm || true
rm -rf /usr/share/man/* /usr/share/groff/* /usr/share/info/* /usr/share/lintian/* /usr/share/linda/* /var/cache/man/*

Tùy thuộc vào trường hợp của bạn, bạn có thể tìm thấy một số tùy chọn khác trong tập lệnh này: github.com/box-cutter/debian-vm/blob/master/script/minizes.sh
rubo77

Tôi nhận được một cảnh báo khi thực thi đoạn script này rằng tôi sắp xóa kernel có cùng số phiên bản khi tôi đang chạy.
Barshe De Troyer

kiểm tra kernel hiện tại bạn đang sử dụng uname -a. Trong trường hợp bạn vừa thực hiện một apt-get ugrade trước đó và có một kernel mới, đây có thể là nguyên nhân, rằng chiếc kurnel hiện tại bạn đang sử dụng không phải là cái mới nhất được cài đặt? Thực hiện lại sau đó trước khi bắt đầu tập lệnh này
rubo77

Tập lệnh
minim.sh

3

Thư mục '/ tmp' không bao giờ được dọn sạch bằng tay trừ khi thực sự cần thiết (ví dụ: một ứng dụng đã đóng không tự dọn sạch).

Bạn có thể tìm kiếm nơi không gian có thể được lấp đầy bằng cách sử dụng lệnh 'du'; thường là những nơi quan tâm nằm trong '/ var'. Để đặt tên cho hai nghi phạm thông thường '/ var / log' và '/ var / cache'. Mặc dù tôi đã có một số người dùng cài đặt tiện ích sao lưu và không bao giờ nhận ra rằng nó tạo ra GB sao lưu gia tăng trong '/ var / backup' tích tụ trong một tuần hoặc tháng để lấp đầy toàn bộ dung lượng đĩa.


Cảm ơn bạn!. Như bạn đã nói, tôi có một số không gian bị chiếm dụng trong MB dưới / var / cache và tự hỏi làm thế nào để loại bỏ các tệp không cần thiết.
dùng3215


1

Nếu bạn đã xóa rất nhiều rác nhưng dung lượng ổ đĩa dường như không được dọn sạch, chỉ cần khởi động lại Ubuntu. Hoặc nếu bạn không muốn khởi động lại, chỉ cần chạy lệnh như trong câu hỏi tương tự .

sudo service rsyslog restart

0

Khi tôi cần tạo thêm không gian trống trên máy chủ, tôi sử dụng lệnh này. Nó tìm thấy tất cả các tệp lớn hơn 50 MB và "du -h" tạo danh sách các tệp tốt hơn và "sort -n" sau khi đường ống tạo danh sách số được sắp xếp theo kích thước tệp.

find / -size +50M -type f -exec du -h {} \; | sort -n

1
ncdu /Thay vào đó, bạn nên sử dụng bụi tốt hơn
rubo77

1
Cho du -h, sử dụng sort -hlà tốt.
muru

-3
uname -r 

(để xem của bạn)

apt-get remove linux-image 3.0.* 

(phiên bản cũ hơn của bạn). Nó đã cho tôi 600mb giải phóng không gian.


3
Bị từ chối vì với các lệnh như thế này nếu không cẩn thận, bạn có thể loại bỏ kernel mới nhất (hoặc thậm chí là tất cả các kernel).
ndemou
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.