Que tal este guia:
1) crie seu script: crie um novo arquivo e chame-o de myrsync.sh
, copie / cole as linhas abaixo:
#!/bin/bash
sudo rsync -av --progress --delete --log-file=/home/your-username/Desktop/$(date +%Y%m%d)_rsync.log --exclude "/home/your-username/.folder" /home/data /media/dataBackup_$(date +%Y%m%d_%T)
Significado das bandeiras:
-av bit: 'a' means archive, or copy everything recursively, preserving things like permissions, ownership and time stamps.
-'v' is verbose, so it tells you what its doing, either in the terminal, in this case, in the log file.
--progress gives you more specific info about progress.
--delete checks for changes between source and destination, and deletes any files at the destination that you've deleted at the source.
--log-file saves a copy of the rsync result to a date-stamped file on my desktop.
--exclude leaves out any files or directories you don't want copied. In the command above, the .folder directory
/home/data is the directory I want copied. /home/data copies the directory and its contents, /home/data would just copy the contents.
/media/dataBackup_$(date +%Y%m%d_%T) is the separate drive. Change this to whatever your backup location is. Note that 'rsync' will name every sync differently based on day/time of sync
2) Salve myrsync.sh
em seu ~ $ HOME e torne-o executável digitando:
sudo chmod +x /home/your-username/Desktop/rsync-shell.sh
Agora, você pode clicar duas vezes nesse arquivo .sh, escolher Executar no Terminal, ele solicitará sua senha e executará e, em seguida, deixará um arquivo de log em sua área de trabalho. Ou você pode fazer um cron job para fazer isso por você!
3) O cron job
Copie o arquivo myrsync.sh
para / root digitando:
sudo cp /home/your-username/Desktop/myrsync.sh /root
Em seguida, digite:
sudo crontab -e
Você verá uma linha com o seguinte comando: minuto hora dia mês ano
Abaixo disso, digite: 0 22 * * * /root/myrsync.sh > $ HOME / readme.log 2 > & 1
Isso significa:
The hour in military time (24 hour) format (0 to 23)
The day of the month (1 to 31)
The month (1 to 12)
The day of the week(0 or 7 is Sun, or use name)
The command to run
So at 22:00 (10pm) every day root will run the shell script, without prompting you for sudo password (because its running as root already).
Agora pressione Control-X, digite "Y" e pressione Enter
Para excluir backups mais antigos, uma maneira de fazer isso é criar um arquivo com o registro de data e hora de cada sincronização nele. Por exemplo, adicione o seguinte comando após o comando rsync
in myrsync.sh
date +%Y%m%d_%T >> time.txt
Use o comando find
para excluir backups que correspondam ao registro de data e hora, por exemplo: adicione este comando após o date +%Y%m%d_%T >> time.txt
in myrsync.sh
find . -type f ! -newer /tmp/timestamp -delete
Ou
find . ! -newermt $date ! -type d -delete
Isso excluirá as cópias de segurança antes de uma data / hora específica.
Mais detalhes e exemplos de códigos para backups por hora / diários / mensais podem ser encontrados aqui