如何通过网络和Internet同步主文件夹?


8

我将笔记本电脑与Ubuntu-desktop一起使用来完成所有工作,但我的办公室也只有一台低端台式机。我已经决定要在其上安装Ubuntu-server,并使用它来镜像整个笔记本电脑的主文件夹,以便在决定格式化笔记本电脑的硬盘时使事情变得更容易。

每当我上班时,两台机器都连接到网络,并通过ssh轻松进行(高速)通信。当我不在工作时,仍可以通过ssh访问桌面。理想情况下,每当我更改某些内容时,同步都会在后台自动进行。它只需要一种方式:我在笔记本电脑上所做的更改必须同步到服务器上,但是不需要相反的操作。

我知道这里有软件,我的问题是:在工作时可以使用哪些软件来实现上述目标,并充分利用局域网的速度?由于有时我会处理大文件,因此同步过程需要意识到两台计算机共享一个本地网络,然后利用它(而不是始终通过Internet进行同步)。

需要明确的是,对于我来说,通过网络进行同步实际上比通过网络进行同步更为重要。我理想情况下,该软件将检查前者是否可用,如果没有,请尝试后者;否则,请尝试使用后者。但是,如果不可能的话,第一种情况是我的优先考虑。

希望这不会太长。提前致谢。

Answers:


11

如果只能通过SSH连接到办公室服务器,那么最好的选择是使用rsync:它可以将SSH用作传输协议,并且可以使用智能算法通过仅发送已更改的块来加快大文件的传输速度。

由于您只需要单向同步,因此只需在笔记本电脑到办公室服务器之间设置无密码的SSH身份验证,然后就可以从以下简单命令开始:

rsync -e ssh -a $HOME/ myuser@officeserv:

添加--include--exclude选项以优化要同步的文件/目录列表。例如,如果两台计算机运行的不是同一操作系统(相同版本),则传输程序设置(“点文件”)可能会有风险。我的建议是首先排除所有“点文件”(因此,请使用 --exclude="$HOME/.[a-z]*"),然后有选择地添加可以安全共享的程序的配置目录(必须逐个程序查看)。此外,Web浏览器缓存$HOME/.cache始终可以被排除。有关rsync包含/排除规则语法的详细讨论,请参见手册页中的“过滤规则”部分。

但是,rsync它没有“连续操作”模式,因此您必须从crontab定期运行它 。


听起来不错。安装服务器后,我将对其进行测试。一个问题:SSH协议会自动使用与服务器的最短连接吗?我的意思是:如果客户端和服务器都在办公室网络中,它将通过局域网连接,还是总是尝试建立Internet连接?
马拉巴巴2010年

顺便说一句,您对浏览器缓存是正确的。还有其他建议我应该排除的文件夹吗?我的目标是同步所有个人文件,配置文件,设置和配置文件。
马拉巴巴

1
@Bruce Connor:SSH将使用通常的IP路由算法连接到远程主机。更新了答案文本,并建议使用初始排除列表。
Riccardo Murri

谢谢。为避免冲突,我可能会将笔记本电脑的主文件夹同步到服务器中的子文件夹(而不是服务器的实际主文件夹)。
马拉巴巴

@riccardomurri通过“无密码SSH身份验证”是否表示基于密钥文件?或者是其他东西?
david.libremone

3

我建议在rsync上使用rdiff-backup。它几乎只是rsync ++。

与rsync只是一个1-1镜像传输差异的rsync不同,rsync具有历史记录机制。因此,如果您搞砸了并删除了一些重要的内容,则可以恢复到一周前并恢复。

在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到Internet ..您应该能够以任何一种方式运行相同的脚本..只需将其主机名本地解析为本地IP。

即。backupSrv.penguins.org将解析为的外部IP。2.3.4.5但在您的局域网内:到192.168.1.253


我认为您的脚本缺少一些换行符。
马拉巴巴

2

对于我所知道的问题,没有完整的,预先打包的解决方案。为此,您可能必须自己编写一些小脚本。

同步本身可以通过完成rsync,正如Riccardo Murri所解释的那样。Rsync仅传输文件的更改部分,因此非常适合此任务。

您可以使用NetworkManagerDispatcher在网络接口的连接/断开连接上执行脚本。因此,您可以编写一个脚本来检查您是否在正确的网络上,然后调用rsync。这样,当您连接到公司网络时,您的数据将自动同步。

如前所述,要定期同步数据,可以使用cron。

通过ssh使用rsync时,还应考虑安全性。要在没有用户干预的情况下进行同步,您将需要一个无密码的密钥文件。拥有此密钥文件的任何人都可以访问它所属的服务器。我强烈建议加密您的主文件夹,以保护笔记本电脑和服务器上的数据。


1

DropBox | DropBox @超级用户 http://www.dropbox.com/help/137

DropBox应该适合您的情况,可在Linux,Mac,Windows上运行,易于设置和管理。

下载DropBox

/superuser/147315/dropbox-to-sync-nix-home-folders

http://wiki.dropbox.com/TipsAndTricks/SyncOtherFolders

通读-它确实支持通过符号链接进行同步,并且如果您必须同步某些文档,图形,电子表格-您仍然可以在保管箱中保留它们的副本,或者将其永久保存在保管箱位置以免麻烦。


我不相信您可以将Dropbox设置为主文件夹(至少还没有)。
马修2010年

superuser.com/questions/147315/dropbox-to-sync-nix-home-folders wiki.dropbox.com/TipsAndTricks/SyncOtherFolders 具有通读功能-它确实支持通过符号链接进行同步,并且如果您有某些文档,图形,电子表格,必须同步-您仍然可以在保管箱中维护它们的副本,也可以将其永久保存在保管箱中以节省麻烦。
rihatum

1
谢谢,但是我已经在各种平台上使用了保管箱。我在这里寻找的东西使我可以免费同步许多GB的文件,并可以利用本地网络。
马拉巴巴

1

尝试Sparkleshare:http : //sparkleshare.org/

Ubuntu仓库中有一个客户端,其中包含有关如何在其网站上设置服务器的说明。


看起来像一个很棒的程序-最少的解决方案;1.0版已于上个月发布。
2013年

0

2015年最好的解决方案应该是Seafile:https://www.seafile.com/en/download/

Sparkleshare开发人员说,他们自己的工具适用于许多小型文件,尤其是文本文件,但不适用于大型文件和二进制文件。

在性能方面,它的表现优于Sparkleshare和Owncloud。

另外,与OwnCloud相比,它的资源消耗要少得多,因此实例可以在香蕉或Raspberry上运行,而作为24/7运行的计算机则没有任何问题。(尽管我建议使用香蕉树Pi,但由于具有千兆网络和SATA接口,所以至少对于我来说,它是文件服务器的不错选择。)

我将我的主文件夹与三台计算机同步。我排除了点文件,它们是通过git repo和一些逻辑处理的,因为-正如里卡多提到的-在不同的计算机上共享点文件和其他配置存在一些问题,即使其操作系统和发行版相同。例如,考虑一下monitors.xml,或者在便携式计算机和多屏台式机上为IDE设计一些不同的布局,或者在两台计算机上都打开一个程序。

除了同步外,我还通过borgbackup备份了这些数据。它是一个非常不错的新备份程序,它具有重复数据删除功能,在初次备份后速度非常快,并且具有许多工具所缺少的许多功能。

它对我来说是完美的设置。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.