Rackspace 云站点到本地服务器备份

Rackspace 云站点到本地服务器备份

我使用 rackspace 云站点,无法访问其服务器上的 SSH 或 RSYNC,但我可以访问 SSHFS。

我希望能够将我的云网站备份到我的本地 Ubuntu 服务器,该服务器具有 SSH、RSYNC 等。

到目前为止,我认为最好的方法是使用以下命令将站点安装到本地服务器上:

sshfs [email protected]:/path-to-site/ ~/Sites_Mounted/site-name/ -o reconnect,cache=no,compression=yes,ServerAliveInterval=15

重新连接 - 如果连接断开,将重新连接

Cache=no - 因为我们需要实时备份而不是旧的缓存文件

压缩——尽量减少带宽使用

ServerAliceInterval - SSHFS 在很长时间后退出并崩溃

然后我考虑使用 RSYNC 命令将堆积的站点文件复制到本地服务器上的备份目录,然后当下一次备份在 12 小时后到期时,将备份目录复制/RSYNC 到新的备份目录(使用不同的名称,即 2012-01-01-sitename),然后使用 RSYNC 命令仅将远程服务器上的更改复制到包含旧/以前备份的新备份目录。

我的问题是,这种方法有效吗?如果有效,我需要使用哪些命令?是否可以将所有这些命令都包含在一个可以运行的 .sh 脚本中?

或者有没有更简单、更有效或更好的方法来做到这一点。

(我想我可以压缩服务器上的整个网站并下载,但这似乎占用大量资源)

答案1

我必须克隆几个基于云的服务器,这是我的方法:

停止所有正在运行的服务。如果这不可行,则需要单独进行数据库转储和备份(即使用 mysql、redis、solr 等的任何服务)。

在根目录中创建一个目录,即 /x

在 /x 上安装 /dev/sda1(或 xvda1 或您的根系统分区)(因为您可以将一个设备同时安装到两个不同的点。)这里的值是您不会收到 /proc 等设备的错误。如果您使用 lvm,快照也非常适合此。

此时,你有几个选择。如果你的服务器有足够的磁盘空间,只需创建一个目录 /y 并执行

tar -zcvf --exclude '/x/*' --exclude '/y/*' /y/root.tar.gz /x/

如果没有,那么您可以通过 ssh 将其发送至另一个节点:

tar -zcvf - /x/ |ssh -i /blah.pem [email protected] 'cat - > /tmp/root.tar.gz'

无论你选择哪条路线,你都可以下载 tarball。

最后,也可能是最简单的,但在我看来并不理想的,就是简单地将 /x/ 目录 rsync 到本地机器。

无论您走哪条路,如果您有大型数据库或不需要的 kruft,您可以通过将它们从 tar 过程中排除来节省时间(简单地复制正在运行的数据库可能会导致数据库副本损坏。)

相关内容