我正在从 cron 触发一个脚本。我希望它仅在安装了名为“data_3”的 USB 磁盘时运行 rsync,否则不运行。
如何编写 bash 脚本来检测已安装的 USB 驱动器?
我当前的伪代码:
#!/bin/sh
if ( mount | grep /media/data_3 )
rsync ...
else
echo "Failure"
答案1
关闭。
if mount | grep -q ' on /media/data_3 '; then
不要忘记fi
最后的(help if
了解详情)。
答案2
您也可以用另一种方法 - 通过在第一次插入 USB 时发出命令来找出磁盘的 uuid(目的是找出 uuid)通过使用 vol_id
NAME vol_id - 探测文件系统类型并读取标签和 uuid
摘要 vol_id [--export] [--type] [--label] [--label-raw] [--uuid] [--skip-raid] [--probe-all] [--offset=bytes] [--debug] [--help] [device]
描述 vol_id 通常从 udev 规则中调用,为 udev 提供卷的文件系统类型、标签和 uuid。它支持大多数常见的文件系统格式,并检测各种 raid 设置,以防止将 raid 成员识别为具有文件系统的卷。
选项--export 以键/值格式打印所有值以将它们导入到环境中。
--type Print the filesystem type. --label Print the safe version of volume label suitable for use as
文件名。
--label-raw Print the raw volume label. --uuid Print the uuid of a volume. --skip-raid Skip detection of raid metadata. --probe-all Probe for all types and print all matches. --offset=bytes Start probing at the given offset, instead of the beginning of
卷。偏移量值以字节为单位指定。
--debug Print debug messages to stderr. --help Print usage.
环境 UDEV_LOG 设置系统日志优先级。
退出状态 vol_id 仅在请求的值不为空时才返回成功。所有尾随空格都将被删除,空格将被替换为下划线,斜线将被忽略。
然后一旦您获得该磁盘的值,就需要检查 vol_id......