我使用装有 Ubuntu 桌面的笔记本电脑来完成所有工作,但我办公室里还有一台低端台式机。我决定在它上面安装 Ubuntu 服务器,并使用它来镜像我的整个笔记本电脑主文件夹,以便在我决定格式化笔记本电脑硬盘时更方便。
每当我上班时,两台机器都连接到网络,并通过 ssh 轻松(高速)通信。当我不在工作时,仍然可以通过 ssh 访问桌面。理想情况下,每当我更改某些内容时,同步都会在后台自动进行。它只需要一种方式:我在笔记本电脑上所做的更改必须同步到服务器,但反过来则没有必要。
我知道有这方面的软件,我的问题是:我可以使用什么软件来实现上述目标,并在工作时充分利用本地网络速度?由于我有时会处理大文件,因此同步过程需要意识到两台计算机共享本地网络,然后利用这一点(而不是始终通过互联网同步)。
需要说明的是,对我来说,通过网络同步实际上比通过互联网同步更重要。理想情况下,软件会检查前者是否可用,如果不可用,则尝试后者;但如果这不可能,第一种情况是我的优先事项。
希望这不会太长。提前致谢。
答案1
如果你只能通过 SSH 连接到办公室服务器,那么最好的选择是使用同步:它可以使用 SSH 作为传输协议,并使用智能算法通过仅发送更改的块来加速大文件的传输。
由于您只需要单向同步,只需从笔记本电脑到办公室服务器设置无密码 SSH 身份验证,然后就可以使用如下简单命令开始:
rsync -e ssh -a $HOME/ myuser@officeserv:
添加--include
和--exclude
选项以优化要同步的文件/目录列表。例如,如果两台计算机运行的操作系统不同(版本不同),则传输程序设置(“点文件”)可能会有风险。我的建议是先排除所有“点文件”(因此,使用
--exclude="$HOME/.[a-z]*"
),然后有选择地添加可以安全共享的程序的配置目录(这必须逐个程序查看)。此外,Web 浏览器缓存和始终可以排除。有关包含/排除规则语法的详细讨论,$HOME/.cache
请参阅手册页中的“过滤规则”部分。rsync
但是,rsync
没有“连续操作”模式,因此您必须定期从您的
定时任务。
答案2
我建议使用 rdiff-backup 而不是 rsync。它实际上就是 rsync++。
与 rsync 不同,rsync 只是一个传输差异的 1-1 镜像,它有一个历史机制。因此,如果你搞砸了并删除了一些重要的东西,你可以恢复到一周前并恢复它。
在 ubuntu“服务器”上,您只需运行 ssh 即可 apt-get install rdiff-backup。
在客户端上。我要么手动运行它,要么通过 crontab 运行。
#!/bin/bash
#backup.sh
rdiff-backup -v5 --exclude path-to-annoyingfile /home/user/ hostname::/media/data/snapshots/laptop
## this will cleanup any backups older then 2weeks. Adjust this as needed.
rdiff-backup --remove-older-than 2W --force hostname::/media/data/snapshots/laptop
#!/bin/bash
##Restore.
rdiff-backup -v5 --restore-as-of now --force user@hostname::/media/data/snapshots/laptop /home/user
如果您将端口 22 开放到互联网,那么您应该能够以任意方式运行相同的脚本,只需让您的主机名本地解析为您的本地 IP 即可。
即 backupSrv.penguins.org 将解析为外部 IP 2.3.4.5,但在您的局域网内:为 192.168.1.253
答案3
据我所知,没有完整的、预先打包的解决方案可以解决您的问题。您可能需要自己编写一些小脚本来解决此问题。
同步本身可以通过 来完成rsync
,正如 Riccardo Murri 所解释的那样。Rsync 只传输文件的更改部分,因此它非常适合这项任务。
您可以使用网络管理器调度器在网络接口连接/断开连接时执行脚本。因此,您可以编写一个脚本来检查您是否在正确的网络上,然后调用 rsync。这样,当您连接到公司网络时,您的数据就会自动同步。
要定期同步您的数据,您可以使用 cron,正如前面提到的。
通过 ssh 使用 rsync 时,您还应该考虑安全性。要进行无需用户干预的同步,您需要一个无密码密钥文件。任何拥有此密钥文件的人都可以访问它所属的服务器。我强烈建议加密您的主文件夹以保护笔记本和服务器上的数据。
答案4
尝试 Sparkleshare:http://sparkleshare.org/
Ubuntu repo 中有一个客户端,其网站上有关于如何在其网站上设置服务器的说明。