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