ОК, я, вероятно, не первый человек, пытающийся объединить веб-интерфейс PHP с rsync для упрощения развертывания, но это происходит.Синхронизация rsync, опуская каталоги
У нас есть сервер «QA» локально и сервер «Staging» в Rackspace. Я установил пары ключей SSH, чтобы я мог rsync между двумя серверами, и все это отлично работает. Проблема в том, что rsync немного шелушится относительно того, что он решает, нуждается в обновлении.
Сценарий, который я написал, сначала выполняет rsync с параметром «-dry-run», чтобы получить список всего, что необходимо для переноса. Команда выглядит следующим образом:
$strCheck = shell_exec(
"rsync " .
"--verbose " .
"--recursive " .
"--safe-links " .
"--checksum " .
"--dry-run " .
"--delete " .
"--delete-excluded " .
"--force " .
"--cvs-exclude " .
"--human-readable " .
"/apps/{$system}/ " .
"[email protected]:/apps/{$system}_staging/"
);
Теперь это все работает отлично, и я могу разобрать строку, которая возвращается в материал, который нуждается в удалении и прочее, что необходимо при добавлении/обновления. Затем я создаю таблицу HTML, которая автоматически отбрасывает каждый флажок, основываясь на том, где он находится в иерархии. Я также использую немного javascript, поэтому я могу разрешить пользователю выбирать все файлы в папке.
Если сама папка должна быть добавлена / удалена, она включает ее в список. Например:
/newfolder/
/newfolder/file1.php
/newfolder/file2.php
, который является большим, потому что «/ NewFolder /» будет отображаться с одним отступом и «/newfolder/file1.php» и «» /newfolder/file2.php каждому из них будет отображаться два отступы под «/ newfolder /». Флажок рядом с '/ newfolder /' автоматически выберет два «дочерних» файла, и все будут довольны.
Однако, если это просто добавление/обновление файлов в папку, она не включает саму папку:
/oldfolder/filea.php
/oldfolder/fileb.php
...
Что означает все файлы в «/ oldfolder /» будет имеют два отступа, но нет видимого механизма для выбора всех файлов в папке.
Итак, мой вопрос заключается в следующем: есть ли что-то, что мне не хватает в доступных параметрах rsync, где я могу заставить его включить папку для любых обновленных файлов, или мне придется добавить их, когда я прохожу через массив? Если это последний, какой был бы лучший способ сделать это?
Помощи мне Обь Stack Overflowbi, ты моя единственная надежда ...
stack obiflow kenobi? – falstro
+1 за качество и тему вопроса, а также за смешную ссылку. –