NFS 마운트에 연결된 서버에서 사용 가능한 소프트 링크 디렉터리를 나열하는 방법

NFS 마운트에 연결된 서버에서 사용 가능한 소프트 링크 디렉터리를 나열하는 방법

우리 서버에는 많은 디렉토리가 있습니다. 이러한 디렉터리는 소프트 링크로 생성되고 특정 NFS 공유에 연결됩니다. NFS 공유에 연결된 소프트 링크 디렉터리를 나열하고 싶습니다.

다음 명령을 사용하여 소프트 링크 디렉터리를 생성하고 이를 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/

답변1

주어진 예제 입력:

find /tmp -lname '/net/*'

보다 일반적으로는 find모든 로컬 파일 시스템을 탐색하되 각 파일 시스템에 머무르도록 지시합니다.

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

보다 일반적으로는 find위와 같이 로컬 파일 시스템을 검색하도록 요청하되 가능한 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[@]}

파일 시스템 시작 목록에 대한 또 다른 옵션: /proc/filesystems를 구문 분석하여 파일 시스템 유형 찾기아니요 nodev:

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

관련 정보