为了在PLC应用程序中实现一个简单的备份系统,我们访问一个附加在外部Ubuntu系统上的USB棒。因此,第一个附加的USB驱动器应该在Samba上共享。
第一个附加USB总是获得路径/dev/sdb。这个动态安装的可移动设备现在应该以"USB_DRIVE“这样的固定名称共享。
我的问题是,驱动器安装了它的设备描述,如“肯辛顿”。如果文件夹/媒体/肯辛顿共享,设备被删除,另一个驱动器的名称为“扫描磁盘”,它将不会被共享。
以下是我的问题:
我知道安全问题。samba共享文件夹由用户名和密码保护。
用户应该可以自由地附加他想要创建的备份。因此,我不能使用设备名称,但需要确定连接的第一个设备名称,其中路径/dev/sdb/
由于设备是动态插入的,因此/etc/fstab肯定无法工作。
最好的解决方案是,如果ubuntu不将设备挂载到文件夹/media/ (Sample /media/Kensington),而是使用path /media/ (Sample /media/sdb),那么它是否可以被配置?
Usb挂载工具似乎是指向这个方向的解决方案。但是一旦安装好,它就会生成文件夹,并且它们都是空的,即使附加了usb设备。还能做些什么呢?是否有可能配置usb挂载,以创建文件夹usb只有当特定的设备是附加,而不是永久的?
发布于 2022-07-04 21:24:11
我找到了解决办法。我用上面提到的脚本检查文件设备。如果它存在,我将创建一个文件夹并挂载它。如果它已经安装,什么都不会做。一旦没有设备连接,并且不再找到/dev/sdb,它就会被卸载和删除。
#!/bin/bash
#general definitions
MNT_PATH="/media/USB_DRIVE"
DEV_ID="sdd1"
FILE_SYSTEM="vfat"
# check if user is root
if [ "$(whoami)" != "root" ]
then
echo "run with sudo or as root"
exit
fi
#get list with all attached devices
for i in $(lsblk -lo name,fstype,hotplug,type|grep '1 part到目前为止剧本还能用。不清楚的是,如何调用这样的脚本。它是用一个没完没了的时间循环调用,还是在一个特定的循环中被调用?|tr -s ' ' ' '|sed 's/ 1 part$//'|grep ' ..*到目前为止剧本还能用。不清楚的是,如何调用这样的脚本。它是用一个没完没了的时间循环调用,还是在一个特定的循环中被调用?|tr ' ' '_')
do
devId=${i%_*}
devPath=/dev/$devId
fileSystem=${i#*_}
# check if device path matches
if [ "$devId" == $DEV_ID ]
then
# check if file system matches
if [ "$fileSystem" == $FILE_SYSTEM ]
then
# device found - mount
# check if device not mounted already
if ! [[ $(findmnt -M "$MNT_PATH") ]]
then
# create folder and mount
mkdir -p /media/USB_DRIVE
mount -o rw,user,exec,umask=0000 "$devPath" /media/USB_DRIVE
printf "mounted\n"
exit
else
# already mounted
printf "already mounted\n"
exit
fi
fi
fi
done
# check if mounted device exists
if [[ $(findmnt -M "$MNT_PATH") ]]
then
# unmount device
sudo umount /media/USB_DRIVE
sudo rm -r /media/USB_DRIVE/
printf "unmounted\n"
else
# device already unmounted
printf "already unmounted\n"
fi到目前为止剧本还能用。不清楚的是,如何调用这样的脚本。它是用一个没完没了的时间循环调用,还是在一个特定的循环中被调用?
https://askubuntu.com/questions/1417177
复制相似问题