您将如何通过SSH备份远程Ubuntu VPS?

所以,正如我所说,我有一个VPS,Raspberry Pi和一个计划,但我需要一些建议,所以这里。

我有一个与prgmr.com的VPS,我很好,运行顺利,没有任何问题。 我还有一个新的RaspberryPi坐在我的桌子上,随着我输入的Raspberrian下载。 我的计划是在家里使用Raspberry Pi作为备份服务器,所以我的问题是:

您将如何通过SSH备份远程Ubuntu VPS?

VPS被设置为一个Web服务器,但是我想在Pi上设置一个cron作业,这样它就可以自动登录到VPS并运行然后下载一个备份,只是因为我设法阻止事情或其他事情发生这导致我丢失数据。 当然,我希望这个备份包含所有内容,以便我可以快速恢复整个服务器,如果情况变坏,所有配置都很好。

你会如何运行这种备份? 我想我必须在SSH中编写某种bash脚本,将所有相关文件压缩成tar.gz或类似文件,并将图像下载到SCP。

你对此有何看法? 您将使用哪些包等,以及如何配置它? VPS上有一个LAMP堆栈,那么您打算备份哪些文件? 它还有许多其他较小的程序,如GIT和ZendTools安装。

SSH公钥认证

您要做的第一件事是从ssh公钥认证开始。 这将使您的脚本在没有密码的情况下使用SSH。

服务器所需的全部是SSH安装,并为将从RasPi运行备份脚本的用户设置公钥认证。

这是一个很好的公钥认证教程: https : //hkn.eecs.berkeley.edu/~dhsu/ssh_public_key_howto.html

选项1:SSH和Tar

您可以从服务器压缩tar.gz并通过ssh直接传输它,如下所示:

ssh root@remoteserver.example.com "tar -czvf - / 2> /var/log/sshbackup" > vpsbackup.tar.gz 

这将使VPS tar和gzip上的所有文件/并通过SSH传输它以存储在RasPi上的vpsbackup.tar.gz中。 最新备份的日志将保留在VPS上的/ var / log / sshbackup中。

选项2:Rsync

通过SSH发送整个.tar.gz是低效的…仍然会传输不会更改的文件。 更好的解决方案是使用rsync,但这使得很难创建一个保留权限的.tar.gz。 如果RasPi上有足够的存储空间,则可以将备份文件存储为普通文件。 然后,如果要保留多个过去的备份,可以使用脚本tar.gz。

服务器需要安装rsync。 这将通过SSH运行,因此您仍然使用公钥身份validation,并保持加密。 您需要以root身份运行此命令并启用root用户的公钥身份validation和SSH登录以保留权限。 您的目的地(或至少是临时目的地)应该是Linux文件系统。 如果您将这些备份存储在FAT或NTFS分区上(例如,在大多数外部硬盘驱动器上),您可以创建一个环回文件系统(请参阅http://www.walkernews.net/2007/07/01/create-linux- loopback-file-system-on-disk-file / )用于临时存储。 tar.gz文件可以存储在任何分区上,因为它保留了自己的权限。

一个示例rsync命令:

 rsync -a --delete --exclude=/dev --exclude=/sys --exclude=/proc --exclude=/tmp remoteserver.example.com:/ /path/to/backup/destination/ 

使用–delete时要小心,尤其是root用户! 它将删除目标目录中备份源上不存在的任何文件。 在同步到仅用于该VPS的专用备份目录时,您应该只使用–delete。 您还应该确保脚本不可能同步到错误的目标(例如,如果/ path / to / backup / destination由shell变量确定)

rsync只会传输源和目标之间不同的文件。 如果您有大文件,它也只会传输已更改的部分文件(为此,您必须添加-c标志)。 这意味着您使用的是最小带宽,但它会使用更多CPU并减慢重新同步准备时间,因为双方需要首先校验和文件以确定要传输的块。 如果使用-c标志并且有大文件(例如数据库文件)和/或片状连接,请考虑添加–partial –append,这使您可以在连接中断后恢复传输。