На мой взгляд, это плохая практика - пытаться монтировать резервную файловую систему при запуске, потому что если что-то пойдет не так (rm -rf / [enter] ops), данные на резервной копии, вероятно, будут удалены вместе с ней.
Поэтому, если вы используете для этого скрипт, монтируйте внутри скрипта или в cron, а после завершения монтируйте.
После этого ваш запуск больше не будет зависать, и файловая система будет работать.
Но есть и другое решение - удалить ее из fstab, и поместить как команду mount в rc.local с символом "&", чтобы запустить ее в фоновом режиме:
mount /dev/mapper/cr_backup /backup -t ext4&
Для съемных устройств есть решение autofs: https://linuxconfig.org/automatically-mount-usb-external-drive-with-autofs
Здесь мы генерируем Makefile динамически с помощью heredoc и запускаем динамический Makefile для выполнения copy
cat - <<\CODE | make -f - SRCDIR="/home/imp/imp/msgs" XN="BRD MIX"
.PHONY: all
all: $(foreach i,$(foreach j,$(XN),$(wildcard $(SRCDIR)/*.$j)),$(addprefix $(join $(dir $i),bak/),$(notdir $i)))
cprule = $(SRCDIR)/bak/%.$1: $(SRCDIR)/%.$1; /bin/cp -p "$$^" "$$@"
$(foreach i,$(XN),$(eval $(call cprule,$i)))
CODE
SRCDIR="/home/imp/imp/msgs"
for src in "$SRCDIR"/*.MIX "$SRCDIR"/*.BRD
do
dest=${src%/*}/bak/${src##*/}
if [ ! -e "$dest" ] || [ "$src" -nt "$dest" ]
then
/bin/cp -p "$src" "$dest"
fi
done
Вам необходимо использовать cp -p
для сохранения временных меток. В противном случае вы не сможете с пользой сравнить их в следующий раз.
cp -pu /home/imp/imp/msgs/*.MIX /home/imp/imp/msgs/bak/
cp -pu /home/imp/imp/msgs/*.BRD /home/imp/imp/msgs/bak/
Вы можете использовать rsync с шаблоном *.MIX
и *.BRD
, например
rsync -avm --include='*.MIX' --include='*.BRD' --exclude='*' /home/imp/imp/msgs/ /home/imp/imp/msgs/bak/