我正在寻找一种让台式机和笔记本电脑保持同步的方法。我想保持同步的是一些文件夹,主要是 ~/Documents,这些文件夹在使用时会经常更改。
如果重要的话,我可以通过 URL 从任何地方连接到我的桌面,但我的笔记本电脑更难访问,因为它可能位于 NAT 等后面。
我一直在研究 Ubuntu One,但它似乎不太适合处理用 LaTeX 编写的文档。如果我处理 Ubuntu One 目录中的 .tex 文件并pdflatex
时不时地(工作时每 10 秒一次)编译它(使用),它会创建几个新文件,包括一个 pdf,这些文件会上传到 Ubuntu One,这看起来很愚蠢,因为它会在处理 .tex 文件时创建连续上传。我还通常使用 git 控制 .tex 文档的版本,然后每次提交(这也会经常发生)都会导致上传(通过 ./.git 中的更改),以便它在工作时连续发生。另一个例子是编辑经常保存的图像。我认为最好的是每十分钟或每次工作会话结束时同步一次(但可能有其他方法来处理这个问题?)。
答案1
我认为您不需要将生成的 (PDF、dvi 或 Postscript) 文件添加到版本控制系统;但是将它们复制到同步目录或其他服务器是有意义的。我通常使用命令来做这类事情make
。
我Makefile
在 LaTeX 文件所在的目录中有一个类似这样的文件(缩进是制表符,而不是空格)。请参阅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
如果您想将文件移动到同步目录或您有 ssh 访问权限的服务器,您需要输入:
make store_pdf
make upload_pdf
如果您想从 example1.tex 生成 example1.pdf,您需要输入:
make example1.pdf
如果您想删除不需要的文件,您需要输入:
make clean
答案2
您已经使用过 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。
您需要将 LATEX_PROJECT 替换为 ~/Documents 中版本控制文件夹的名称。
答案3
这是一个基于的解决方案fossfreedom 对另一个问题的回答,使用 Unison 同步两个 Ubuntu 系统,Unison 手册和我对另一个问题的回答。
设置
两台电脑
sudo apt-get install openssh-server unison
- 测试从每台计算机到另一台计算机的 SSH 链接。
在可能位于 NAT 后面的计算机上
mkdir ~/.unison
nano default.prf
- 创建一个轮廓名为 default.编写配置文件,例如:
root = /home/user root = ssh://[email protected]//home/user path = Documents
同步
unison -auto default
通过在可能位于 NAT 后面的计算机上运行来同步计算机。这将同步~/Documents
。我在笔记本电脑与台式机离开 LAN 之前和之后执行此操作,以保持它们的文档同步。