Bagaimana cara meminimalkan penggunaan ruang disk

29

Salah satu mesin saya adalah EeePC Surf 2GB , netbook yang rapi dengan sumber daya yang sangat terbatas. Sangat terbatas sehingga sekarang, saya memiliki ruang kosong 22MB tersisa.

Di atasnya, saya menjalankan Arch Linux dengan Openbox DE dan sejumlah aplikasi yang diperlukan agar berfungsi sebagai PC mobile.

Metode apa yang tersedia untuk menghilangkan ruang bekas yang tidak perlu?

Stefan
sumber
@Stefan berapa banyak RAM yang dimilikinya? (hanya ingin tahu apakah itu layak untuk memasukkan hal-hal seperti / tmp dalam ram)
xenoterracide
1
@Stefan juga ... jika Anda bersedia untuk pergi ke jalur percobaan ... btrfs seharusnya mendukung sistem file terkompresi (atau akan?) Mungkin memeriksanya
xenoterracide
@stefan juga du -sh /untuk melihat di mana sebagian besar ruang Anda digunakan.
xenoterracide
@ xeno, 490MB RAM, dan itu du -sh /*?
Stefan
@Stefan jadi itu ... oops ... Anda dapat cd /dan berlari du -sh *dan menelusuri ... (Anda tidak benar-benar memiliki cukup ram untuk menyimpan barang-barang di dalamnya)
xenoterracide

Jawaban:

19

Inilah beberapa poin yang bisa Anda mulai:

  • Lihat paket yang diinstal pada sistem Anda dengan pacman -Qdan hapus yang tidak Anda butuhkan. Awal yang baik adalah menambahkan -t sakelar:

    Batasi atau filter output ke paket yang tidak diperlukan oleh paket yang diinstal saat ini.

  • Bersihkan cache paket pacman dengan pacman -Sc

  • Selalu gunakan pacman -Rsuntuk menghapus juga dependensi paket yang tidak digunakan.

  • Untuk menemukan "file besar" dan folder yang menggunakan sebagian besar disk, tambahan yang bagus duadalah xdiskusage. Alat kecil ini memungkinkan Anda menelusuri sistem file dengan cepat dan melihat representasi grafis dari penggunaan disk folder.

echox
sumber
pacman -ccuntuk membersihkan seluruh cache termasuk paket yang diinstal saya pikir. Biasanya tidak disarankan karena Anda mungkin menginginkannya sebagai cadangan nanti.
xenoterracide
@ xeno, saya sudah memasang direktori pada desktop saya --cachedir, jadi saya tidak perlu menyimpan file pkg.
Stefan
3
Untuk membersihkan ruang /, saya merasa pacgraphsangat berguna. Ini dapat mengurutkan paket yang Anda instal berdasarkan ukuran, sehingga Anda dapat lebih memprioritaskan apa yang masuk akal untuk dihapus. (Ia bahkan dapat menggambar grafik ketergantungan SVG, tetapi berguna hanya dari baris perintah.)
Anko
4
ncduadalah alternatif baris perintah keren untuk xdiskusage. Baobab sejauh ini adalah aplikasi grafis terbaik untuk tujuan ini.
Zaz
10

PERINGATAN: Ide-ide ini hanya untuk pengguna yang berpengalaman dalam Linux secara keseluruhan dan Arch Linux.

Jika Anda ingin melangkah ke wilayah berbahaya, Anda dapat mengecilkan pemasangan Arch dasar menjadi kurang dari 500MB diinstal. Ini memerlukan melakukan beberapa hal yang sangat berbahaya:

  1. menghapus semua lokal yang tidak perlu (sudah dibahas)
  2. menghapus file firmware yang tidak diperlukan untuk menjalankan sistem Anda (dari /usr/lib/firmware)
  3. menghapus modul kernel yang tidak diperlukan untuk menjalankan sistem Anda (dari /usr/lib/modules/...)
  4. menghapus .afile apa pun di /usr/lib(hanya jika Anda tidak pernah menggunakan sistem untuk mengkompilasi perangkat lunak. catatan: ini termasuk menggunakan makepkg)
  5. menghapus semuanya /usr/include(hanya jika Anda tidak pernah menggunakan sistem untuk mengkompilasi perangkat lunak)
  6. menghapus dokumentasi yang tidak dibutuhkan dari /usr/share/docdan/usr/share/info
  7. (IDE SANGAT BURUK kecuali mungkin untuk server) menghapus halaman manual dari /usr/share/man
  8. (juga ide yang buruk) menghapus deskriptor terminal yang tidak dibutuhkan dari /usr/share/terminfodan file zona waktu yang tidak dibutuhkan dari/usr/share/zoneinfo
  9. (BERBAHAYA) berjalan strip *di semua folder yang berisi binari yang dapat dieksekusi ( /usr/bindan /usr/sbin)
  10. (dalam situasi ekstrim) menggunakan alat seperti upxuntuk mengompresi binari yang lebih besar (binari Samba cocok untuk ini karena mereka cenderung cukup besar karena mereka sering dikompilasi secara statis.) Juga perhatikan bahwa menggunakan upxberarti seluruh biner yang tidak terkompresi harus cocok RAM selama eksekusi, jadi jemu pada sistem dengan RAM rendah.

Sebelum Anda melakukan APA PUN ini, BUAT CADANGAN PENUH sistem Anda. Untungnya, Linux membuat ini relatif mudah - jika Anda dapat memasang dan memasang volume eksternal (misalnya drive USB), Anda dapat melakukan sesuatu seperti cd / && tar -cf /mnt/usb/mySystem.tar /membuat cadangan seluruh sistem.

Sekali lagi, perhatikan bahwa saya tidak benar-benar merekomendasikan melakukan hal di atas (terutama 7 hingga 9) kecuali Anda memiliki pengetahuan, pengalaman dan pemahaman mendalam tentang Linux internal dan Arch Linux . Memainkan hampir semua file yang saya cantumkan dapat merusak sistem dengan cara yang mengerikan, jadi Anda sudah diperingatkan. Jika Anda tidak tahu apakah sistem Anda memerlukan file firmware, modul, dll. Maka lakukan riset sebelum Anda mengacaukannya. (Berhati-hatilah bahwa menghapus modul kernel yang dibutuhkan sistem Anda dapat menghasilkan sistem yang tidak dapat di-boot, atau sistem tanpa dukungan keyboard / kartu jaringan / suara / display / dll., Atau segala macam perilaku yang tidak dapat dijelaskan lainnya.)

Harap perhatikan juga bahwa peningkatan paket apa pun dapat dan akan memulihkan banyak file yang Anda hapus di atas. Jika Anda memutuskan untuk pergi rute ini, Anda mungkin ingin akhirnya skrip penghapusan file yang tidak dibutuhkan dan menjalankan skrip Anda setelah setiap peningkatan paket utama. (Contoh: memutakhirkan kernel akan mengembalikan semua modul kernel serta memutakhirkan melalui dependensi paket linux-firmware yang membawa kembali semua firmware /usr/lib/firmware.)

Akhirnya, awasi terus /var/logkarena file jurnal akan bertambah seiring waktu. Anda dapat menghapus jurnal sebelumnya tetapi tetap menggunakan jurnal saat ini dengan melakukan sesuatu seperti rm *\@*.journaldi folder jurnal Anda.

Saya telah berhasil menjalankan server NAS dari perangkat Disk-on-Module 512MB selama berbulan-bulan menggunakan teknik ini, namun mereka masih belum pingsan. (Saya juga menggunakan LinuxFromScratch untuk membangun proyek serupa hanya dalam penyimpanan 128MB, tapi itu cerita lain ...)


Sunting / Tambah:

Berikut adalah beberapa metode yang dapat Anda gunakan untuk mencoba mendapatkan ruang tambahan:

  • Menyingkirkan libgo. The libgoperpustakaan dilengkapi dengan gcc-libsdan AFAIK hanya digunakan oleh aplikasi yang ditulis dalam bahasa Go. Saya tidak dapat memikirkan aplikasi apa pun yang saya gunakan yang membutuhkan pustaka itu. Di sistem saya ukurannya 40MB. Ketika Anda mencoba langsing, itu banyak ruang. Saya telah menghapusnya dari instalasi "mini" saya tanpa efek buruk pada apa pun yang saya lakukan (tapi sekali lagi, itu saya, YMMV!)

  • Menyusut libicudata.so. Ini 27MB di sistem saya. Ini pada dasarnya satu ton data unicode / lokal dikompresi menjadi objek perpustakaan. Ada alat online yang dapat membuat versi yang lebih kecil dari file ini, tetapi belum diperbarui untuk versi saat ini (dan Anda tidak dapat menggunakan file yang lebih lama dalam rilis yang lebih baru.) Saya belum mencoba melakukan ini dengan tangan, tetapi jika Anda tahu caranya, Anda dapat mencukur sekitar 20-22MB dari file ini.

  • Jika Anda menggunakan Python, Anda dapat menyimpan 37MB atau lebih dengan menghapus testperpustakaan dari python2: rm -r /usr/lib/python2.7/testdan sekitar 66MB dengan menghapus untuk python3: rm -r /usr/lib/python3.6/test.

  • Sekali lagi untuk Python, Anda dapat menyingkirkan .pyofile dan .pyfile. The .pyofile "dioptimalkan" file, tapi Python pernah benar-benar menggunakan mereka. The .pyfile adalah kode sumber baku untuk perpustakaan standar. Satu-satunya file yang biasanya dibaca oleh Python ketika menjalankan kode Python adalah file .pyc(python dikompilasi). cd /usr/lib/python2.7 && find . -name "*.pyo" -exec rm -v {} \;dancd /usr/lib/python3.6 && find . -name "*.pyo" -exec rm -v {} \;

  • Menghapus data lokal yang tidak perlu. Ada paket AUR yang disebut localepurgeyang mengotomatisasi ini. Jika tidak, Anda harus bermain-main /usr/share/locale. Anda harus menyimpan lokal dan locale.alias. Bagi saya di sini di AS, menjaga en_USdan locale.aliasdan menghapus segala sesuatu yang lain mencukur tentang 80MB.

Sekarang, apa yang ingin saya lihat adalah alat yang menganalisis sistem Anda dan menentukan modul kernel yang Anda butuhkan, dan juga file firmware yang Anda butuhkan. Itu akan menjadi cara yang bagus untuk "dengan aman" membersihkan folder-folder itu ...

Atau, mungkin seseorang harus membuat sebuah Arch "distro" yang menggunakan uClibcatau diet-libcatau yang serupa. Itu mungkin proyek musim panas yang menyenangkan. :-)

fdmillion
sumber
2
Saya tertarik untuk melakukan ini juga .. firmware sepertinya merupakan keuntungan terbesar bagi saya, saya mencoba membuat kotak gelandangan kecil sehingga hanya perlu firmware yang diperlukan untuk menjalankan lengkungan di virtualbox ... apakah ada cara mudah untuk menemukan tahu firmware apa yang diperlukan?
Tom B
peringatan: baru saja dicoba upx, itu tidak bisa digunakan dengan semua jenis exectuables, mis: meninggalkan mysqld & mongodb segfaulting
Ayush
3
re: Paket upgrade dapat dan akan memulihkan banyak file yang Anda hapus . Dengan memperluas /etc/pacman.conf dengan NoExtractdefinisi (dapat didefinisikan beberapa kali) Anda dapat menyelesaikan masalah itu secara permanen. Salah satu contoh untuk hanya memperbarui pembaruan driver Realtek nic:NoExtract = usr/lib/firmware/* !usr/lib/firmware/rtl_nic/*
Pro Backup
find /usr/lib/firmware -atime +30akan menemukan file firmware yang tidak diakses dalam 30 hari. Seharusnya aman untuk menghapus file-file itu.
user202729
5

TLDR

journalctl --vacuum-size=100M #remove all logs, only retain 100mb
pacman -Scc #remove all package installation files (obsolete and current)
pacman -S bleachbit
bleachbit -c system.*

Pertama, apa yang besar pada sistem

du -d1 -h / 2>/dev/null | sort -h

Ini menunjukkan daftar daftar direktori terbesar di / Anda dapat melakukan dua level ke bawah:

du -d2 -h / 2>/dev/null | sort -h

Hasil saya adalah:

0       /proc
0       /sys
0       /tmp
12K     /dev
12K     /srv
16K     /lost+found
632K    /run
4.3M    /boot
13M     /opt
15M     /etc
75M     /root
93M     /home
2.4G    /var
3.2G    /usr
221G    /mnt
227G    /

Saya mengabaikan /mnt(karena itu drive eksternal) Dua dirs berdiri dalam pikiran: vardan usr. Mari kita lihat apa yang ada di dalamnya:

du -d1 -h /var /usr 2>/dev/null | sort -h

Kemudian, sedikit lebih dalam:

du -d1 -h /var/log /usr/share /usr/lib /var/cache 2>/dev/null | sort -h

Mari kita mulai dengan log

Saya memiliki 717MB di /var/log.

Saya bukan penggemar menghapus direktori secara acak, jadi mari kita lakukan dengan cara yang bersih:

$ journalctl --disk-usage
Archived and active journals take up 728.7M on disk.

Mari kita tinggalkan hanya 100mb log:

journalctl --vacuum-size=100M
...
Deleted archived journal /var/log/journal/ba5391...b.journal (8.0M).
...
Vacuuming done, freed 616.6M of archived journals on disk.

Info lebih lanjut di sini tentang cara mengkonfigurasi jurnalctl di sini .

Paket

Saya punya 660M /var/cache/pacman. Itu 1.8gb, tapi saya berlari pacman -Scuntuk menghapus paket yang tidak digunakan. Mari kita hapus sisanya:

pacman -Scc

/ usr / share / locale

Banyak pengguna menghapusnya, atau setidaknya membersihkannya. Tapi saya mungkin masalah . Tapi checkout bleachbit (paragraf berikutnya).

Bleachbit

Pembersih otomatis . Akan menghapus banyak hal, tetapi untuk sebagian besar itu adalah lokal.

$ pacman -S bleachbit
$ bleachbit -p system.*
Disk space to be recovered: 488.8MB
$ bleachbit -c system.*

Anda dapat mencari lebih banyak barang untuk dihapus:

bleachbit --list
bleachbit -p thunderbird.*
kabut
sumber
Pada instalasi Arch Linux 64-bit yang minimal, ukuran total yang diinstal dari paket bleachbit adalah 209.70 MiB:Total Installed Size: 209.70 MiB
Pro Backup
1
Tip: jika Anda melakukannya du -xkd1di /direktori, itu tidak akan turun ke mountpoints lainnya.
fdmillion
3

Pada disk 4GB di Eeepc saya dengan Ubuntu, itu membantu untuk menghapus beberapa file lokal (dari / usr / share / locale) dan file bantuan Gnome (dari / usr / share / gnome / help /). Keduanya dipasang untuk bahasa yang tidak saya gunakan. Namun, tidak yakin apakah Arch Linux menginstal semua file itu.


sumber
ya ... du -hs /usr/share/localesekitar 300MB ... bisakah saya hanya rm -rffile yang tidak dibutuhkan?
Stefan
2
@Stefan wiki.archlinux.org/index.php/Locale Jika Anda mengedit /etc/locale.gendan menjalankan kembali locale-gen, Anda harus memiliki lebih sedikit lokal yang telah dikompilasi. Jika Anda ingin membebaskan lebih banyak ruang dengan cara otomatis, Anda mungkin ingin mencoba aur.archlinux.org/packages.php?ID=11975 juga. (Tapi itu tidak didukung dan jika itu merusak sistem Anda, Anda bisa menyimpannya.)
ephemient
1
localepurge adalah skrip untuk menghapus ruang disk yang terbuang untuk pelokalan yang tidak dibutuhkan. Edit /etc/locale.nopurge terlebih dahulu :) Ini membersihkan ~ 300 MB pertama kali saya menjalankannya dan lusinan MB setiap beberapa bulan. Tersedia di AUR.
tuk0z
0

Saya akan menyarankan OTOMATIS melihat file Anda yang sangat lama dan melihat apakah perlu dan menghapusnya. Ini bisa dilakukan dengan dua hal. Satu orang menulis findperintah untuk mencari file yang sangat lama. dan menggunakan output ini (mungkin pipa) untuk lograteskrip untuk mengarsipkan file yang lebih tua dari kata 3 bulan dan menghapus file yang lebih tua dari 3 bulan di arsip dan mengirim email ke 1 hari sebelum menghapusnya. Sehingga Anda dapat memastikan bahwa Anda tidak kehilangan file penting. Jadi pada akhirnya Anda akan membutuhkan perintah berikut untuk mencapai hal di atas:

find , | , logrotate , mail, crontab

Saya tidak akan menyendok makan Anda. Saya telah melakukan ini sebelumnya telah cukup berhasil dengan ini dan kemudian dihapus karena kami memutuskan untuk mengikuti nagiospemantauan karena lebih disetel untuk melakukan hal semacam itu di server corp. Saya pikir jika mailperintah belum dikonfigurasi untuk Anda, Anda mungkin menemukan bahwa sisanya yang paling sulit harus lurus ke depan. Ini semua perlu dilakukan melalui bash scripting dan meletakkannya di cron job dan dijalankan setiap x hari. Pelajari bash scripting, akan sangat berguna tidak hanya untuk ini tetapi untuk membuat hidup Anda lebih mudah dengan * nix. Jadi gunakan mesin pencari internet favorit Anda dan baca tentang perintah di atas dan bash scripting. Dan ikat mereka bersama dan mengujinya. Setelah puas dimasukkan ke penggunaan biasa. Saya yakin akan menyenangkan melakukan ini. Anda akan belajar banyak jika Anda belum melakukan ini sebelumnya.

  • Semoga itu bisa membantu
bagavadhar
sumber
1
Dari pengalaman saya, saya menemukan bahwa sebagian besar hal-hal yang menempati disk bukan file terkait OS tetapi file saya sendiri terakumulasi selama periode waktu tertentu, maka saya menyarankan hal di atas.
bagavadhar