我正在运行 Ubuntu 云服务器,但我无法直接访问但使用 ssh。我正在使用“tar”来克隆或获得此服务器的高可用性。我按照链接 [链接文本][1] 中的教程进行操作。我试过这个安装相同版本的新服务器。当我在目标(新)上提取 tar (tar -xvpzf ~/clone.tgz -C /) 时,最后它以类似于下面的以下输出结束(不知道是不是错误)。
tar: var/run: time stamp 2010-11-09 17:09:11 is 7335.159880406 s in the future
tar: var/spool/postfix/usr/lib/zoneinfo: time stamp 2010-11-09 17:08:26 is 7290.159730037 s in the future
tar: var/lib: time stamp 2010-11-09 17:27:51 is 8455.159349527 s in the future
tar: usr/bin: time stamp 2010-11-09 17:28:02 is 8466.159254097 s in the future
tar: usr/share/sgml: time stamp 2010-11-09 17:27:47 is 8451.158909506 s in the future
tar: usr/share/man/man7: time stamp 2010-11-09 17:27:50 is 8454.158393583 s in the future
tar: usr/share/man/man1: time stamp 2010-11-09 17:28:02 is 8466.158166556 s in the future
tar: usr/share/man/man8: time stamp 2010-11-09 17:27:51 is 8455.158057701 s in the future
tar: usr/share/omf/time-admin: time stamp 2010-11-09 17:27:52 is 8456.157830449 s in the future
---------------------------------------------
---------------------------------------------
---------------------------------------------
我正在使用以下命令在源系统上创建指定目录的 tar 文件。
tar -cvzf ~/clone.tgz --exclude ~/clone.tgz --exclude /etc/hosts --exclude /etc/hostname --exclude /etc/udev/ --exclude /etc/network/interfaces --exclude /etc/resolv.conf /etc /home /opt /tmp /usr /var /mnt
- 使用tar前有什么注意事项吗?(焦油是一次创建,从那时起我将使用 rsync)
- 我是否应该包含更多目录,如 bin 或 lib?- 建议我
- 我应该排除任何目录吗?就像我遇到了网络设备(eth0)问题(无法启动 eth0)。所以在上面的命令中我排除了“/etc/udev/”,之后我觉得这很好。像这样,我必须从 /etc/ 或我包含的任何目录中排除任何东西吗?- 建议我。
- 我如何安排 rsync(增量 bkp)与 ssh 组合以将目录(在 tar 中指定)同步到远程位置(例如 /mnt/newdir),我可以在以后进行 tar 并在系统出现故障时提取它。可以安排 Rsync 以 root 用户身份运行,但 ssh 会提示输入密码。仅供参考,sudo 被完全禁用,并且直接 ssh 登录到 root 也被禁用。
如果有任何更好的方法而不会对服务器造成任何伤害来实现这一点,可以提出建议。
[1]:http ://ubuntuforums.org/showthread.php ?时间=525660
我建议您改用 rsync,它可以让您在不需要临时文件的情况下进行实时系统到系统实时同步。当您需要更新克隆时,它还提供了执行增量更新的好处。
我只排除: /proc/ /sys /dev /tmp /mnt 在克隆系统上,您需要确保使用克隆系统分区的 UUID 更新 /etc/fstab 和 /boot/grub/grub.cfg。
如果您有 mysql 之类的数据库,则需要小心并在执行复制之前停止数据库。
首先,许多 IaaS 云提供商提供了强大的快照功能,可以很容易地解决这个问题。
在 EC2 上,如果您运行基于 EBS 的系统,您可以定期对其进行快照。如果源实例发生了可怕的事情,您可以在全新实例上回滚到之前的快照。如果你想存档快照,你可以启动另一个附加它的实例,并使用 tar+s3 之类的东西,而不会对生产箱产生负面影响。
这种方法存在许多问题,目前可能并不明显。
您真正想要的是配置管理系统和数据高可用性。
我建议您选择一个配置管理系统,例如 puppet(在 main 中!)、chef 或 cfengine。开始在配置管理系统中进行所有配置,然后您可以启动一个通用系统,并对其应用配置管理。添加'etckeeper',你就有了历史。
对于数据高可用性,rsync 应该可以工作,并且更直接,因为您可以复制您想要的数据。drbd 也有相当于“网络 RAID1”的东西。这些不是数据备份的替代品,它应该包括历史快照(无论是通过块设备快照还是类似 tar 的东西)而不是同步到恢复主机(如果有人删除了所有被 rsync 到恢复盒的数据,将其全部删除怎么办?还有吗?)
这些消息很可能是因为新的服务器时钟比旧的时钟晚。
如果您正在克隆包管理器配置和数据库(并且您正在),您应该克隆 /bin、/sbin 和 /lib,否则目标系统将处于不一致的状态。另一种方法是排除 /etc/dpkg.info /etc/apt /var/lib/apt 和 /var/lib/dpkg 并重新安装目标系统中的所有软件包。
/var/dpkg 和 /var/apt 中的文件包含有关系统中安装内容的信息。如果不排除它们,包管理器会认为父系统中的所有程序和依赖项都安装在目标中。但如果你没有复制 /bin、/sbin 等……它们不会。很有可能在下一次安装或更新时出现问题。
为了与 rsync 保持同步,我一直使用基于证书的身份验证,而不是密码。它很容易设置,我记得我第一次只是阅读手册页。这是一个快速指南,如果您想了解更多信息,我相信这值得提出一个新问题。