O seu NAS tem um serviço rsync configurado? Alguns suportam (por exemplo, ReadyNAS). Se assim for, você pode fazer algo assim:
#!/bin/sh
DEST=xx.xx.xx.xx::backup/swilliams/
RSYNC_OPTS='-vaC --exclude ".DS_Store"'
/usr/bin/rsync $RSYNC_OPTS --exclude "build/" --exclude "dist/" --exclude "*.pyc" ~/code $DEST
/usr/bin/rsync $RSYNC_OPTS ~/Music $DEST
/usr/bin/rsync $RSYNC_OPTS ~/Pictures $DEST
/usr/bin/rsync $RSYNC_OPTS --exclude "Virtual Machines*" ~/Documents $DEST
Você precisará alterar o DEST para o endereço IP do seu NAS e alterar os caminhos e outras coisas para se adequar.
Se você salvar isso como, digamos, ~/bin/backup.sh
(e certifique-se de fazer chmod a+x ~/bin/backup.sh
), então você pode executá-lo quase usando o cron. Execute crontab -e
e adicione esta linha:
0 0 * * * $HOME/bin/backup.sh > $HOME/logs/backup.log 2>&1
( 0 0 * * *
significa: executar à meia-noite todos os dias, todos os meses. A primeira coluna é minutos, então 3am é 0 3 * * *
. Isso gravará os registros em ~/logs
, portanto, verifique se o diretório existe ou coloque-os em outro local )
Se o seu NAS não suportar o rsync como um serviço, então acho que ele deve funcionar se você mudar o início para isto:
#!/bin/sh
mount_smbfs //user:[email protected]/backup /Volumes/backup
DEST=/Volumes/backup
e no final:
umount /Volumes/backup
(se o seu compartilhamento estiver aberto, você pode deixar o usuário e a senha)
Se você quiser backups com timestamp, experimente o comando date. por exemplo,
DATE='date +%Y%m%d'
acesse $ DATE no seu script.
Se algo não estiver claro para você, basta perguntar.