Bagaimana cara membebaskan ruang disk?

181

Server cloud Ubuntu saya hanya menyisakan 900MB ruang disk.

Saya hanya akan mengosongkan direktori / tmp dan bertanya-tanya apakah ada lokasi lain untuk dibersihkan.

pengguna3215
sumber
1
Coba ini juga: dpkg -l | grep ^ rc | cut -d '' -f3 | xargs sudo apt-get purge -y
crsuarezf
Jika Anda menggunakan buruh pelabuhan: docs.docker.com/config/pruning
Gerard Carbó
untuk banyak kasus:sudo docker container prune -f && sudo docker image prune -f
smftr

Jawaban:

104
sudo apt-get autoremove

Itu bisa membersihkan banyak kesalahan (kernel lama, dll) yang telah diganti. Anda dapat melakukan hal serupa di Synaptic (muatkan dan pilih tombol status dan kemudian opsi Auto-removeable).

Oli
sumber
apakah itu tidak akan mempengaruhi aplikasi yang sedang berjalan seperti jika itu menghapus paket yang diperlukan di mana aplikasi tergantung?
user3215
1
Tidak. Autoremove mencari paket-paket yatim, yaitu paket-paket yang Anda sendiri tidak instal sendiri (yang bertanda otomatis) dan yang tidak memiliki dependensi. Jika Anda menggunakannya aptitudesebagai gantinya apt-get, itu dapat membersihkan saat Anda pergi tetapi cukup umum untuk instalasi yang lebih lama untuk mengumpulkan rakit kernel yang diinstal sebagai pembaruan keamanan keluar.
Oli
1
Mengetik di komentar terakhir saya. Saya bermaksud mengatakan bahwa paket yatim adalah paket yang tidak bergantung, bukan paket yang "tidak memiliki dependensi". Mereka mungkin memiliki dependensi dan jika mereka hanya ada untuk paket yatim itu, mereka juga akan dihapus. Beberapa kali (dengan pohon ketergantungan sangat dalam) dibutuhkan beberapa perbaikan otomatis untuk membersihkannya.
Oli
5
Meskipun perintah di atas tentu berguna, itu tidak akan , seperti yang disebutkan, menghapus kernel lama. Itu harus dilakukan secara manual atau dengan alat tambahan seperti Ubuntu Tweak.
pemrograman
1
@nyarlathotep Ini akan menghapus file header kernel, yang sekilas mungkin membuat orang berpikir itu menghapus kernel lama - kernel lama tetap ada, (coba dpkg --get-selections | grep linux-image).
drevicko
211

Untuk menghapus paket yang diunduh (.deb) sudah diinstal (dan tidak lagi diperlukan)

sudo apt-get clean

Untuk menghapus semua arsip yang tersimpan dalam cache Anda untuk paket yang tidak dapat diunduh lagi (dengan demikian paket yang tidak lagi ada di repositori atau yang memiliki versi yang lebih baru di repositori).

sudo apt-get autoclean

Untuk menghapus paket yang tidak perlu (Setelah menghapus aplikasi, mungkin ada paket yang tidak Anda perlukan lagi)

sudo apt-get autoremove

Untuk menghapus versi kernel lama

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

Jika Anda tidak tahu versi kernel mana yang harus dihapus

dpkg --get-selections | grep linux-image

Sumber: Limpiando Ubuntu : comandos y programas (actualización) ( diterjemahkan google )

DrKenobi
sumber
1
Berlari cleanmembebaskan sedikit ruang. Segera setelah itu, saya berlari autocleandan ruang kosong saya turun 45MB. Berlari cleanlagi merilis ruang ekstra ini.
Drew Noakes
8
Saya menghapus semua gambar linux yang terdaftar dpkg --get-selections | grep linux-imageyang menyebabkan saya kesalahan boot - ubuntu menghilang dari menu boot grub - jawaban ini memperbaiki masalah - jangan hapus gambar terbaru
laplasz
Apa sebenarnya yang kita lakukan ketika kita menghapus gambar linux?
Menelaos Bakopoulos
4
Ok, ini sudah dijawab 100 kali (& di thread ini juga), tapi saya merasa benar-benar aneh untuk upvoted 160 kali, karena: sudo apt-get clean Ini akan -simply- menghapus paket semua salinan setempat dari paket yang mungkin Anda miliki diunduh saat melakukan instalasi + peningkatan. Ini hampir akan mengosongkan direktori / var / cache / apt / arsip. ... Jadi pada saat Anda menjalankan sudo apt-get updateitu akan -men-download ulang semuanya (sudah ada). Hanya kepala-up! .. :)
Nostromov
168
  • tampilkan 10 subdir terbesar di dir saat ini.

    du -sk * | sort -nr | head -10
    
  • gunakan filelight atau kDirStat untuk melihat di mana ruang disk akan secara visual

  • periksa apakah Anda memiliki kernel lama untuk dihapus

    ls -lh /boot
    
  • paket pembersih

    sudo apt-get autoremove
    sudo apt-get autoclean
    

    lihat daftar semua paket yang diinstal, diurutkan berdasarkan ukuran. Jika Anda melihat sesuatu yang besar dan tidak menggunakannya - hapus instalannya

    dpkg-query -W --showformat='${Installed-Size} ${Package}\n' | sort -nr | less
    
  • bersihkan file bahasa yang tidak digunakan dengan terjemahan (ada banyak dari mereka)

    sudo apt-get install localepurge
    
  • periksa konten / var / tmp /

    du -sh /var/tmp/
    
  • periksa juga

    man deborphan
    
  • Cari file besar:

    find / -type f -size +1024k
    

    atau

    find / -size +50000  -exec ls -lahg {} \;
    
  • paket besar yang diinstal

    dpigs
    

ini adalah bagian dari paket: debian-goodies

jet
sumber
4
Untuk menemukan file besar saya sarankan ncdu, yang menyediakan cara cepat untuk melihat direktori apa yang menggunakan ruang disk Anda
rubo77
1
kDirStatdigantikan olehbaobab
rubo77
17

Saya baru saja membebaskan hampir 2 gigs dengan menghapus file kernel dan header lama:

menggunakan

uname -r

untuk memeriksa versi Anda saat ini, lalu

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

untuk melihat semua kernel dan file header lama, lalu

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

apt-get removeperintah ini mendukung wildcard, jadi Anda dapat melakukannya apt-get remove linux-image 3.0.* linux-headers-3.0.*misalnya, untuk menghilangkan banyak kartu sekaligus.

Pastikan Anda tidak membunuh menghapus kernel saat ini tentu saja! Dan mungkin menyimpan satu atau dua versi lama, untuk berjaga-jaga ... tapi tidak 10 atau 20!

hwjp
sumber
Itu sedikit tentang wildcard? Sebelum memanfaatkannya, saya akan mengeceknya karena saya mencobanya dan saya mendapatkan lebih dari yang saya inginkan. Mungkin (mungkin bahkan mungkin) bahwa saya memasukkan beberapa cara tetapi saya tidak tahu bagaimana namun saya kehilangan lebih banyak header daripada yang saya inginkan.
glaucon
Wildcard adalah regex wildcard daripada global.
Chai T. Rex
13

Jangan lupa Kosongkan Sampah.

masukkan deskripsi gambar di sini


Atau dari baris perintah:

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

Saya sangat merekomendasikan Anda program BleachBit, yang membersihkan semuanya di Ubuntu.

Instal menggunakan perintah berikut:

sudo apt-get install bleachbit

Gustavo Goes
sumber
11

Copot paket besar yang tidak Anda gunakan

Beberapa paket bisa sangat besar. Cara mudah untuk menemukan ini adalah dengan menggunakannya dpigs. Ini tidak diinstal secara default tetapi dapat ditemukan di debian-goodies( proyek GitHub )

sudo apt-get install debian-goodies

Kemudian:

$ 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

Ada beberapa opsi:

-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.
Drew Noakes
sumber
10

Hapus semua versi kernel lama secara otomatis

Perhatian: Jika Anda baru saja memutakhirkan kernel, reboot sebelum menghapus versi yang lebih lama!

Ingatlah untuk memeriksa kernel yang Anda gunakan ketik:

uname -r

Kemudian sebagai 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')

baca utas itu agar aman bukan untuk menghapus kernel yang dibutuhkan dengan perintah ini!

rubo77
sumber
8

Jika Anda menggunakan UFW, periksa folder log. Di salah satu mesin saya, UFW menghasilkan 8Gb log dalam beberapa hari.

Anda juga dapat mengosongkan cache apt dengan:

sudo apt-get clean
lovinglinux
sumber
Apakah saya dapat menemukan file log UfW?
Curious Apprentice
8

Coba gunakan BleachBit ( terletak di sourceforge ). Ini adalah program yang bagus. ide dasarnya adalah bahwa ia dengan cepat membebaskan ruang disk dan menghilangkan banyak sampah yang tersembunyi di sistem. Ada sekitar 70 aplikasi yang dapat dikenali dan dibersihkan. Ada juga kemampuan untuk menggunakannya untuk "menghapus" ruang disk kosong. Saya menganggapnya sebagai CCleaner dari windows hanya untuk linux.

RunningUtes
sumber
3
Perhatikan bahwa pertanyaan itu secara spesifik menanyakan alat server dan ini adalah program desktop (memerlukan tampilan X).
Ryre
Alat terbaik sampai sekarang!
Roger
8

Periksa sejumlah besar file log juga:

sudo du -h /var/log

Atau seperti yang ditunjukkan rubo77 dalam pujian, Anda bisa menggunakan alat penggunaan disk NCurses:

sudo ncdu /var/log
Drew Noakes
sumber
perintah praktis yang berisi daftar ukuran file dan bukan "jumlah file log"
dogmatic69
atau gunakansudo ncdu /var/log
rubo77
@ rubo77, terima kasih, itu alat yang sangat bagus!
Drew Noakes
4

Pertama, ada alat untuk mendaftar semua folder dan file besar. Cukup ketik 'Baobab' ke dalam peluncur. Dengan menghapus folder dan file Anda tidak perlu Anda mendapatkan lebih banyak ruang.


Lalu, ada program untuk menghapus file ganda. Program ini disebut fslint. Instal dengan memasukkan

sudo apt-get install fslint

di Terminal.

atau secara grafis

Instal fslint melalui pusat perangkat lunak


Anda juga dapat menghapus cache paket

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

Langkah keempat adalah menghapus entri Kernel lama. Anda dapat melakukan ini dengan menginstal dan membuka Synaptic. Dalam Synaptic, cari entri Kernel lama (setiap entri Kernel yang ditampilkan dalam GRUB kecuali yang terbaru) dan hapus.


Satu langkah yang baik adalah menghapus cache aplikasi. Lakukan ini dengan menginstal dan menjalankan bleachbit:

sudo apt-get install bleachbit

atau secara grafis

Instal bleachbit melalui pusat perangkat lunak

Penting: Cache yang dihapus tidak dapat dipulihkan!


Langkah terakhir adalah men-defrag sistem file. Lakukan hal berikut untuk ini:

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

Dengan perintah ini, Anda mengunduh dan menyusun e2fsprogs. (Jika Anda atau komunitas mendapatkan cara yang lebih baik untuk menginstal program, harap edit!)

Pastikan juga git-coresudah terpasang. Jika tidak, jalankan:

sudo apt-get install git-core 

atau menggunakan Pusat Perangkat Lunak Instal git-core melalui pusat perangkat lunak

Sekarang Anda dapat menjalankan program dengan:

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

Ganti / dev / sda1 dengan sistem file atau folder / file yang Anda inginkan. Perhatikan bahwa untuk men-defrag perangkat (seperti HDD) Anda memerlukan hak akses root, tetapi tidak untuk file Anda sendiri.


Sumber (Jerman): di sini

slashcrack
sumber
Wow, menghapus versi linux-header dan linux-image lama dibebaskan sekitar satu setengah manggung pada instalasi 10,04 saya. fslint juga merupakan penemuan yang bagus. Terima kasih.
braddock
Alih-alih baobab Anda juga dapat menggunakan alat commandline ncdu untuk menemukan folder dan file besar:sudo apt-get install ncdu
rubo77
4

skrip pembersih

Script ini akan mengeksekusi potongan terbesar di konsol:

  • Bersihkan cache yang tepat
  • Hapus file config yang tersisa dari paket .deb yang dihapus (terjadi jika Anda tidak menggunakan --purgesakelar dengan apt-get)
  • Hapus setiap kernel kecuali yang Anda gunakan
  • Kosongkan sampah dari setiap pengguna (termasuk root)

buat file dengan konten ini dan berikan hak yang dapat dieksekusi:

#!/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

Diadaptasi dari 71529-ubucleaner.sh


temukan folder dan paket besar

Beberapa alat yang akan membantu Anda menemukan folder dan paket besar:

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

LocalPurge

Gunakan localepurge untuk menghapus instalasi bahasa yang tidak digunakan di sistem Anda:

sudo apt-get install localepurge

hapus gambar snapd lama

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

bleachbit

Alat GUI grafis yang bagus untuk memenuhi semua kebutuhan:

sudo apt-get install bleachbit

hapus halaman manual dan dokumentasi

Selain itu Anda dapat menghapus halaman manual dan dokumentasi seperti yang dijelaskan dalam Wiki Ubuntu :

Buat file /etc/dpkg/dpkg.cfg.d/01_nodoc yang menentukan filter yang diinginkan. Contoh:

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/*

Hapus kumpulan file dan direktori yang sama di post-proyek config. Contoh:

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/*
rubo77
sumber
Bergantung pada kasus Anda, Anda dapat menemukan beberapa opsi lain dalam skrip ini: github.com/box-cutter/debian-vm/blob/master/script/minimize.sh
rubo77
Saya mendapat peringatan yang mengeksekusi skrip ini bahwa saya akan menghapus kernel dengan nomor versi yang sama seperti yang saya jalankan.
Christophe De Troyer
periksa kernel saat ini yang Anda gunakan uname -a. Jika Anda baru saja melakukan apt-get ugrade sebelumnya dan mendapatkan kernel baru, ini bisa menjadi penyebabnya, bahwa kurnel saat ini yang Anda gunakan bukan yang terbaru yang diinstal? Lakukan pemotretan kembali sebelum memulai skrip ini
rubo77
Skrip dimin.sh
rubo77
3

Direktori '/ tmp' tidak boleh dibersihkan secara manual kecuali benar-benar diperlukan (yaitu: aplikasi tertutup tidak membersihkan sendiri).

Anda dapat mencari di mana ruang mungkin diisi menggunakan perintah 'du'; biasanya tempat-tempat menarik ada di dalam '/ var'. Untuk menyebutkan dua tersangka biasa '/ var / log' dan '/ var / cache'. Meskipun saya sudah memiliki beberapa pengguna yang menginstal utilitas cadangan dan tidak pernah menyadari bahwa itu menciptakan GBs incremental backup di '/ var / backup' yang dibangun selama seminggu atau sebulan untuk mengisi seluruh ruang disk.

ibuclaw
sumber
Terima kasih!. Seperti yang Anda katakan saya memiliki beberapa ruang yang digunakan dalam MB di bawah / var / cache dan bertanya-tanya bagaimana cara menghapus file yang tidak perlu.
user3215
2

Gunakan ubuntu-tweak untuk membersihkan.

itu membersihkan semua *. deb yang diunduh ke aplikasi instalasi.

mwm
sumber
tidak bekerja dengan KDE
rubo77
1

Jika Anda sudah menghapus banyak sampah tetapi ruang disk sepertinya tidak dibersihkan, reboot saja ubuntu. Atau jika Anda tidak ingin reboot, jalankan saja perintah seperti pada pertanyaan serupa .

sudo service rsyslog restart
Maxim Yefremov
sumber
0

Ketika saya perlu membuat lebih banyak ruang kosong di server saya menggunakan perintah ini. Ia menemukan semua file lebih besar dari 50 MB dan "du-h" membuat daftar file yang lebih baik dan "sort -n" setelah pipa membuat daftar numerik diurutkan berdasarkan ukuran file.

find / -size +50M -type f -exec du -h {} \; | sort -n
zorbon.cz
sumber
1
Anda akan lebih baik menggunakan debu ncdu /saja
rubo77
1
Diberikan du -h, gunakan sort -hjuga.
muru
-3
uname -r 

(untuk melihat milikmu)

apt-get remove linux-image 3.0.* 

(versi lama Anda). Ini memberi saya ruang bebas 600mb.

adi kwok
sumber
3
Diturunkan karena dengan perintah seperti ini jika Anda tidak berhati-hati, Anda dapat menghapus kernel terbaru (atau bahkan semua kernel).
ndemou