镜像本地虚拟机上的生产性文件

我正在寻找一个解决scheme,允许我访问我的本地虚拟机中的任何生产环境文件进行testing。 两个系统都运行Ubuntu 10.04 lts。

目前的解决scheme是cron和rsync的组合。 这意味着我们必须定期将每个生产性文件传输到testing环境。 缺点是传输这些文件需要花费时间,并且花费了大量的硬盘容量。 我还要补充一点,在testing过程中,大部分的活动文件是不需要的,但是没有明确的模式来排除文件。

另一个解决scheme是像sshfs一样的ssh安装。 但是,这不会允许我们在本地testing机器上创build文件,而无需更改实时系统的文件。

有没有类似的SSH解决scheme的解决scheme,允许我现场系统按需拉取文件 而无需将更改返回到实时系统?


更新

cjc / Zerodache的解决scheme正是我所需要的:

apt-get install sshfs apt-get install unionfs-fuse cd /root/ mkdir local_delta mkdir live_system mkdir test_system sshfs [email protected]:/www/ /root/live_system unionfs-fuse -o cow /root/local_delta=RW:/root/live_system=RO /root/test_system 

现在/root/test_system显示活动站点的所有文件。 在test_system文件夹内创build的文件只能在local_delta创build,而不能在服务器上创build。 此外,文件修改和删除只写入第一个分支local_delta因为第二个分支live_system被设置为RO(只读),并设置-o cow选项。

既然你可以从生产环境中远程安装文件系统,那么我的build议(cjc在评论中也提到过)就是使用类似unionfs的东西。 Unionfs是livecd / liveusb环境中经常使用的工具,用于向系统呈现与只读文件系统合并的只读文件系统,以便读取来自只读文件系统,除非文件存在于读写区域。

如果您使用的是诸如vCenter Orchestrator之类的软件,并且正在vSphere上运行,则可以使用链接克隆。 这将创build一个新的虚拟机与您的实时服务器的基础磁盘和增量磁盘与所有的更改。 将被消耗的硬盘空间只会等于您对克隆所做的更改。 然后,当你完成它可以被丢弃,直到你需要旋转一个新的链接克隆。

因为听起来你和服务器是裸机的,而你的虚拟机是桌面本地的,所以你将不得不坚持你已经做的事情。