我正在获取一个位于与当前位置不同位置的服务器,并且删除当前的服务器。
我需要找到一种方法来无缝传输以下内容:
- /home 中的用户目录
- Apache 配置
- MySQL 数据库、用户和配置
- Awstats 信息(包括已处理的统计数据)
我主要担心的是 MySQL 数据库,是不是只要复制一个文件夹结构,然后一切就都能正常工作了(当然是在新服务器上安装 MySQL 之后)?那么用户网站的文件权限呢?我知道一些用户正在使用论坛系统,而这些系统通常具有需要权限(如 775)的某些目录。有什么办法可以保留这些权限吗?
答案1
文件和目录
为此,您有两个工具可以开始使用。
对于用户的目录、Apache 配置和 Awstats 文件,您可以使用 tar。
# tar cvpzf myfiles.tgz *
这将复制子目录、保留权限并创建一个可以在新系统上解压的存档。我有点不确定的是,如果每个用户的 UID 都在变化,它将如何在新服务器上保留用户权限。
要在新服务器上恢复 tar 文件,它看起来会像这样。在您希望扩展目录结构的当前目录中运行它。
# tar xvpzf myfiles.tgz
顺便提一下,您还可以查看 tar 文件并查看目录。这样您就可以检查文件内部的所有内容,而无需提取内容。
# tar xvzf myfiles.tgz
MySQL - mysqldump 用于备份和恢复
对于 MySQL,不要在这里走捷径。使用 mysqldump 备份您的数据库,最好为每个数据库做一个备份。
# mysqldump -u [user] -p[password] [database_name] > [database_name].sql
在新系统上,您也可以使用 mysqldump 恢复文件。只需确保您已在新服务器上创建了数据库,因为我认为备份中的 SQL 备份文件中可能没有 CREATE DATABASE 选项。
# mysqldump -u [user] -p[password] [database_name] < database_name.sql
祝你好运。
答案2
您可以做的一件事是将旧服务器与新服务器同步。首先要做的是将的用户/etc/passwd
和组添加/etc/group
到新服务器的相应文件中。您可以尝试使用相同uid
的gid
对于数据,您rsync
可以使用以下选项:
--archive
--verbose
--recursive
--hard-links
--compress (optionally - compress data for faster transfer of data)
-e 'ssh -p 2234' (use ssh for secure connection between servers)
第一次,您可以访问rsync
包含相关数据的每个目录。权限将保持不变,因为您使用了该--archive
选项。此后,您可以尝试模拟对新服务器的访问,并检查访问是否正常:对于mysql
、、http
其他...
您没有说明 centos 版本是否相同。如果不是,您应该验证mysql
版本是否是重大升级(例如,旧服务器中的 5.1 和新服务器中的 5.5)。如果是重大升级,您应该阅读文档mysql
并可能运行mysql_upgrade
。由于您将在两个服务器中使用centos
,我推测用户mysql
运行的应该是相同的。如果您在两个服务器之间复制rsync
数据,Mysql 应该可以正常运行。
在某个时候,您需要再次同步数据并切断旧服务器,并将新服务器置于实时状态。当这个时刻到来时,您应该停止mysql
并使用另外两个选项 rsync 数据:
--update (transfers only new data)
--delete (deletes data in new server that doesn't exist anymore in old server)
大多数情况下,我认为您可以遵循这些准则。