파일이 네트워크 설치에서 가져온 것인지 실제 로컬 파일에서 가져온 것인지 스크립트에서 테스트해야 합니다. 더 명확하게 말하면 콘텐츠 구문 분석이 빠른지 느린지 테스트해야 하지만 내가 생각하는 한 로컬과 네트워크는 신뢰할 수 있는 지표입니다.
내가 생각해낸 최선의 방법은 로컬 디스크에 파일을 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
파이버 채널 장치에 있을 수 있으며 직접 연결될 수도 있고 여러 네트워크 스위치에 있을 수도 있습니다. 표준 사용자 수준 유틸리티를 사용하여 식별할 가능성은 거의 없습니다.