* nix에서 특정 파일이 어떤 파일 시스템에 있는지 확인하는 방법은 무엇입니까? 해당 출력을 수동으로 구문 분석하고

일반적인 현대 유닉스 환경 (예 : GNU / Linux, GNU / Solaris 또는 Mac OS X)에서 특정 절대 파일 경로가 어떤 마운트 포인트 및 파일 시스템 유형인지 확인하는 좋은 방법이 있습니까?

명령을 실행하고 해당 출력을 수동으로 구문 분석하고 파일 경로와 문자열을 비교할 있다고 가정 mount하지만 그렇게하기 전에 더 우아한 방법이 있는지 궁금합니다.

확장 속성을 사용하는 BASH 스크립트를 개발 중이며 다양한 파일 시스템 및 호스트 환경에 대해 올바른 작업을 수행하려고합니다.



답변

명령 df(1)은 하나 이상의 인수를 사용하여 해당 파일 또는 디렉토리가있는 마운트 포인트 및 장치와 사용 정보를 리턴합니다. 그런 다음 경로 또는 장치를 사용하여 출력에서 mount -v또는 유사한 파일 시스템 유형을 찾을 수 있습니다.

불행하게도, 출력 모두의 형식 dfmount시스템에 의존하다; 적어도 Solaris, NetBSD 및 Mac OS X 사이에서 볼 수 있듯이 명백한 표준은 없습니다.


답변

stat 사용할 수 있습니다 . stat –printf ‘% d’filename.txt 명령 은 장치 번호를 16 진수 / 10 진수로 반환합니다.


답변

특정 파일의 경우만큼 쉽습니다.

df -T "${FILE}" | awk '{print $2}' | tail -n1

답변

흠. 마운트 포인트의 경우 st_dev가 변경 될 때까지 계층 구조를 올라갈 수 있습니다 (그런 다음 마운트 경계를 넘었습니다). stat배쉬 스크립트를위한 GNU 가있다; 그러나 파싱하지 /proc/mounts않거나 시행 착오로 파일 시스템 유형을 추측하는 방법을 모르겠습니다 (예 : 확장 된 속성을 설정 한 후 실패 처리)


답변

사용하는 한 가지 df단점은 출력의 장치 이름이 길면 줄이 줄 바꿈되므로 마지막 줄을 잡을 수 없다는 것입니다. 대신 첫 번째 줄을 제거한 다음 새 첫 줄을 잡고 첫 번째 필드를 인쇄하십시오.

#!/usr/bin/env bash

path=$1
curdir=$(pwd)
cd $path
df . | tail -n +2 | head -1 | awk '{print $1}'
cd $curdir

답변

Linux에서는 df 및 btrfs에 문제가있는 것 같습니다. df에게 마운트 된 btrfs 볼륨의 마운트 지점을 찾도록 요청하면 올바른 작업을 수행합니다. 이 경우 joe는 / m / whale / backup의 하위 디렉토리입니다.

# df /srv/backup/joe
Filesystem      1K-blocks      Used  Available Use% Mounted on
/dev/md126     2930135488 307676684 2619663252  11% /m/whale/backup

그러나 참조되는 디렉토리가 하위 볼륨 인 경우 더 이상 마운트 지점을 알려주지 않습니다.

# df /srv/backup/joe/code
Filesystem      1K-blocks      Used  Available Use% Mounted on
-              2930135488 307676684 2619663252  11% /a/whale/backup/joe/code

/ a / whale / backup은 커널에 따라 유일한 마운트 지점입니다.

# mount | grep whale
/dev/md126 on /a/whale/backup type btrfs (rw,relatime,space_cache)

Fstat, stat도 같은 일을합니다 :

# stat --printf '%m\n' /srv/backup/joe/code
/a/whale/backup/joe/code

답변

에서 /programming/2167558/give-the-mount-point-of-a-path :

 df -P $path  | tail -1 | awk '{ print $NF}'

* BSD 및 sysV 및 엉뚱한 자동 마운트 디렉토리에 대해 테스트 한 모든 곳에서 작동합니다. 실패한 사례에 대해 기뻐합니다.