우리 서버에는 많은 디렉토리가 있습니다. 이러한 디렉터리는 소프트 링크로 생성되고 특정 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/*'