保持桌面和笔记本电脑之间经常更改的文件
我正在寻找一种方法来保持桌面和笔记本电脑同步。 我想要保持同步的是一些文件夹,主要是〜/ 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手册以及我对另一个问题的回答 。
建立
两台电脑
-
sudo apt-get install openssh-server unison
- 测试从每台计算机到另一台计算机的SSH链接。
在可能在NAT后面的计算机上
-
mkdir ~/.unison
-
nano default.prf
– 创建名为default的配置文件。 -
编写配置文件,例如:
root = /home/user root = ssh://user@user.dyndns-ip.com//home/user path = Documents
同步
通过在可能位于NAT后面的计算机上运行unison -auto default
来同步计算机。 这将同步~/Documents
。 我在我的笔记本电脑离开局域网与我的桌面之前和之后这样做,以保持他们的文件同步。