保持桌面和笔记本电脑之间经常更改的文件

我正在寻找一种方法来保持桌面和笔记本电脑同步。 我想要保持同步的是一些文件夹,主要是〜/ Documents,在处理它们时经常更改。

如果重要的话,我可以通过URL从任何地方连接到我的桌面,但我的笔记本电脑更难以访问,因为它可能在NAT之后等等。

我一直在关注Ubuntu One,但是在使用LaTeX编写的文档上似乎并不顺利。 如果我处理Ubuntu One目录中的.tex文件并且不时地编译它(使用pdflatex )(通常每10秒工作一次),它将创建几个新文件,包括上传到Ubuntu One的pdf和这似乎很愚蠢,因为它会在处理.tex文件时创建连续上传。 我通常也会保留由git控制的.tex文档版本,然后每次提交(也可能经常发生)将导致上传(通过./.git中的更改),以便在工作时连续发生。 另一个例子是编辑经常保存的图像。 我认为最好的方法是每隔十分钟或每个工作会话结束时进行同步(但可能有其他方法来处理这个问题?)。

我认为您不需要将生成的(PDF,dvi或Postscript)文件添加到版本控制系统; 但是将它们复制到同步目录或其他服务器是有意义的。 我通常用make命令做这类事情。

我在LaTeX文件所在的目录中有这样的Makefile (缩进是制表符,而不是空格)。 请参阅GNU制作手册 。

 %.pdf: %.tex pdflatex $< pdflatex $< store_pdf: cp example*.pdf path/to/synced_directory upload_pdf: scp example*.pdf user@server.name.com:path/to/directory clean: rm *.log *.aux *.nav *.vrb *.out *.snm *.toc 

如果要将文件移动到同步目录或具有ssh访问权限的服务器,则需要键入:

 make store_pdf make upload_pdf 

如果要从example1.tex生成example1.pdf,则需要键入:

 make example1.pdf 

如果要删除不需要的文件,则需要键入:

 make clean 

你已经使用git,这会让事情变得更容易。 这里的解决方案是使用2个git存储库,一个由Ubuntu One同步,另一个不同步。 然后,只有当您希望同步发生时,才能将更改推送到同步文件夹。

您可能希望将〜/ Documents中的版本与所有其他文档一起保存(如果尚未启用Ubuntu One同步〜/ Documents),请在非同步文件夹中创建克隆:

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

然后,您可以处理〜/ nonsynced / LATEX_PROJECT中的文件。 如果要同步,请按〜/ Documents / LATEX_PROJECT:

 git push ~/Documents/LATEX_PROJECT 

如果您随后在另一台同步计算机上工作,则可以通过运行以下命令获取最新版本:

 git pull ~/Documents/LATEX_PROJECT 

来自〜/ nonsynced / LATEX_PROJECT。

您需要在〜/ Documents中将LATEX_PROJECT替换为版本控制文件夹的名称。

这是一个解决方案,基于fossfreedom对另一个问题的回答 , 同步2个Ubuntu系统和Unison , Unison手册以及我对另一个问题的回答 。

建立

两台电脑

  1. sudo apt-get install openssh-server unison
  2. 测试从每台计算机到另一台计算机的SSH链接。

在可能在NAT后面的计算机上

  1. mkdir ~/.unison
  2. nano default.prf – 创建名为default的配置文件。
  3. 编写配置文件,例如:

     root = /home/user root = ssh://user@user.dyndns-ip.com//home/user path = Documents 

同步

通过在可能位于NAT后面的计算机上运行unison -auto default来同步计算机。 这将同步~/Documents 。 我在我的笔记本电脑离开局域网与我的桌面之前和之后这样做,以保持他们的文件同步。