2

Я знаю, что могу редактировать удаленный файл через SSH, открыв путь к файлу в формате /ssh:user@host:/path/to/file .

Однако сейчас я работаю над модулем ядра в виртуальной машине Linux. Так как мой модуль ядра может заблокировать / испортить мою ВМ (если я сделаю глупую ошибку), я беспокоюсь о том, чтобы потерять мои удаленные исходные файлы для модуля ядра.

Я бы хотел, чтобы Emacs сохранил локальную копию файла, который я редактирую, просто для того, чтобы не потерять свою последнюю работу, если я испорчу свою ВМ *. В идеале к локальной копии не должно применяться искажение имени (т.е. добавление ~ к имени, как это обычно делает Emacs для файлов резервных копий).

* Да, я использую контроль исходного кода, но я не хочу делать коммит и настаивать на каждом отдельном изменении. Я довольно новичок в взломе модулей ядра, поэтому я буду вносить множество небольших правок и тестировать свой модуль по ходу работы. Постоянно совершать и проталкивать недоделанные изменения далеко от идеала.

Есть ли простой способ заставить Emacs сохранить локальную копию файла при редактировании удаленного файла? Я просматриваю документы (Удаленные файлы, Автосохранение файлов, Резервные файлы, Отдельные или пронумерованные резервные копии) и не вижу, как это сделать.

2 ответа2

0

shadowfile.el сделает это за вас. К сожалению, он все еще живет в мире ange-ftp. Портирование, чтобы понять, что Трамп находится в моем списке задач, но я еще не сделал.

0

Я не знаком с Emacs, но я могу придумать несколько решений:

1) Работа в папке NAS, которая на самом деле является файловой системой, которая находится не на той машине, с которой вы работаете, а скорее в виде общего ресурса NFS из CIFS. Не уверен, насколько хорошо это будет работать, если ваша виртуальная машина подключена

2) Создайте собственный макрос, который сохранит файл локально, а затем вызовет команду scp, чтобы отправить измененный файл в другое место.

3) Отредактируйте файлы на машине, на которой запущена виртуальная машина, и сделайте так, чтобы она автоматически отправляла любые изменения в виртуальную машину. Вы можете запустить что-то вроде ниже во втором окне терминала

FILE=thenameofthefileIwanttoeditandsend
inotifywait -E CLOSE_WRITE $FILE && scp -p $FILE user@host:/target/folder/

Выше был бы хорош один раз казнь. Вы также можете сделать бесконечный цикл:

FILE=thenameofthefileIwanttoeditandsend
while true; do inotifywait -E CLOSE_WRITE $FILE && scp -p $FILE user@host:/target/folder/; done

Примечание. Предполагается, что вы настраиваете аутентификацию по ssh-ключу без пароля, поэтому scp не запрашивает учетные данные.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .