Para evitar a edição de arquivos em o mesmo horário de backup agendado pelo cron , eu descubro uma maneira:
Antes do backup, envie uma notificação na área de trabalho, como notify-send -t 0 "Ready for backup"
, para me preparar (salve minha edição em arquivos e conecte o disco rígido externo como destino de backup) e, quando estiver pronto, clicarei ok na notificação e o backup é iniciado.
Quando o backup terminar, opcionalmente, notifique-me com o valor de saída do comando de backup e o tempo gasto para o backup, para que eu possa retomar a edição.
Como posso fazer isso no bash e no Ubuntu? Isso contém um problema menor: como programar a notificação da área de trabalho no cron?
Sinta-se à vontade se tiver uma maneira melhor de alcançar meu objetivo no começo.
Minha tentativa.
Eu adicionei * * * * * /home/t/mybackup.sh
a crontab -e
,
onde eu escrevi um script bash /home/t/mybackup.sh
wrapping backup and notifications:
#! /usr/bin/env bash
export DISPLAY=:0
/usr/bin/notify-send -t 0 "Ready for backup?" &&
dest=/tmp/'date +%Y.%m.%d_%H:%M:%S'&&
mkdir -p "$dest" &&
timetake='time /usr/bin/rsync -a /home/t/program_files/dir/ "$dest"/ 2>"$dest"/rsync-errors'; exitvalue='echo $?'
/usr/bin/notify-send -t 0 "Finished backup!" "time taken: " $timetake " exit value:" $exitvalue
Tem os seguintes problemas:
Eu quero fazer a primeira notificação "Pronto para backup?" aguarde minha resposta antes do backup. Ou seja, se eu clicar em "OK", pode continuar fazendo o backup. Se eu clicar em "Cancelar", não deverá executar o backup e os seguintes comandos no script.
Mas no meu script atual, o primeiro notify-send
não aguarda minha resposta e continua fazendo o backup.
Mesmo se eu pudesse esperar pela minha resposta, não sei como codificar no meu script para pegar minha resposta se clico em "OK" ou "Cancelar".
o segundo notify-send
para "Backup concluído! ..." não aparece após o término do backup.
Tags backup bash cron notifications