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つの解決策があります。 NTFSファイルシステムでファイルを作成してから、このファイルが存在するかどうかを確認できます。あなたの場合、他の解決策がおそらくより良いでしょう。ただし、NFSまたはSMBファイルシステムがマウントされているかどうかを確認する必要がある場合は、ファイルがマウントされているだけでなく、アクセスしやすいことを確認する必要があるため、ファイルを確認する方がよい場合があります。次に、次のようにします。
if [ ! -f /your/mounted/fs/mount-check.txt ];
then
echo "Here you have to put your mount command."
fi
mountpoint
コマンドを使用します。
mountpoint -q $MOUNT_POINT || mount $DEVICE_WITH_NTFS_FILESYSTEM $MOUNT_POINT
後者の部分(||
の後)は、最初の部分がfalseの場合(つまり、マウントポイントが存在しなかった場合)にのみ実行されます。
特定のディレクトリがマウントポイントであるかどうかを確認する方法はたくさんあります。たとえば、(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
別のアプローチは、 automounter を使用して、アクセス時にディレクトリを自動的にマウントすることです。たとえば、Linuxでは、 autofs :を使用できます。
/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
にディストリビューションに構成を再ロードするように指示するもの)を実行します。プレーンなmount
コマンドを発行することで、マウントされているものを確認できます。また、各マウントポイントの「ソースデバイス」も示します。
/dev/disk/by-id
内のデバイスを使用してNTFSボリュームをマウントする場合、再起動とドライブ接続の間で変更される可能性がある/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