Você pode criar um crontab para cada semana 0 2 * * 2 /usr/local/script.sh
e colocar em script.sh
:
#!/bin/bash
mark_file=/tmp/job-run-marker
# check whether the job runned last week
if [ -e $mark_file ] ; then
rm -f $mark_file
unmout /snapshots
mount /dev/disk/by-label/even-weeks /snapshots
else
touch $mark_file
unmout /snapshots
mount /dev/disk/by-label/odd-weeks /snapshots
fi
O script não encontrará $mark_file
na primeira execução, portanto, ele montará /dev/disk/by-label/even-weeks
. Na segunda execução, o script removerá $mark_file
e, em seguida, montará /dev/disk/by-label/odd-weeks
. Para a terceira execução, é o mesmo que a primeira execução. Portanto, se esse script for executado semanalmente pelo cron, o comando da tarefa será executado a cada duas semanas.
Dicas: identifique seu disco ln -s /dev/disk/by-uuid/UUID /dev/disk/by-label/even-weeks
EDITAR:
- Correção após o comentário @Mat.
- Do comentário de @nearora: Identifique seus sistemas de arquivos com links para / dev / disk / by-id / em vez de use / dev / sd [a-z].