我使用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 – 因为我们希望实时备份不是旧的caching文件
压缩 – 最小化带宽使用
ServerAliceInterval – 由于SSHFS在很长一段时间后退出并崩溃
然后,我想着使用RSYNC命令将已复制的站点文件复制到本地服务器上的备份目录中,然后在下一次备份将在12小时后到期时,将备份目录复制/ RSYNC到一个新的备份目录(名称不同2012-01-01-sitename),然后使用RSYNC命令将远程服务器上的更改复制到包含旧/先前备份的新备份目录中。
我的问题是,这将进行工作吗? 如果是这样,我需要使用哪些命令,并将所有这些命令都包含在一个可以运行的.sh脚本中?
还是有一个更简单,更高效或更好的方法来做到这一点。
(我想我可以压缩整个网站的服务器上,下载,但这似乎有点资源沉重)
我不得不克隆几个基于云的服务器,这是我的方法:
停止任何正在运行的服务。 如果这不是一个选项,则需要分别进行数据库转储和备份(即使用mysql,redis,solr等)
在根目录ie / x中创build一个目录
在/ x上挂载/ dev / sda1(或xvda1或任何你的根系统分区)/(因为你可以同时将一个设备挂载到两个不同的点上)。这里的值是你不会得到/ proc中的设备等。如果您使用lvm,快照也可以用于此目的。
在这一点上,你有几个select。 如果您的服务器有足够的磁盘空间,只需创build一个目录/ 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进程中排除它们来节省时间(简单地复制一个正在运行的数据库可能会导致数据库副本被损坏)。