如何正确做好服务器备份

由于我不是一个真正的服务器pipe理员,但我总是渴望学习新的东西。

我有一个专门的服务器来照顾。 在该服务器上有2个虚拟机,每个虚拟机上有一个站点(webapp)。

这两个虚拟机只有CentOS 7 CLI。 我使用SSH连接通过物理服务器。 当我login时,我使用ssh连接到任何虚拟机。

我find了一个bash脚本来tar和压缩/ var / www文件夹并将其上传到FTP服务器。 这工作正常,但上传的文件总是损坏。 这个脚本也是mysql数据库的解压缩转储。 这个文件也是腐败的。

所以,我的问题是:除了修复什么是破坏文件(备份本身或上传或FTP服务器)这是一个好方法? 怎么样的conf文件(apache2,mysql,其他)我可以简单地将它们添加到备份例程?

我认为有一些更清洁和实用的工具/脚本来做到这一点。 我也尝试许多webpipe理员,如webmin,ajenti,centos webpanel。 但是我不喜欢在服务器上使用GUI。

TL; DR:需要知道是否有一个很好的方法来备份/ var / www,mysql转储和其他文件(如apache2和mdb conf)到FTP,Dropbox,Cloud。

谢谢你的时间。 对不起我的英语不好。

这是一个好的备份方法,根据您的需要,有一些优点和缺点。

优点:

  • 易于创build和pipe理
  • 没有特殊的软件需要查看备份
  • 可以轻松备份所需的一切

缺点:

  • 可能有很多文件需要每天备份
  • 大数据传输通过FTP定期复制备份*
  • 恢复崩溃系统的时间可能很长(重新安装服务器[软件包,库,用户],configuration和编译软件(例如Apache,PHP),恢复文件以使站点function

这就是说,这是一个非常普遍的方法,所以如果你能够忍受这个利弊,那就去吧。 **

FTP腐败问题

我的猜测是,FTP文件已损坏,因为它们没有以BINARY模式上传,而是以ASCII模式传输。 另外请注意,FTP不安全,您的凭据和备份可能被截获。

未压缩的MySQL转储

压缩备份。 备份需要更长的时间,但您可能会花时间复制。 你可以用下面的命令来实现这个function:

mysqldump -u root -pPASS --all-databases | gzip -9 > mysql.sql.gz

备份其他configuration

是的,您可以简单地将这些添加到备份。 如果你正在备份/var/www现在,修改你的命令是这样的:

tar cf backup.tar mysql.sql.gz /var/www /etc/apache2/conf* /etc/my.cnf /var/spool/cron /etc/ssh

上面的例子备份/ var / www,Apacheconfiguration目录,MySQLconfiguration文件,/ var / spool / cron中的用户crontabs以及SSHDconfiguration。 您可以根据需要将文件/目录添加到列表中。

然后,备份完成后,将备份传输到远程系统并将其删除。

希望有所帮助!


*如果你可以支持它或有一个远程系统,你可以备份,看看rsync 。

实质上你可以编写一个命令来备份所有的文件/目录,除了它们被安全地备份到远程系统,并且也被更有效地传送。 如果您的文件在备份之间没有更改,则不会被复制。 如果你有一个大文件(即日志文件),那么只有被更改的部分被复制,从而节省大量的数据传输。

备份系统需要通过SSH访问(使用密钥或密码)并安装rsync。 那么你可以更有效地pipe理你的备份。 为了增加安全性,您可以备份备份服务器上的文件并保留历史logging。

**根据您的主机操作系统,您可以查看一些可以实时备份系统或虚拟机的块级备份软件,这些备份软件可以用来对虚拟机进行裸机还原。