
USBドライブを起動時にマウントされていないNTFSパーティションのフォルダと同期したいと思います。私はこれを行うコマンドを見つけました:rsync -axu /media/USB/folder /home/user/folder
。しかし、NTFSドライブをマウントしたことは間違いありません。
NTFSドライブがマウントされているかどうかをスクリプトでどのように検出できますか?私はLinux(Ubuntu)を使用しています。
これは修正された小さなスクリプトです(もともとここ)あなたの助けを借りて!
#!/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