На вашем NAS настроена служба rsync? Некоторые поддерживают это (например, ReadyNAS). Если это так, вы можете сделать что-то вроде этого:
#!/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
Вам нужно будет изменить DEST на IP-адрес вашего NAS, а также изменить пути и другие подходящие элементы.
Если вы сохраните это как, скажем, ~/bin/backup.sh
(и обязательно выполните chmod a+x ~/bin/backup.sh
), то вы можете запустить его с помощью cron. Запустите crontab -e
и добавьте эту строку:
0 0 * * * $HOME/bin/backup.sh > $HOME/logs/backup.log 2>&1
(0 0 * * *
означает: бегать в полночь каждый день, каждый месяц. Первый столбец - минуты, поэтому 3 часа ночи - 0 3 * * *
. Это запишет логи в ~/logs
поэтому убедитесь, что каталог существует, или поместите их в другое место)
Если ваш NAS не поддерживает rsync как сервис, то я думаю, что он должен работать, если вы измените начало на следующее:
#!/bin/sh
mount_smbfs //user:password@xx.xx.xx.xx/backup /Volumes/backup
DEST=/Volumes/backup
и в конце:
umount /Volumes/backup
(если ваша доля открыта, вы можете оставить имя пользователя и пароль)
Если вы хотите создавать резервные копии с отметкой времени, вы можете поэкспериментировать с командой date. например
DATE=`date +%Y%m%d`
затем получите доступ к $ DATE в вашем скрипте.
Если что-то здесь вам не понятно, просто спросите.