如果指定的目标驱动器被卸载,Grsync 将填满 o/s 分区,而不是直接挂载它,或者中止。我该如何防止这种情况发生?
我通常会记得检查它是否已安装,但有时我会忘记,结果会很糟糕。
谢谢你的帮助。
ra@ra-main:~$ cat /etc/fstab
/etc/fstab:静态文件系统信息。
使用“blkid”打印
设备;这可以与 UUID= 一起使用,作为命名设备的更可靠方式
即使添加或删除磁盘,该功能也能正常工作。请参阅 fstab(5)。
安装期间 / 位于 /dev/sdc3 上
UUID=557ba3eb-2dcc-4b03-964b-f12f509c4faa / ext4 错误=remount-ro 0 1
安装期间 /boot/efi 位于 /dev/sda3 上
#UUID=D305-EBF0 /boot/efi vfat umask=0077 0 1 /swapfile none swap sw 0 0 UUID=0399-667C /boot/efi vfat defaults 0 1 LABEL=Grsync /mnt/Grsync auto nosuid,nodev,nofail,x-gvfs-show,x-gvfs-name=Grsync 0 0 ra@ra-main:~$ ^C
答案1
是的,这是 grsync、rsync 等以及许多其他备份工具的预期行为,用户有责任在执行这些工具之前检查卷是否已安装(正如您所提到的)。您可以创建一个运行 grsync 命令的脚本,而不是直接运行它,然后在运行 grsync 命令之前输入一些命令来检查卷是否已安装(或者只是手动运行安装检查命令,这也是可行的)。类似这样的操作可能会有效:
cd /home/username/
mkdir scripts
cd scripts
nano grsyn.sh
sudo chmod 750 grsync.sh
nano grsync.sh
然后,在 nano 文本编辑器中打开的文件中,复制并粘贴并调整此脚本以满足您的需要:
if grep -qs '/mnt/backup ' /proc/mounts; then
echo "I will proceed with grsync because the volume is ready."
grsync [enter your commands/flags here]
else
echo "The volume is not ready, so I am not running grsync."
fi
您可以通过导航到脚本目录并输入 来手动运行该脚本./grsync.sh
。该q
标志是可选的,可以根据用户偏好删除。您可以选择创建一个 cron 作业来运行此脚本,如下所示:
sudo crontab -e
在最后一项下方,复制/粘贴并调整以下内容以满足您的需要:
0 8 * * * /bin/bash /home/username/scripts/ >> /home/username/grsync.log
该脚本将每天早上 8 点运行您想要的 grsync 命令。
新用户和/或不太复杂的工作流程可能只需要进行简单的检查,在这种情况下,最简单的方法是在控制台上输入单个命令。为此,请使用上面的 grep 语法,但一定要省略标志,q
以便结果打印到标准输出:
grep -s '/mnt/backup ' /proc/mounts
如果卷已安装,则会打印类似以下的结果:
/dev/sdb /mnt/backup ext4 rw,nosuid,nodev,noatime,attr2,inode64,logbufs=8,logbsize=32k,noquota 0 0
如果您没有收到任何输出,并且只要您的 grep 字符串准确,则这表明该卷可能未安装。最后,如果您想要这个集成在 grsync 的图形前端中,而不是在命令行中处理,然后只需在额外选项 / 在 rsync / 失败时暂停之前执行此命令。