Я рекомендовал бы использовать пакет backupninja
- это - в основном обертка для некоторых автоматических сценариев для того, чтобы сделать резервное копирование различных сервисов. Я могу использовать duplicity
, rdiff-backup
(мое предпочтение), запишите DVD ISO и т.д.
sudo apt-get install backupninja rdiff-backup
И получить Вас запустилось (будет вести Вас посредством установки различных частей):
sudo ninjahelper
Это также позволяет Вам добавлять случайные пути к резервному копированию, когда это в нем так или иначе. От того, что спас несколько машин от резервного копирования, я нахожу удобным смочь скопировать по известному / и т.д.,/srv/http (где я сохраняю веб-материал), и дампы базы данных.
После того как это сделано, единственная проблема состоит в том, что ninjahelper настаивает, чтобы Вы или установили пароль root на удаленной машине - или вручную передали ключ SSH (ЕСЛИ Вы делаете удаленные резервные копии вообще):
На локальной машине:
sudo ssh-keygen
sudo scp /root/.ssh/id_dsa.pub YOUR_USERNAME@remote.machine.tld:backup_key
Ubuntu идет с резервным пользователем на значение по умолчанию, таким образом, мы добавляем ключ SSH для разрешения удаленных входов в систему:
sudo mkdir -p /var/backup/.ssh
sudo mv backup_key /var/backup/.ssh/authorized_keys
sudo chown backup:backup /var/backup/.ssh/authorized_keys
(Это из памяти, таким образом, я мог бы быть немного выключен на точных командах...),
Настройте sudo, чтобы позволить www-данным выполнить тот сценарий или как myapp или как корень (в зависимости от которого предпочтен), затем выполните его как sudo redeploymyapp.
Это должно быть столь же просто как:
www-данные ВСЕ = (myapp) NOPASSWD: redeploymyapp
добавленный через visudo. Вероятно, также стоящий замечания, что redeploymyapp должен быть абсолютно автономным (то есть, никакие аргументы, обеспеченные веб-запросом, нет смысла в переменных среды, и т.д.)
Одна опция состоит в том, чтобы позволить MyPortal, при нажатии кнопки, запишите значение в в базе данных или в файл. В свою очередь MyApp непрерывно контролирует ту базу данных/файл.
Иначе можно использовать некоторое suexec волшебство удостовериться, что redeploymyapp может быть выполнен как myapp пользователь. Какое suexec решение наиболее подходит, действительно зависит, на каком языке сценариев Вы используете и т.д.
(Контакт со Сценариями PHP у меня есть хороший опыт с suPHP.)
Затем существует также, как James упоминает, маршрут sudo.