Baseada em parte no feedback nos comentários, aqui está a solução que eu encontrei.
1. Crie um arquivo de log vazio , ~/.lastbackup.log
, para conter um registro da hora em que o script de backup foi executado pela última vez.
2. Crie um script agendador de wrapping , ~/scheduler.sh
, para ser colocado nos Aplicativos de Inicialização do Gnome ( ~/.config/autostart
), para verificar a data do arquivo de log em cada inicialização e decidir se deseja executar o script principal:
#!/bin/bash
BACKUPINTERVAL=3 # in days
DATETODAY=$(date +"%Y-%m-%d")
DATELASTBACKUP=$(</path/to/.lastbackup.log) # get last backup date from logfile
DATEDIFF=$(( ($(date --date=$DATETODAY +%s) - $(date --date=$DATELASTBACKUP +%s) )/(60*60*24) ))
if [ "$DATEDIFF" -ge "$BACKUPINTERVAL" ] ; then
# more than 3 days since last backup, so run script
/usr/bin/x-terminal-emulator -e /path/to/backup.sh
fi
3. Crie o script de backup principal , ~/backup.sh
, para ser executado quando necessário:
#!/bin/bash
/usr/bin/dialog --yesno "Do backup now?" 8 40 # user can opt out
if [ $? -eq 0 ] ; then
# do backup
# user can check output to screen
if [ $? = 0 ]; then
# write date to logfile
echo $(date +"%Y-%m-%d") > /path/to/.lastbackup.log
echo 'Backup done'
read
fi
fi