服务器迁移
实现的功能
- 将当前服务器的文件同步至新服务器
- 将当前服务器已安装过的软件同步至新服务器
安装 rsync 同步文件
两台服务器都需要安装
sh
sudo apt-get update
sudo apt-get install rsync
sh
sudo yum install rsync
rsync 同步至新服务器
sh
rsync -avz [当前服务器的目录,以/结尾] 用户@[目标服务器]:[目标服务器路径,以/结尾]
# 如
rsync -avz /var/www/html/ root@13.1.2.4:/www
# 也可以 / 整个目录
rsync -avz / root@13.1.2.4:/
-avz
是 rsync 命令的选项-a
:用于保持文件和目录的所有属性和权限-v
:用于在终端显示详细的操作信息,包括文件的复制进度和同步的文件列表-z
:表示在传输文件时使用压缩来减小数据传输的大小。这有助于加快文件传输速度,特别是在通过网络传输大文件时。
rsync 同步时无权限
无权限时会提示下面的错误
sh
root@1.2.3.4: Permission denied (publickey).
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(231) [sender=3.2.7]
- 这是服务器的公钥与私钥不对导致的,你需要在当前服务器
~/.ssh/id_rsa
私钥文件与新服务器~/.ssh/authorized_keys
公钥文件匹配 - 如果没有公钥私钥文件可以使用命令
ssh-keygen -t rsa -P ''
生成,生成后会出现在当前服务器~/.ssh
下,存在id_rsa
与id_rsa.pub
,把id_rsa.pub
文件内容复制到新服务器的~/.ssh/
下,并改名为authorized_keys
权限解决后可能会出现秘钥文件权限过于开放
sh
Warning: Permanently added '1.2.3.4' (ED25519) to the list of known hosts.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '/root/.ssh/id_rsa' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "/root/.ssh/id_rsa": bad permissions
修改私钥文件的权限即可
sh
chmod 600 /root/.ssh/id_rsa
迁移软件到新服务器
- 安装程序
sh
#新旧服务器都要安装
sudo apt-get install apt-clone
- 旧服务器执行备份
sh
# back为备份后的文件名
sudo apt-clone clone back --with-dpkg-repack
- 备份后会出现back.apt-clone.tar.gzt文件,把此文件发送到新服务器
sh
# 可以使用 rsync 传过去,也可以手动下载后传输
rsync -avz /back.apt-clone.tar.gz root@1.2.3.4:/
- 新服务器执行安装
sh
# back.apt-clone.tar.gz 就是备份好的文件
sudo apt-clone restore back.apt-clone.tar.gz