Дополню.
На одном проекте у меня есть договоры, которые может смотреть только его пользователь.
Договоры храню за пределами папки сайта, к этой папке имеет доступ только юзер, под которым запускатся апач и нджинкс. Есть файл на пхп, в который передается id договора, в скрипте идет проверка действительно ли он принадлежит текущему авторизованному пользователю и если да, то на пхп отдается файл.
Листочек в клеточку отлично справляется с практическими занятиями) В универе часто были задания - сначала пишешь на листочке, продумываешь все и потом на компуктере идешь печатаешь
Главное делай все после 12 ночи, когда пользователей почти нет.
Вместо бекапов лучше просто rsync всех файлов сайта сделать заранее, а когда придет время переноса rsync докачает только новые файлы
Возьмите любой популярный движок магазина и используйте.