Manter arquivos que são freqüentemente alterados em sincronia entre a área de trabalho e o laptop

3

Estou procurando uma maneira de manter um desktop e um laptop em sincronia. O que eu quero manter em sincronia são algumas pastas, principalmente ~ / Documents, que são alteradas frequentemente quando se trabalha nelas.

Se for importante, posso me conectar à minha área de trabalho de qualquer lugar por meio de um URL, mas meu laptop é mais difícil de acessar, pois pode estar por trás do NAT e de outros sites.

Eu tenho procurado no Ubuntu One, mas parece não funcionar bem com documentos escritos em LaTeX. Se eu trabalhar em um arquivo .tex no diretório do Ubuntu One e compilá-lo (com pdflatex ) de vez em quando (a cada 10 segundos quando estiver trabalhando) ele irá criar vários novos arquivos incluindo um pdf que são enviados para o Ubuntu Um e isso parece estúpido, pois vai criar um upload contínuo ao trabalhar em arquivos .tex. Eu também geralmente mantenho a versão de documentos .tex controlada pelo git e então cada commit (que também pode acontecer com frequência) fará com que o upload (por mudanças em ./git) ocorra continuamente quando estiver trabalhando. Outro exemplo é a edição de imagens que são salvas frequentemente. O que eu acho que seria melhor para a sincronização acontecer a cada dez minutos ou no final de cada sessão de trabalho (mas pode haver alguma outra maneira de lidar com isso?).

    
por N.N. 29.06.2011 / 11:37

3 respostas

0

Esta é uma solução baseada na resposta da fossfreedom a outra questão , Sincronizando 2 sistemas Ubuntu com Unison , o manual do Unison e minha resposta para outra pergunta .

Configuração

Ambos os computadores

  1. sudo apt-get install openssh-server unison
  2. Teste o link SSH de cada computador para o outro.

No computador que pode estar por trás do NAT

  1. mkdir ~/.unison
  2. nano default.prf - Crie um arquivo perfil chamado padrão.
  3. Escreva o arquivo de perfil, por exemplo:

    root = /home/user
    
    root = ssh://[email protected]//home/user
    
    path = Documents
    

Sincronizar

Sincronize os computadores executando unison -auto default no computador que pode estar por trás do NAT. Isso irá sincronizar ~/Documents . Eu faço isso antes e depois que meu laptop sai da LAN com minha área de trabalho para manter os documentos em sincronia.

    
por N.N. 13.07.2011 / 22:19
3

Acho que você não precisa adicionar os arquivos gerados (PDF, dvi ou Postscript) ao sistema de controle de versão; no entanto, faz sentido copiá-los para um diretório sincronizado ou outro servidor. Eu costumo fazer esse tipo de coisa com o comando make .

Eu tenho um Makefile como este no diretório onde os arquivos LaTeX são (recuos são guias, não espaços). Veja o Manual GNU Make .

%.pdf: %.tex
        pdflatex  $<
        pdflatex  $<

store_pdf:
        cp example*.pdf path/to/synced_directory

upload_pdf:
        scp example*.pdf [email protected]:path/to/directory

clean:
        rm *.log *.aux *.nav *.vrb *.out *.snm *.toc

Se você quiser mover os arquivos para um diretório sincronizado ou para um servidor onde você tem acesso ssh, você precisa digitar:

make store_pdf
make upload_pdf

Se você quiser gerar o example1.pdf de example1.tex, precisará tipo:

make example1.pdf

Se você quiser remover os arquivos dos quais não precisa, digite:

make clean
    
por Arpad Horvath 30.06.2011 / 11:21
2

Você já usa o git, o que facilita as coisas. Uma solução aqui seria usar 2 repositórios git, um que é sincronizado pelo Ubuntu One e outro que não é. Você pode, então, enviar suas alterações para a pasta sincronizada quando, e somente quando, quiser que a sincronização aconteça.

Você provavelmente deseja manter a versão em ~ / Documents sincronizada junto com todos os seus outros documentos (ative a sincronização do Ubuntu One para ~ / Documents, se ainda não tiver), então crie um clone em uma pasta não sincronizada:

mkdir ~/nonsynced
cd ~/nonsynced
git clone ~/Documents/LATEX_PROJECT

Você pode então trabalhar nos arquivos em ~ / não sincronizados / LATEX_PROJECT. Quando você quiser sincronizar, pressione para ~ / Documents / LATEX_PROJECT:

git push ~/Documents/LATEX_PROJECT

Se você trabalhar em outro computador sincronizado, poderá obter a versão atualizada executando:

git pull ~/Documents/LATEX_PROJECT

de ~ / não sincronizado / LATEX_PROJECT.

Você precisará substituir o LATEX_PROJECT pelo nome da pasta controlada pela versão em ~ / Documents.

    
por dv3500ea 29.06.2011 / 12:49