如何正确进行服务器备份

如何正确进行服务器备份

因为我并不是真正的服务器管理员,但我总是渴望学习新的东西。

我有一台专用服务器需要维护。该服务器上有 2 台虚拟机,每台虚拟机上都有一个网站 (webapp)。

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

我找到了一个 bash 脚本,用于将 /var/www 文件夹压缩并上传到 FTP 服务器。这个脚本运行正常,但上传的文件总是损坏。这个脚本还会对 mysql 数据库进行解压转储。这个文件也损坏了。

所以,我的问题是:除了修复损坏文件的原因(备份本身或上传或 FTP 服务器)之外,这是一个好方法吗?那么 conf 文件(apache2、mysql 等)怎么样?我可以简单地将它们添加到备份例程中吗?

我认为有一些更简洁实用的工具/脚本可以实现这一点。我也尝试了许多 Web 管理工具,如 webmin、ajenti、centos webpanel。但我不喜欢在服务器上使用 GUI。

TL;DR:需要知道是否有一种好的方法将 /var/www、mysql dump 和其他文件(例如 apache2 和 mDB conf)备份到 FTP、Dropbox、Cloud。

谢谢您的时间。抱歉我的英语不好。

答案1

这是一种不错的备份方法,根据您的需要,它有优点也有缺点。

优点:

  • 易于创建和管理
  • 无需特殊软件即可查看备份
  • 可以轻松备份您需要的一切

缺点:

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

也就是说,这是一种非常常见的方法,因此,如果您可以承受其利弊,那就采用它吧。**

FTP 损坏问题

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

未压缩的 MySQL 转储

压缩备份。备份需要更长的时间,但复制可能会弥补这段时间。您可以使用以下命令实现此目的:

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

备份其他配置

是的,您可以简单地将它们添加到备份中。如果您/var/www现在正在备份,请将命令修改为如下内容:

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

上述示例备份了 /var/www、Apache 配置目录、MySQL 配置文件、/var/spool/cron 中的用户 crontab 以及 SSHD 配置。您可以根据需要将文件/目录添加到列表中。

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

希望有帮助!


*如果您可以支持它或拥有可以备份的远程系统,请查看同步

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

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

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

相关内容