Saya ingin mendapatkan daftar semua file di sistem Linux Gentoo saya yang tidak diinstal oleh manajer paket (Portage). Ini karena saya ingin menjaga sistem saya sebersih mungkin, menghapus semua file yang tidak berguna.
Biarkan saya memberi tahu Anda apa yang telah saya coba sampai sekarang. Pertama-tama, saya membuat daftar semua file milik beberapa paket yang dilacak oleh Portage:
equery files "*" | sort | uniq > portage.txt
Lalu saya membuat daftar semua file di sistem saya, kecuali yang tidak saya pedulikan:
find / \( -path /dev -o -path /proc -o -path /sys -o -path /media \
-o -path /mnt -o -path /usr/portage -o -path /var/db/pkg \
-o -path /var/www/localhost/htdocs -o -path /lib64/modules \
-o -path /usr/src -o -path /var/cache -o -path /home \
-o -path /root -o -path /run -o -path /var/run -o -path /var/tmp \
-o -path /var/log -o -path /tmp -o -path /etc/config-archive \
-o -path /usr/local/portage -o -path /boot \) -prune \
-o -type f | sort | uniq > all.txt
Akhirnya, saya mendapatkan daftar semua file yang tidak dilacak oleh Portage:
comm -13 portage.txt all.txt > extra.txt
Beberapa statistik:
wc -l portage.txt all.txt extra.txt
127724 portage.txt
78371 all.txt
8438 extra.txt
Seperti yang Anda lihat, saya masih mendapatkan lebih dari delapan ribu file tambahan. Saya ingin mengurangi angka itu, agar lebih fokus pada file yang benar-benar perlu dihapus.
Saya perhatikan bahwa extra.txt
ada ribuan file di sejumlah kecil direktori, seperti /usr/lib64/gcc
, /usr/lib64/python2.7
dan /usr/lib64/python3.2
. The /usr/lib64/gcc/x86_64-pc-linux-gnu/4.6.3/crtbegin.o
file, misalnya, tidak dalam portage.txt
karena, di tempatnya, ada /usr/lib/gcc/x86_64-pc-linux-gnu/4.6.3/crtbegin.o
. Di sistem saya /usr/lib
adalah symlink ke /usr/lib64
. Jadi sepertinya saya perlu menangani symlink dengan benar untuk mendapatkan hasil yang lebih baik. Mungkin dengan menambahkan portage.txt
semua file yang mereka tuju. Saya tidak benar-benar tahu bagaimana melakukan itu.
Juga, mengapa portage.txt
lebih besar dari itu all.txt
? Bukankah seharusnya sebaliknya karena file yang dilacak oleh Portage adalah bagian dari semua file di sistem saya?
Akhirnya, apakah saya lupa lokasi lain dalam find
perintah yang juga harus dikecualikan?