Como listar os diretórios de link de software disponíveis em um servidor vinculado à montagem NFS

0

Temos muitos diretórios em um servidor. Esses diretórios foram criados como soft-link e vinculados a alguns compartilhamentos NFS. Gostaria de listar os diretórios de links que estão vinculados a compartilhamentos NFS.

usamos os comandos abaixo para criar um diretório de link e link para o NFS.

client 1 # ln -s /net/rchserver01/data/share2/ /tmp/
client 1 # ln -s /net/rchserver01/data/share1/ /var/
client 1 # ll /tmp/
lrwxrwxrwx 1 root     root  27 Sep 13 11:38 share2 -> /net/rchserver01/data/share2/
client 1 # ll /var/
lrwxrwxrwx 1 root     root  27 Sep 13 11:38 share2 -> /net/rchserver01/data/share1/
    
por Pandu 13.09.2018 / 19:20

1 resposta

2

Dada a entrada de amostra:

find /tmp -lname '/net/*'

Mais geralmente, diga find para explorar todos os sistemas de arquivos locais, mas para ficar em cada sistema de arquivos:

find $(lsblk --list --noheadings --output MOUNTPOINT | grep /) -xdev -lname '/net/*'

Ainda mais geralmente, peça ao find para pesquisar os sistemas de arquivos locais, como acima, mas crie uma lista de possíveis destinos do NFS:

readarray -t nfsmounts < <(awk '$3 ~ /^nfs/ { print $2 }' < /proc/mounts)
excludes=()
excludes+=("(")
excludes+=(" -lname ${nfsmounts[0]}")
for((i=1;i < ${#nfsmounts[@]}; i++))
do
  excludes+=( " -o -lname '${nfsmounts[i]}/*'")
done
excludes+=(")")
find $(lsblk --list --noheadings --output MOUNTPOINT | grep /) -xdev ${excludes[@]}

Outra alternativa para a lista inicial de sistemas de arquivos: parse / proc / filesystems para tipos de sistema de arquivos não nodev :

find $( for type in $(awk '$1 != "nodev"' /proc/filesystems); do mount -l -t "$type" | awk '{print $3}'; done ) \
  -xdev -lname '/net/*'
    
por 13.09.2018 / 19:25