На вашем 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 в вашем скрипте.
Если что-то здесь вам не понятно, просто спросите.