파일이 로컬인지 테스트

파일이 로컬인지 테스트

파일이 네트워크 설치에서 가져온 것인지 실제 로컬 파일에서 가져온 것인지 스크립트에서 테스트해야 합니다. 더 명확하게 말하면 콘텐츠 구문 분석이 빠른지 느린지 테스트해야 하지만 내가 생각하는 한 로컬과 네트워크는 신뢰할 수 있는 지표입니다.

내가 생각해낸 최선의 방법은 로컬 디스크에 파일을 stat -c %m [path]제공하는 경로의 마운트 지점과 CIFS 마운트의 마운트 지점을 얻는 것 입니다./

그러나 이것이 매우 간단한 구성(로컬 드라이브 1개, 대형 파티션 1개, 네트워크 설치 몇 개) 외에는 신뢰할 수 있는 진단이 아닐 것으로 생각되므로 강력하고 표준적인 접근 방식을 원합니다. 검색해도 유용한 단서는 나오지 않았습니다. "네트워크" 및 "경로"와 같은 용어가 너무 많았습니다.

답변1

다음 명령을 사용하여 특정 파일이나 디렉터리를 포함하는 파일 시스템 유형을 출력할 수 있습니다.

 stat -f --format="%T" /path/to/file

그리고 그에 따라 행동하십시오. 가능한 출력은 cifs, nfs, afs, ... (원격으로 가정) 및 ufs, ext2/ext3(원문 - ext2, ext3 및 ext4의 파일 시스템 매직 번호가 동일함), btrfs, tmpfs, ... (로컬로 가정)입니다.

파일 시스템 유형이 로컬인지 원격인지 확인하는 데 도움이 될 수 있는 한 가지: stat및 가 포함된 GNU coreutils df에는 수십 가지 파일 시스템 유형에 대한 "로컬" 및 "원격" 파일 시스템 개념이 있습니다.

df -T -l | awk 'NR > 1 { print $2 }' | sort -u

로컬로 간주되는 마운트된 모든 파일 시스템을 출력하는 파일 시스템 유형입니다 df.

원래 질문에 대한 설명에서 지적한 것처럼 저장 장치가 로컬인지 여부는 말하기 어렵습니다. 파일 ext3시스템이 /dev/sdb5파이버 채널 장치에 있을 수 있으며 직접 연결될 수도 있고 여러 네트워크 스위치에 있을 수도 있습니다. 표준 사용자 수준 유틸리티를 사용하여 식별할 가능성은 거의 없습니다.

관련 정보