Product SiteDocumentation Site

3.2. 如何迁移

In order to guarantee continuity of the services, each computer migration must be planned and executed according to the plan. This principle applies regardless of which operating system is used.

3.2.1. 流行度调查和身份识别服务

如你看到的,该步骤是必要的。一个严谨的管理员应当确切的知道每部服务器的确切角色,但是角色可以被改变,有时候有经验的用户会安装一些服务。了解这些服务的功能让你知道如何处理它,而不是粗暴的删除它们。
基于这个目的,迁移服务器前先告知用户是明智之举。把用户拉入计划里,在迁移前安装最常见的免费软件程序(比如LibreOffice 、Mozilla 套件)可能会很有用,在迁移到Debian之后它们会再次出现。

3.2.1.1. 网络与程序

nmap 工具 (在同名软件包中) 可以在未登录的前提下,快速地探测一台线上机器上运行着哪些互联网服务。只需在连接到同一网络的另一台计算机上调用以下命令:
$ nmap mirwiz
Starting Nmap 7.93 ( https://nmap.org ) at 2024-05-20 00:15 CEST
Nmap scan report for mirwiz (192.168.1.104)
Host is up (0.00062s latency).
Not shown: 992 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
25/tcp   open  smtp
80/tcp   open  http
111/tcp  open  rpcbind
139/tcp  open  netbios-ssn
445/tcp  open  microsoft-ds
5666/tcp open  nrpe
9999/tcp open  abyss

Nmap done: 1 IP address (1 host up) scanned in 0.06 seconds
If the server is a Unix machine offering shell accounts to users, it is interesting to determine if processes are executed in the background in the absence of their owner. The command ps auxw displays a list of all processes with their user identity. By checking this information against the output of the who or w commands, which give a list of logged in users, it is possible to identify rogue or undeclared servers or programs running in the background. Looking at crontabs (tables listing automatic actions scheduled by users) will often provide interesting information on functions fulfilled by the server (a complete explanation of cron is available in 第 9.7 节 “使用 cronatd运行计划任务”).
任何状况下,都该先备份您的服务器:当在迁移后用户报告特定问题时,该备份可以用来恢复一些信息。

3.2.2. 备份配置

保留所有已知服务的配置以便在更新后的服务器上安装同等的服务。最低限度是制作配置文件的副本。
Unix 机器的配置档,通常在 /etc/ 文件夹内,有时放在 /usr/local/ 的子文件夹里。比如源码安装的程序,配置档就会放在前述的子文件夹内,有时候也被放在 /opt/
在数据管理服务 (如数据库) 时,强烈建议以标准格式导出数据,更容易被新软件导入。通常是被组织的文本格式,比如一个从SQL数据库 dump 出的文件,或者一个从LDAP服务器导出的 LDIF 格式文件。
备份数据库

图 3.2. 备份数据库

每个服务器都不一样,这里无法详述所有个案。比较新旧软件的文档辨认可导出 (因此可以重新导入) 的部分以及需要人工处理的部分。此书阐述 Linux 服务器主要程序的配置。

3.2.3. 接手现有的 Debian 服务器

先分析正在运行 Debian 的机器,才能有效地接管维护工作。
第一个查看的文件是 /etc/debian_version,通常包括 Debian 系统的版本编号 (它是 base-files 软件包的一部分)。若以 代码/sid 方式呈现,表示此系统从该代码版本取得的最新版软件包 (测试版或不稳定版)。
apt-show-versions 程序 (来自 Debian 同名软件包) 检查已安装软件包的列表并标识可用的版本。aptitude 程序可以做到同样的工作,但是不是特别系统化。
查看 /etc/apt/sources.list 文件 (以及 /etc/apt/sources.list.d/ 文件夹) 可看到已安装 Debian 软件包的来源。若出现不明来源,管理员可能选择重新安装电脑系统确保其软件与 Debian 兼容。
The sources.list file is often a good indicator: the majority of administrators keep, at least in comments, the list of APT sources that were previously used. But you should not forget that sources used in the past might have been deleted, and that some random packages grabbed on the Internet might have been manually installed (with the help of the dpkg command). In this case, the machine is misleading in its appearance of being a “standard” Debian system. This is why you should pay attention to any indication that will give away the presence of external packages (appearance of deb files in unusual directories, package version numbers with a special suffix indicating that it originated from outside the Debian project, such as ubuntu or lmde, etc.). Below are two examples, showcasing unusual version suffixes and a third-party package without a source.
$ dpkg -l
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                          Version                        Architecture Description
+++-=============================-==============================-============-===================
[..]
ii  docker-buildx-plugin          0.14.0-1~debian.12~bookworm    amd64        Docker Buildx cli plugin.
ii  docker-ce                     5:26.1.3-1~debian.12~bookworm  amd64        Docker: the open-source application container engine
ii  docker-ce-cli                 5:26.1.3-1~debian.12~bookworm  amd64        Docker CLI: the open-source application container engine
ii  docker-ce-rootless-extras     5:26.1.3-1~debian.12~bookworm  amd64        Rootless support for Docker.
[..]
$ apt-show-versions | grep No
hc-utils:all 0.0.4-1 installed: No available version in archive
同样的,分析 /usr/local/ 文件夹的内容,其目的是收录编译后与手动安装后的程序。列出以此方式安装的软件清单,指出一个问题,为什么不使用 Debian 对应的软件包。

3.2.4. 安装 Debian

知道当前服务器的必要信息后,就可以关闭它并开始安装 Debian。
依照电脑的架构,选择适当的版本。近几年的 PC,很可能是 amd64 (稍旧的是 i386)。其他的情况,则依照安装的旧系统来判断。
表 3.1 不是完整的,但相当有用。注意,它列出了当前稳定发布中不再支持的 Debian 架构。任何情况下,电脑的原始文档是最有用的数据源。

表 3.1. 操作系统与架构对照表

操作系统架构
DEC Unix (OSF/1)alpha, mipsel
HP Unixia64, hppa
IBM AIXpowerpc
Irixmips
OS Xamd64, powerpc, i386
z/OS, MVSs390x, s390
Solaris, SunOSsparc, i386, m68k
Ultrixmips
VMSalpha
Windows 95/98/MEi386
Windows NT/2000i386, alpha, ia64, mipsel
Windows XP / Windows Server 2003-2008i386, amd64, ia64
Windows RTarmel, armhf, arm64
Windows Vista / Windows 7-8-10-11 / Windows Server 2010-amd64

3.2.5. 安装与配置选定的服务

Debian 安装之后,我们需要各自安装并配置每台计算机上托管的服务。新的配置必须参考过去的配置才能确保转换的顺利。前述两个步骤的搜集信息对于完成此部分极为重要。
安装指定的服务

图 3.3. 安装指定的服务

全面进入此练习前,强烈建议您阅读本书其他部分。才能够较精准地了解对预期服务的配置方式。