如何确保仅在执行脚本期间安装 USB 驱动器?

如何确保仅在执行脚本期间安装 USB 驱动器?

我有一台 Linux(Pop OS 18.1)笔记本电脑,连接到用作扩展坞的外接显示器。USB 驱动器插入显示器的一个 USB 端口。

我想使用 USB 驱动器进行备份。为此,有一个 cron 作业每天运行并执行以下操作:

BACKUP_DEVICE=/dev/sda1

umount $BACKUP_DEVICE
pmount -A $BACKUP_DEVICE

# Do the backup

umount $BACKUP_DEVICE

我希望仅在备份期间安装 USB 驱动器。这样我就可以安全地拔下显示器(以及驱动器)。为了安全起见,备份首先调用 umount 以确保驱动器已卸载,然后安装它,进行备份,然后再次卸载。

问题是 umount 和 pmount 有时会出错:

umount: /dev/sda1: no mount point specified.
Error: device /dev/sda1 does not exist

1) 我不知道如何解释 umount 错误消息。如果 USB 驱动器未安装并且我手动 umount,则错误消息略有不同:“umount: /dev/sda1: not mounted。”所以我不知道是什么导致了上述 umount 错误消息。

2) /dev/sda1 不存在?!它已插入,卸载后仍列在 /dev 中。

我似乎搞错了方向。如何确保 USB 驱动器仅在备份脚本运行期间挂载?

答案1

根据我的经验,通过 /dev/sdX 字母引用驱动器是不可靠的。相反,找到设备的 uuid:

joe@computer:~$ lsblk -o +UUID
NAME                  MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT                     UUID
sda                     8:0    0 119.2G  0 disk                                
└─sda1                  8:1    0 119.2G  0 part                 XXXXXX-XXXX-XXXX-XXXX-XXXX-XXXX-XXXXXX
  ├─ubuntu--vg-root   253:0    0 118.3G  0 lvm  /               XXXXXX-XXXX-XXXX-XXXX-XXXX-XXXX-XXXXXX
  └─ubuntu--vg-swap_1 253:1    0   976M  0 lvm  [SWAP]          XXXXXX-XXXX-XXXX-XXXX-XXXX-XXXX-XXXXXX
sdb                     8:16   0 698.7G  0 disk                                
├─sdb1                  8:17   0   100M  0 part                 XXXXXXXXXXXXXXXX
└─sdb2                  8:18   0 698.6G  0 part /media/XXXX     USBPARTITIONUUID

然后在你的脚本中替换

/dev/sda1

/dev/disk/by-uuid/USBPARTITIONUUID

相关内容