Posso obter o Emacs para salvar uma cópia local ao editar um arquivo remoto?

2

Eu sei que posso editar um arquivo remoto através do SSH abrindo um caminho de arquivo no formato /ssh:user@host:/path/to/file .

No entanto, agora estou trabalhando em um módulo do kernel em uma VM Linux. Como meu módulo do kernel pode corromper / corromper minha VM (se cometer um erro estúpido), estou preocupado em perder meus arquivos de origem remotos para o módulo do kernel.

Eu gostaria que o Emacs salvasse uma cópia local do arquivo que estou editando, apenas para ter certeza de que não perderei meu trabalho mais recente se arruinar minha VM *. O ideal é que a cópia local não tenha o nome mangling aplicado (por exemplo, anexar ~ ao nome, como o Emacs normalmente faz para arquivos de backup).

* Sim, estou usando o controle de código-fonte, mas não quero ter commit e push para cada alteração. Eu sou bastante novo em relação ao hacking de módulos do kernel, então vou fazer muitas pequenas edições e testar muito o meu módulo à medida que eu for. Constantemente cometer e empurrar as mudanças incompletas está longe de ser ideal.

Existe uma maneira fácil de obter o Emacs para salvar uma cópia local de um arquivo ao editar um arquivo remoto? Estou vendo os documentos ( Arquivos remotos , Salvar arquivos automaticamente , Arquivos de backup , Backups únicos ou numerados ) e não consigo ver como fazer isso.

    
por Cornstalks 10.04.2015 / 19:31

2 respostas

0

Eu não estou familiarizado com o emacs, mas posso pensar em várias soluções:

1) Trabalhe em uma pasta NAS que, na verdade, é um sistema de arquivos que não está na máquina que você está executando, mas sim um compartilhamento NFS de CIFS. Não tem certeza de como isso funcionará se suas mangueiras de VM estiverem ativas

2) Crie uma macro personalizada que salvará o arquivo localmente e depois invoque um comando scp para enviar o arquivo alterado para outro lugar

3) Edite os arquivos na máquina que executa a VM e envie-a automaticamente para qualquer alteração na VM. Você poderia executar algo como abaixo em uma segunda janela de terminal

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

Acima seria bom para execução única. Você também pode fazer um loop infinito:

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

Nota: Isso pressupõe que você configure a autenticação de chave ssh sem senha, para que o scp não solicite credenciais.

    
por 10.04.2015 / 21:01
0

shadowfile.el faria isso por você. Infelizmente, ainda vive no mundo ange-ftp. Portando para entender Tramp está na minha lista de afazeres, mas eu não fiz ainda.

    
por 12.04.2015 / 10:10