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

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

我有一个文件夹,其中有一些文件,并且网络服务器上有一些空间。我想在Linux中的本地文件夹和远程文件夹之间进行双向同步,仅在修改时进行。我该怎么做呢?顺便说一句,我无法在服务器上安装任何东西,出于所有意图和目的,它只是空间。

注意:我已经设置了 rsa 密钥对,这样它就可以悄悄地发生。

答案1

单向同步选择的工具是rsync,双向同步选择的工具是齐奏。两者都要求可执行文件在双方都可用。如果您可以使文件在服务器端可执行,请删除一致二进制文件并使其可执行。

如果您本地有 Linux、*BSD、Solaris 或 Mac OS X,您可能可以使用保险丝文件系统,使 Web 服务器空间显示为本地文件系统 —sshfs应该可以工作,因为你似乎有 ssh 访问权限。然后“本地”使用齐奏。

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

答案2

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

要使其双向,请执行此操作(引用自http://forums11.itrc.hp.com/service/forums/questionanswer.do?admit=109447626+1285799008594+28353475&threadId=1278777):

要将目录双向同步/src/foohostAon /dest/foohostB包括所有子目录,您可以在 上运行以下命令 hostA

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

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

第二个命令将把所有较新的文件hostB拉到hostA.关键选项是:

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

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

要跳过目标上较新的任何文件:-u执行此操作。

答案3

每次您需要在两个文件夹之间同步时,rsync这是一个非常灵活的选择。问题是,rsync 不支持 ftp 协议。一个很好的解决方法是卷曲FTPFS:

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

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

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

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

请阅读联机帮助页以获取更多信息。

如果您不想费力安装curlFtpFS而只想保持一些文件同步,有很多提供此类同步功能的ftp工具:

  • FTPSync.pl- 简单的 PERL 脚本来保持本地和远程目录同步
  • 威克斯- 用于更新网页的非交互式 FTP 客户端
  • 菲勒齐拉- 具有多种功能的 GUI FTP 客户端
  • ...

相关内容