사용자는 를 사용하여 rsync
외부 장치에 대한 (증분) 백업 스크립트를 가지고 있습니다. 그가 가지고 있던 SSD의 버그였습니다. 그의 장치가 포맷된 것으로 밝혀졌습니다 exFAT
. 이는 내가 이것을 감지해야 함을 의미합니다.스크립트에서, 옵션을 변경해야 하기 때문입니다 rsync
(예: exFAT는 심볼릭 링크를 처리할 수 없고 소유자/그룹 권한이 없습니다 등).
사용자는 Linux Mint를 실행하고 있습니다. 나는 우분투를 실행합니다. 내 Ubuntu 솔루션이 그의 Mint에서도 작동할 것이라고 가정/희망할 뿐입니다.
나는 본 적이:
- 파티션이 ext2, ext3 또는 ext4인지 어떻게 알 수 있나요?
- 어떤 유형의 파일 시스템을 사용하고 있는지 어떻게 알 수 있나요?
- https://www.tecmint.com/find-linux-filesystem-type/
좋은 제안이 많이 있지만 다음과 같은 내 요구 사항을 충족하는 제안은 없습니다.
- (구문 분석 가능)
ntfs
/는 단순히exfat
말한 것이 아니라 명시적으로 보고되어야 합니다(이것은fuseblk
& 모두에 해당됩니다. 구별해야 합니다).exfat
ntfs
- ~ 해야 하다아니요필요하다스도.
/dev/...
실행 파일 은 .
내가 시도한 제안 중에서:
fdisk -l
,parted -l
,file -sL
: 필요하다스도및/또는/dev/...
블록 장치mount
: 필수/dev/...
, 보고 전용fuseblk
df -T
,stat -f -c %T
: 디렉토리를 허용하지만 보고만 합니다.fuseblk
lsblk -f
,blkid
:/dev/...
블록 장치가 필요합니다
이러한 모든 기준을 충족하는 간단한 명령이 있습니까? 또는 lsblk
/가 /를 blkid
올바르게 보고하는 것 같습니다 . 이를 전달해야 하는 경우 스크립트의 디렉터리 경로에서 적절하게 가져오려면 어떻게 해야 합니까?exfat
ntfs
/dev
답변1
다른 게시물의 답변/제안을 보내주셔서 감사합니다. 여기 내 완전한 솔루션이 있습니다.
df -P
경로에서 장치를 가져오는 데 사용할 수 있으며 lsblk --fs
정확한 파일 시스템을 가져오기 위해 제공할 수 있습니다. 따라서 한 줄은 다음과 같습니다.
fs=$( lsblk --fs --noheadings $( df -P $path | awk 'END{print $1}' ) | awk 'END{print $2}' )
당신이 알아야 할 것이 파일 시스템이 무엇인지만 알고 있다면 fuseblk
--- 그것은 내 목적에 충분 ntfs
하고 exfat
충분하다는 것이 밝혀졌습니다 --- 이것은 더 간단한 방법으로 결정할 수 있습니다:
fs=$( stat -f -c '%T' $path )
답변2
귀하의 질문을 완전히 이해했는지 잘 모르겠습니다. 따라서 이것을 "시작점"으로 사용하겠습니다. 가까이 다가가면 필요한 것을 얻을 수 있도록 조정할 수 있다고 확신합니다.
$ lsblk --fs | grep / | awk '{print $1, $2}'
답변3
df .
그리고 mount
?
먼저 마운트 포인트를 구해보자
cd /a/dir
mp=$(df . | awk 'NR==2 { print $1}')
$mp
기기 이름을 누른 상태에서 길게 누르기/a/dir
이제 마운트 지점
mount | awk -v mp=$mp '$1 == mp { print $5}'
이는 설치 유형을 반환해야 합니다( xfs
,, etx3
...일 수 있음).
편집하다:
- 내 대답이 링크 중 하나에 포함되어 있는 것을 확인했습니다. 단순히 마운트하는 것보다 mount에서 반환된 줄을 탐색하고 싶을 수도 있습니다.
$5