当前位置:  开发笔记 > 编程语言 > 正文

使远程目录保持最新

如何解决《使远程目录保持最新》经验,为你挑选了3个好方法。

我非常喜欢Winscp中的Keep Remote Directory最新功能.不幸的是,我在OS X或Linux中找不到任何简单易用的东西.我知道理论上可以使用changedfiles或rsync完成同样的事情,但我总是发现这两个工具的教程缺乏和/或相互矛盾.

我基本上只需要一个在OSX或Linux中工作的工具,并在我更改本地目录时保持远程目录与本地目录同步(镜像).


更新

通过解决方案,我看到一对解决了手动保持远程目录与本地目录同步的一般问题.我知道我可以设置一个cron任务来每分钟运行rsync,这应该非常接近实时.

这不是我正在寻找的确切解决方案,因为winscp执行此操作以及更多:它检测目录中的文件更改(当我处理它们时),然后自动将更改推送到远程服务器.我知道这不是最好的解决方案(没有代码存储库),但它允许我在开发它时非常快速地在服务器上测试代码.有谁知道如何结合rsync与任何其他命令来获得此功能?



1> jens..:

lsyncd似乎是完美的解决方案.它结合了inotify(内核内置函数,用于监视目录树中的文件更改)和rsync(跨平台文件同步工具).

lsyncd -rsyncssh /home remotehost.org backup-home/

引自github:

Lsyncd监视本地目录树事件监视器接口(inotify或fsevents).它聚合并组合事件几秒钟,然后生成一个(或多个)进程以同步更改.默认情况下,这是rsync.因此,Lsyncd是一种轻量级的实时镜像解决方案,相对容易安装,不需要新的文件系统或块设备,并且不会妨碍本地文件系统性能.


如果在计算机未连接到远程计算机时发生更改,会发生什么?请问lsyncd会记录下这些更改吗?
这样更好,它只会在检测到的更改上同步文件.

2> dwj..:

您希望同步"实时"如何?我仍然倾向于rsync,因为你知道它将在两个平台上完全支持(Windows也可以用cygwin),你可以通过cron作业运行它.我有我我的系统上运行(这也超级简单的bash文件没有删除旧文件):

#!/bin/sh
rsync -avrz --progress --exclude-from .rsync_exclude_remote . remote_login@remote_computer:remote_dir    

# options
#   -a  archive
#   -v  verbose
#   -r  recursive
#   -z  compress 

你最好的选择是设置并尝试一下.该-n (--dry-run)选项是你的朋友!

请记住,rsync(至少在cygwin中)不支持unicode文件名(截至2008年8月16日).


实际上,`-a`意味着`-r`.请参阅[man rsync](http://manpages.ubuntu.com/manpages/precise/en/man1/rsync.1.html#contenttoc12).
这会是什么样的同步?使远程目录与本地目录保持同步?另一种方式?或者它会同步两个方向并保持最新的方向吗?

3> KevinButler..:

你想要为linux远程访问做什么是使用'sshfs' - SSH文件系统.

# sshfs username@host:path/to/directory local_dir

然后将它视为网络安装,它是......

更多细节,比如如何设置,以便您可以在我的博客上以普通用户的身份进行设置

如果你想要winSCP的异步行为,你会想要使用rsync和定期执行它的东西.上面的cron解决方案有效,但对于winscp用例可能有点过分.

以下命令将每5秒执行一次rsync,以将内容推送到远程主机.您可以根据需要调整休眠时间以减少服务器负载.

# while true; do rsync -avrz localdir user@host:path; sleep 5; done

如果你有一个非常大的目录结构并且需要减少轮询的开销,你可以使用'find':

# touch -d 01/01/1970 last; while true; do if [ "`find localdir -newer last -print -quit`" ]; then touch last; rsync -avrz localdir user@host:path; else echo -ne .; fi; sleep 5; done

我说cron可能有点矫枉过正?但至少这一切都是从命令行完成的,可以通过ctrl-C来停止.

KB

推荐阅读
勤奋的瞌睡猪_715
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有