(NTFS) 드라이브가 설치되어 있는지 감지합니다. 그렇지 않은 경우 설치하십시오.

(NTFS) 드라이브가 설치되어 있는지 감지합니다. 그렇지 않은 경우 설치하십시오.

USB 드라이브를 부팅 시 마운트되지 않은 NTFS 파티션에 있는 폴더와 동기화하고 싶습니다. 나는 이것을 수행하는 명령을 찾았습니다: rsync -axu /media/USB/folder /home/user/folder. 하지만 NTFS 드라이브를 마운트했음이 틀림없습니다.

NTFS 드라이브가 마운트되었는지 여부를 스크립트를 통해 어떻게 감지할 수 있습니까? 저는 리눅스(우분투)를 사용합니다.

이것은 수정된 작은 스크립트입니다(원래는여기)당신의 도움으로!

#!/bin/bash
## CONFIG SECTION
MOUNT_DRIVE=/dev/disk/by-id/scsi-SATA_Hitachi_HTS5416_SB3404GRGJRKBS-part5
MOUNT_POINT=/media/Windows/
# Local folder to sync with
SYNC_LOC=/media/Windows/vasia/Disertatie/
# Device folder to sync with
SYNC_DEV=Disertatie
#
## SCRIPT SECTION
#verify if the drives are mounted
if mount | grep -q "/media/Windows/"; then
#device is mounted
echo "Windows NTFS Drive is mounted!"
else
#device is not mounted,let's mount it
mount $MOUNT_DRIVE $MOUNT_POINT
fi
# Wait for thumbdrive to settle
sleep 10
# Synchronize thumbdrive with local
rsync -axu /media/DISK_IMG/${SYNC_DEV}/ ${SYNC_LOC}/
# Synchronize local with thumbdrive
#rsync -axu ${SYNC_LOC}/ /media/disk/${SYNC_DEV}/
# Inform user that synchronization is complete.
zenity --title "Thumbdrive Sync" \
       --info --text "File synchronization        complete."

답변1

(Linux에서) 마운트 지점 목록을 확인하는 등 특정 디렉터리가 마운트 지점인지 확인하는 방법은 여러 가지가 있습니다.

if ! </proc/mounts awk '$2 == "/mount/point" {exit(0)} END {exit(1)}'; then
  mount /mount/point
fi

또는 (이식적으로) 경로의 파일 시스템 마운트 지점이 그 자체인지 확인하십시오.

if ! df -P /mount/point | grep -q '/mount/point$'; then
  mount /mount/point
fi

가능한 마운트 지점이 심볼릭 링크일 수 있는 경우 디렉터리가 상위 파일 시스템과 다른 파일 시스템에 있는지 확인하세요.

if df -P /mount/point/. /mount/point/.. | {
      read -r _; read -r dev1 _; read -r dev2 _
      [ "$dev1" = "$dev2" ]
    }; then
  mount /mount/point
fi

또 다른 방법은자동 설치 프로그램디렉토리에 액세스할 때 자동으로 디렉토리를 마운트합니다. 예를 들어 Linux에서는 다음을 사용할 수 있습니다.자동 파일 시스템:

  • /etc/auto.master그 안에 있는 줄의 주석 처리를 해제하세요 ./misc /etc/auto.misc
  • /etc/auto.misc, 추가 ( 마운트하려는 파티션으로 windows_stuff -fstype=ntfs :/dev/sdz99교체 )sdz99
  • 심볼릭 링크 생성 /home/user/folder/misc/windows_stuff
  • 실행 /etc/init.d/autofs reload(또는 autofs배포판의 구성을 다시 로드하라는 명령)을 실행합니다.

답변2

사용 mountpoint명령:

mountpoint -q $MOUNT_POINT || mount $DEVICE_WITH_NTFS_FILESYSTEM $MOUNT_POINT

||후자 부분(이후)은 첫 번째 부분이 거짓인 경우(즉, 마운트 지점이 존재하지 않는 경우)에만 실행됩니다.

답변3

이를 수행하는 방법에 대한 또 다른 해결책이 있습니다. NTFS 파일 시스템에서 파일을 생성한 다음 파일이 존재하는지 확인할 수 있습니다. 귀하의 경우에는 다른 솔루션이 더 나을 수도 있습니다. 그러나 NFS 또는 SMB 파일 시스템이 마운트되었는지 확인해야 하는 경우 마운트된 것뿐만 아니라 액세스 가능한지 확인하고 싶기 때문에 파일을 확인하는 것이 더 나을 때도 있습니다. 그러면 다음과 같이 할 수 있습니다:

if [ ! -f /your/mounted/fs/mount-check.txt ];
then
    echo "Here you have to put your mount command."
fi

답변4

간단한 명령을 실행하여 설치된 내용을 확인할 수 있습니다 mount. 또한 각 마운트 지점에 대한 "소스 장치"도 알려줍니다.

그 안에 있는 장치를 사용하여 NTFS 볼륨을 마운트하는 경우 재부팅과 드라이브 연결 이벤트 사이에 변경될 수 있는 이름 /dev/disk/by-id이 아니라 스크립트에서 확인할 수 있는 고정된 이름을 갖게 됩니다 ./dev/sd*

따라서 다음과 같이 마운트된 드라이브가 있는지 확인합니다 bash.

if mount | grep -q "/dev/disk/by-id/$DEVICE_WITH_NTFS_FILESYSTEM"; then
 # device is mounted
 ;; # do nothing
else
 # device is not mounted, let's mount it
 mount $DEVICE_WITH_NTFS_FILESYSTEM $MOUNT_POINT
 fi

관련 정보