-->

2011-06-07

必要ないファイルの検索の例

特定のディレクトリ以外の、シンボリックリンク以外の、365日以上古い、パッケージ管理外の、ファイルパスを探す。
* この例の場合、消すと不具合を起こすファイルを含みます。
* この例のqfileはgentooのコマンドです。
sudo find / \
-path "/lib/modules" \
-prune -o -path "/usr/src" \
-prune -o -path "/usr/portage" \
-prune -o -path "/var/lib/layman" \
-prune -o -path "/proc" \
-prune -o -path "/sys" \
-prune -o -path "/dev" \
-prune -o -path "/tmp" \
-prune -o -path "/var/tmp" \
-prune -o -path "/var/cache" \
-prune -o -path "/etc/config-archive" \
-prune -o -path "/usr/local" \
-prune -o -path "/home" \
-prune -o -path "/var/www" \
-prune -o -path "/mnt/share" \
-prune -o ! -type l -mtime +365 | qfile -o -f - > /tmp/qfile.txt

特定のディレクトリ以外の、シンボリックリンクで、リンク切れかループしている、ファイルパスを探す。
sudo find / \
-path "/usr/portage" \
-prune -o -path "/var/lib/layman" \
-prune -o -path "/proc" \
-prune -o -path "/sys" \
-prune -o -path "/dev" \
-prune -o -path "/tmp" \
-prune -o -path "/mnt/share" \
-prune -o -type l -printf "%p:%Y\n" | grep ":[LN]$" > /tmp/link.txt

redhat系。
$ cat /etc/redhat-release
Fedora release 15 (Lovelock)
$ rpm -qa | while read PKGNAME; do rpm -ql $PKGNAME; done | sort > /tmp/pkgfiles.txt
$ sudo find / \
-path "/proc" \
-prune -o -path "/sys" \
-prune -o -path "/dev" \
-prune -o -path "/run" \
-prune -o -path "/selinux" \
-prune -o -path "/var/run" \
-prune -o -path "/media" \
-prune -o -path "/var/lock" \
\
-prune -o -path "/tmp" \
-prune -o -path "/var/tmp" \
-prune -o -path "/var/cache" \
-prune -o -path "/usr/local" \
-prune -o -path "/home" \
-prune -o -path "/var/www" \
-prune -o ! -type l \
-mtime +365 \
| while read FILE; do if [ "$(grep -P "^\Q${FILE}\E($|((?<=/).*[^/]$))" /tmp/pkgfiles.txt)" = "" ]; then echo $FILE; fi; done \
> /tmp/rpm.txt

redhat系。
sudo find / \
-path "/proc" \
-prune -o -path "/sys" \
-prune -o -path "/dev" \
-prune -o -path "/run" \
-prune -o -path "/selinux" \
-prune -o -path "/var/run" \
-prune -o -path "/media" \
-prune -o -path "/var/lock" \
\
-prune -o -path "/tmp" \
-prune -o -path "/var/tmp" \
-prune -o -path "/var/cache" \
-prune -o -path "/usr/local" \
-prune -o -path "/home" \
-prune -o -path "/var/www" \
-prune -o ! -type l \
-mtime +365 \
| while read FILE; do rpm -qf ${FILE} >/dev/null 2>&1; if [ $? -ne 0 ]; then echo $FILE; fi; done \
> /tmp/rpm.txt

debian系。
sudo find / \
-path "/dev" \
-prune -o -path "/lib/init/rw" \
-prune -o -path "/proc" \
-prune -o -path "/sys" \
-prune -o -path "/tmp" \
\
-prune -o -path "/var/tmp" \
-prune -o -path "/var/cache" \
-prune -o -path "/usr/local" \
-prune -o -path "/home" \
-prune -o ! -type l \
-mtime +365 \
| while read FILE; do dpkg -S "$(echo "${FILE}" | perl -pe "s/([^\\w\\s])/\\\\\$1/g")" >/dev/null 2>&1; if [ $? -ne 0 ]; then echo $FILE; fi; done \
> /tmp/dpkg.txt

0 件のコメント: