Мне приходится постоянно копировать файлы из моего каталога ~ / src в / home / httpd, что является проблемой, когда я вношу изменения в интерфейс. Могу ли я автоматически изменить синхронизацию файлов? - и конкретно только пока я разрабатываю - то, что я могу включать и выключать.
Я не совсем уверен, какова ваша цель, но несколько предложений, которые могут быть полезны:
Мгновенно, при изменении (сохранении): Если вы хотите, чтобы файлы обновлялись, как только они были изменены, я могу спросить, почему вы просто не вносите свои изменения в / home / httpd, а затем, когда все будет к вашему удовлетворению, скопируйте их обратно. Идея рабочего каталога для защиты (или для предотвращения закрытия вашего сайта из-за плохого редактирования) отвергается, если изменения должны быть скопированы немедленно.
Почти мгновенно, при модификации: Если по какой-то причине вы хотите, чтобы ваши изменения применялись почти мгновенно, при модификации файла (т.е. как только файл сохраняется, он копируется), я бы предложил изучить incron
. Его можно настроить для запуска сценария при изменении каталога.
По запросу (не мгновенно):
Если вы хотите завершить все свои правки, а затем отправить изменения (это именно то, что, я ожидаю, вы ищете), у вас есть несколько вариантов. Я предполагаю, что неприятность заключается в том, чтобы определить, какие файлы были изменены, и скопировать их из множества разных каталогов.
Сценарий оболочки: Одно из простых решений - использовать rsync
. Он определит, какие изменения находятся в вашем каталоге ~ / src относительно вашего каталога / home / httpd, и внесет изменения, необходимые для синхронизации вашего / home / httpd с вашим исходным каталогом.
Контроль версий: Наиболее эффективное решение, хотя и значительно более сложное, чем rsync, - это контроль версий - например, Subversion. В принципе:
svn commit
) - хук автоматически обновит / home / httpdХотя изначально этот подход более сложен в настройке, этот подход обеспечивает максимальный контроль и легко позволит вам откатить изменения, составить список измененных файлов и посмотреть, какие изменения (различия) были внесены в каждую ревизию - вы также можете добавить описание к своим изменениям. с каждой фиксацией.
Хотя это и не происходит автоматически, после внесения изменений используйте rsync:
$ rsync -r --delete /home/username/src/ /home/httpd
Вы даже можете создать псевдоним:
$ alias sync='rsync -r --delete /home/username/src/ /home/httpd'
Как я всем подчеркиваю, прежде чем использовать это, вы должны проверить man rsync
для дополнительных опций.
Кроме того, я настоятельно рекомендую использовать контроль версий (svn или мерзавец возможно) по множеству причин.
Редактировать:
Лично я бы использовал bash
цикл --- в частности while
петля с sleep
. Введите в оболочку следующее:
while true; do
sleep 300 # Every 5 minutes
rsync -r --delete /home/username/src/ /home/httpd
done &
Это сделает его фоновой работой, которую вы можете убить в любой момент. Просто введите jobs
чтобы увидеть индекс задания и, если он вам больше не нужен, введите kill %(index)
.
В качестве альтернативы можно добавить команду как cron
job, например, каждые 10 минут добавляйте в crontab следующее:
*/10 * * * * rsync -r --delete /home/username/src/ /home/httpd
Чтобы отредактировать ваш crontab:
$ crontab -e
смотреть на lsyncd. Он использует inotify для получения информации об изменениях в файлах и их синхронизации через rsync.