在Linux中将本地目录与远程目录同步


14

我有一个文件夹,里面有几个文件,网络服务器上还有一些空间。我想在修改时立即在linux中的本地文件夹和远程文件夹之间进行双向同步。我该怎么做呢?顺便说一句,我不能在服务器上安装任何东西,出于所有目的和目的,它仅仅是空间。

注意:我已经设置了rsa密钥对,因此它可以静默发生。

Answers:


12

用于单向同步的首选工具是rsync,用于双向同步的首选工具是Unison。两者都要求可执行文件在两侧均可用。如果可以使文件在服务器端可执行,则删除统一二进制文件并将其可执行。

如果本地有Linux,* BSD,Solaris或Mac OS X,则可能可以使用FUSE文件系统使Web服务器空间显示为本地文件系统-sshfs应该可以工作,因为您似乎具有ssh访问权限。然后在本地使用统一。

还要注意,大多数版本控制软件(CVS / Subversion以及分布式VCS)都具有同步功能(通过一台计算机签入,在另一台计算机上签入)。


4

如果已安装在服务器上,请使用rsync它的构建来完成该工作。

要使其双向获取(从http://forums11.itrc.hp.com/service/forums/questionanswer.do?admit=109447626+1285799008594+28353475&threadId=1278777引用):

要双向同步的目录/src/foohostA,以/dest/foohostB,包括所有的子目录,你会在运行这些命令 hostA

rsync -auz /src/foo hostB:/dest 
rsync -auz hostB:/dest/foo /src

第一个命令将所有较新的文件推hostA送到hostB

第二个命令将拉都属于较新的文件hostBhostA。关键选项是:

复制时,必须保留文件修改时间。-a做这个和其他事情;

如果只想保留修改时间,请-t改用。

要跳过目标上较新的文件:-u这样做。


据我所读rsync不双向,当我尝试它给我的错误“协议版本不匹配-您的外壳干净吗?”
安德鲁·雷德

hostanswers.net/linux-hosting/rsync-protocol-version-mismatch可能有助于您解决版本不匹配的问题。对于双向操作,我更新了答案。
tante

1
Rsync根本不适合双向同步。一方面,如果发生冲突,它不会警告您。请改用Unison,这是完成工作的正确工具。
吉尔斯(Gillles)“所以-别再邪恶了”,2010年

1
如果将来服务器A来自服务器B,这确实会令人震惊。对于我而言,我比远程服务器要早13个小时。
Tim Post

1

每次需要在两个文件夹之间进行同步时,这rsync是一个非常灵活的选择。问题是,rsync不支持ftp协议。一个不错的解决方法是curlFtpFS

CurlFtpFS是用于基于FUSE和libcurl访问FTP主机的文件系统。

使用curlFtpFs可以很容易地在文件系统中包含一个远程ftp文件夹。

这是一个简短的示例,显示了这两种工具的用法:

curlftpfs -r -s ftp.foobar.com /foo
rsync -a /foo/ /bar
umount /foo

阅读手册页以获取更多信息。

如果您不想花大力气安装curlFtpFS,而只是想保持某些文件同步,那么有很多ftp工具提供了这样的同步功能:

  • FTPSync.pl-简单的PERL脚本,可保持本地和远程目录同步
  • weex-用于更新网页的非交互式FTP客户端
  • filezilla-具有许多功能的GUI FTP客户端
  • ...

1. Rsync不适用于双向同步,请改用Unison。2. FTP来自哪里?在问题中提到RSA密钥时建议使用ssh(因此也建议使用sshfs)。
吉尔斯(Gilles)“所以,别再邪恶了”

是的,问题中没有提到FTP。老实说,我认为这是“网络空间”和“只是空间”的结合。昨天有点累
echox 2010年
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.