ildarboot,
#!/bin/sh
tar czvf <backupdir>/`date +"%Y-%m-%d"`.tar.gz <first dir for backup> [<second dir> [<third dir> ...]]
pg_dump -U<user> -P<password> <db> > <backupdir>/<dump file>
По дампу читать доку по свойе БД (в примере используется Postgres)
И для кода уже давно придумали системы контроля версий git/svn (откатывать можно все целиком, отдельные файлы, отдельные файлы к нужной версии, все к нужной версии, можно смотреть дифы, мержи и т.д.)