Существует коммерческий веб-сервер, названный Zeus, который вполне широко используется в отраслях промышленности содержания, характеризуемых большим объемом статическое содержание. IIRC это на основе асинхронного. Ввод-вывод, который очень эффективен на ЦП. Это могло бы сделать то, что Вы хотите, но это не свободно.
Я чувствую Вашу боль. У меня есть весь свой ~/. файлы *rc при управлении версиями (Подверсия), работал отлично, так как я запустил в 1998, с помощью CVS. Один способ сделать это, должен проверить все Ваши емкостно-резистивные файлы как это, когда Вы стоите в своем корневом каталоге:
svn co svn+ssh://user@host/path/to/repo/trunk/home/user .
A .signature
A .vimrc
A .bashrc
A .screenrc
A .psqlrc
[...]
Checked out revision 7645.
Таким образом, файлы конфигурации будут также синхронизироваться и обновляться через различные компьютеры при выполнении обновления svn.
У меня есть та же ситуация, но это не просто" .vimrc
". У меня также есть вещи как
Мое решение (запустился 30 лет назад с "dist" первоначально!) должен настроить ночной крон к rsync минимальная домашняя конфигурация ко всем машинам, я продолжаю работать, так, чтобы он обновил ночью.
Тот путь все другие машины, с которыми я работаю, усовершенствованы! Я могу просто добавить, что новая машина в 'учетные записи' перечисляет и делает единственное распределение машины для начинания его.
не должен быть очень, и можно начать с малого и сделать это более сложным, когда Вы идете. Как можно предположить после 30 лет, мое распределение теперь довольно сложно, таким образом, я не помещу его здесь. Само собой разумеется, это также делает вещи, любят, выгружают некоторую конфигурацию для других для некоторых сетей, размещают очистку (EG: мусор, файлы кэша), гарантируют, что домашние полномочия все корректны и так далее.
ПРИМЕЧАНИЕ я только позволяю пароль меньше ssh вход в систему от одной 'домашней' машины до всего остальные, никогда назад снова! Любой крест ssh защищен паролем.
Я записал простой инструмент для этого, которое позволит, Вы к исходно транспортируете свой .vimrc файл каждый раз, когда Вы ssh, при помощи встроенных опций конфигурации SSHd нестандартным способом.
Никакое дополнительное svn
, scp
, copy/paste
, и т.д. требуемый.
Это просто, легко, и работает по умолчанию над всеми конфигурациями сервера, которые я протестировал до сих пор.
Вы могли бы рассмотреть ОЖИДАТЬ сценарий, который позволяет Вам устанавливать свой путь и среду (как переменные EXRC) после нажатия определенного нажатия клавиши. Не должно быть слишком длинным, прежде чем кто-то отправит подобный сценарий.
То, когда Ваш номер ферм сервера больше чем несколько дюжин (думают тысячи) затем наличие чего-то легко устанавливает Вашу среду на 'девственном' поле, является настоящим спасителем
Часто, когда я вхожу в поле, оно создает мой homedir впервые!
Если Вы похожи на меня и имеете много машин разработки (Виртуальные машины также) по различным причинам, можно объединить ssh ключи, умный bash_profile и RCS по Вашему выбору.
Я был бы второе использование nfs/samaba/sshfs. Каждый отступает, то, если у Вас нет доступа к сети все время затем, Вы не можете получить доступ к тому, в чем Вы нуждаетесь (полет, никакой Wi-Fi, брандмауэры, проблемы маршрутизации, и т.д.). Машины, которые я сохраняю в синхронизации, не все достижимы одновременно, но я хочу поделиться информацией между ними.
Следующее - то, как я пошел об этом, одолжив много идей у Интернета.
.bash_profile мог иметь что-то вроде этого
$HOME/bin/shell_ssh_agent
Я получил это от нескольких мест, но не могу найти ссылку на нее теперь. shell_ssh_agent файл:
#!/bin/bash
SSH_ENV=$HOME/.ssh/environment
#echo "starting"
function start_agent {
#echo "reaping agents"
killall ssh-agent
#echo "Initialising new SSH agent..."
/usr/bin/ssh-agent | sed 's/^echo/#echo/' > ${SSH_ENV}
#echo succeeded
chmod 600 ${SSH_ENV}
. ${SSH_ENV}
/usr/bin/ssh-add;
}
# Source SSH settings, if applicable
if [ -f "${SSH_ENV}" ]; then
. ${SSH_ENV}
#echo "sourced ssh env"
ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent > /dev/null || { start_agent; }
else
start_agent;
fi
Теперь на первом входе в систему Вы настраиваете свои ключи. Выйдите и зайдите и это просто сделало жизнь легче.
Поместите все свои сценарии в RCS, это делает машины разработки хранения в синхронизации легче. Я использую мерзавца. Аутентификация с мерзавцем через ssh так ssh справка ключей здесь также. Отметьте в этой точке, Вы, возможно, использовали что-то как nfs. Я все еще был бы поклонником RCS по причине, которую я упоминаю ниже.
Вариант использования
Что-то, что я хочу попробовать затем, является переносом начальный вход в систему/установка в make-файле, который я копирую в новую машину. Make-файл может затем сделать задание установки Ваших ключей, RCS, и т.д. Очевидно, существуют немного служебные здесь, но если Вы заканчиваете тем, что настроили много машин, это:
Тот же самый ответ как sunny256, но мерзавец использования вместо SubVersion.
Сохраните одно основное ответвление с файлами, которое характерно для всех компьютеров, и имейте одно ответвление для каждого нового компьютера.
Тем путем Вы можете иметь почти те же файлы на большинстве компьютеров и все еще не стать к запутанному.
Несколько решений:
1) Создайте долю NFS для своей домашней папки и отобразите ее в нескольких местоположениях.
2) Создайте маленький сценарий для продвижения .vimrc к серверу, с которым Вы соединяетесь с идентификационными данными/файлом ключей. Это могло выглядеть примерно так, (псевдокодируйте):
connectString = arg0 #username@ipaddress
scp -i ~/.ssh/indentity connectString:~/ ~/.vimrc
ssh -i ~/.ssh/indentity connectString
Вы могли сделать сценарий удара для копирования его автоматически каждый раз, когда Вы входите в систему, как это:
#!/usr/bin/env bash
scp ~/.vimrc $1:
ssh $1
Можно назвать это ssh_vim, например. Это не идеальное решение, но решит Вашу проблему.
Можно улучшить его для проверки сначала, существует ли уже там. Если Вы всегда выполняете ssh от той же машины, Вы могли бы изменить сценарий для получения файла от scp от другой машины.
EDIT1
На связанной ноте Вы могли также смонтировать файловую систему удаленной машины с sshfs. Тем путем Вы извлекаете выгоду из своей среды и инструментов (не только .vimrc), и у Вас есть завершение оболочки (который у Вас нет использования scp://).
EDIT2
Я просто узнал, что можно получить .vimrc файл с помощью scp://, как это:
:source scp://you@your_computer//yourpath/.vimrc
Это работает из командной строки энергии, но в данный момент я не знаю, как автоматизировать ее. Это, кажется, не работает ни один с '-u' переключатель, ни в .vimrc, ни с $VIMINIT.
EDIT3
Я нашел его! Можно сделать это для запуска энергии с .vimrc, взятого от хоста ссылки:
vim -c ':source scp://you@your_computer//yourpath/.vimrc'
Опция '-c' выполняет команду прямо после запускающейся энергии.
Можно создать псевдоним в оболочке выбора постараться не вводить. В ударе это было бы похоже на это:
alias vim="vim -c ':source scp://you@your_computer//yourpath/.vimrc'"
Вместо того, чтобы принести .vimrc к каждому серверу необходимо продолжить работать, почему бы не отредактировать удаленные файлы от локальной энергии:
В vim/gvim, выполненном:
:e scp://remoteuser@server.tld//path/to/document
или запустите энергию как это:
vim scp://remoteuser@server.tld//path/to/document
Это открывает файл по-видимому на месте (он на самом деле копирует файл локально), и когда Вы сохраняете, он передает отредактированный файл обратно серверу для Вас.
Это просит ssh пароль, но это может быть оптимизировано через ssh ключи.
Поскольку другие упомянули, что единственный недостаток этого метода состоит в том, что Вы не получаете путь/файл competion, как Вы были бы при работе непосредственно над машиной.
Для большего количества информации проверьте следующее учебное руководство.
Я использую make-файл, который имеет список всех серверов, что я вхожу в систему и когда я вношу изменение на своей локальной машине, 'сделайте', выполняется с помощью make-файла автоматически, который обновляет все серверы с любыми изменениями или любыми плагинами
Я знаю, что это старый поток, но я использую sshfs, который монтирует файловую систему через предохранитель. Локальный vim выполняет все редактирование, поэтому нет причин копировать .vimrc.
У этого есть обратная сторона: другой терминал должен быть открыт для любых команд, которые необходимо запустить на удаленном сервере, но для редактирования Я считаю этот способ лучшим.
Он также имеет дополнительное преимущество в виде возможности использовать системный буфер обмена.
Я использую https://github.com/andsens/homeshick для управления моими точечными файлами и хранения их на github.
Homeshick написан на 100% bash и помогает вам управлять "замки" - это просто репозитории git, содержащие каталог / home /. В нем есть команды для перемещения существующих точечных файлов в репо и замены их символическими ссылками. И создать символическую ссылку на все файлы в репо в ваш домашний каталог на новой машине.
Таким образом, общая идея состоит в том, чтобы хранить ваши точечные файлы в системе контроля версий и создавать символьные ссылки на них с реального пути. Таким образом, ваше репо не должно начинаться с вашего домашнего каталога и содержать массу файлов, которые вы никогда не хотите добавлять.
Если вы используете аутентификацию с помощью публичных ключей, вы можете использовать это в вашем ~/.ssh/config
:
Host *
PermitLocalCommand yes
LocalCommand bash -c 'scp -P %p %d/.vimrc %u@%n: &>/dev/null &'
Мне это нравится больше, чем предложенный выше трюк со сценарием, так как он не портит вызов команды ssh
(при указании дополнительных параметров и т.д.)
Использование переменной VIMINIT:
export VIMINIT='set number'
и пересылка ее на удаленный сервер:
ssh remoteuser@remoteserver -o SendEnv=LC_VIMINIT -t 'export VIMINIT=$LC_VIMINIT && bash'
легко использовать .bash_profiles или .bashrc
export VIMINIT='
set number
'
export LC_VIMINIT=$VIMINIT
sshh (){
ssh -o SendEnv=LC_VIMINIT $1 -t 'export VIMINIT=$LC_VIMINIT && bash'
Теперь попробуйте запустить vim на удаленном сервере, используя sshh для соединение:
sshh remoteuser@remoteserver
При желании Вы также можете перенести свои плагины на удаленный сервер:
export LC_VIMINIT="
set number
set nocompatible
filetype off
set rtp+=~/.[USER]_vim/bundle/Vundle.vim
call vundle#begin()
Plugin 'VundleVim/Vundle.vim'
set shell=/bin/bash
call vundle#end()
filetype plugin indent on
"
export VIMINIT=$LC_VIMINIT
sshh (){
if [[ $1 ]]; then
ssh-copy-id $1 &>/dev/null &&
rsync -lzr --partial --del ~/.[USER]_vim ${1}: &&
ssh -o SendEnv=LC_VIMINIT $1 -t 'export VIMINIT=$LC_VIMINIT && bash';
else
echo "Provide remote user@host";
fi
}
Это было реализовано с помощью следующей строки bash. Поскольку это выполняется с помощью подстановки процесса, временные файлы не создаются.
ssh -t user@host '
bash --rcfile <(
echo -e ' $(cat <(echo "function lvim() { vim -u <(echo "$(cat ~/.vimrc|base64)"|base64 -d) \$@ ; }") \
~/dotfiles/{.bashrc,sh_function,sh_alias,bash_prompt} \
<(echo -e alias vim=lvim) | \
base64
) ' \
|base64 -d)'
https://gist.github.com/blacknon/a47083f3bbbd0374998bdf7e3b3396cc