一种 Linux 系统完整迁移的方法
tar -cf - --one-file-system / | tar -xf - -C /mnt
通过 tar
打包整个根目录,写入到通道,然后在另外一个通道解包文件。
必须用 root 用户运行这个命令。--one-file-system
参数控制只读去当前文件系统,其他挂载点都会跳过,也就是会跳过 dev
sys
proc
这些虚拟的目录。-
这个用来表示通道,当然如果不立即写入到文件系统,也可以单单打包成一个 tar 文件。-C /mnt
表示迁移到目标目录。
使用 tar 的好处是默认保留文件的权限信息、所有者信息,还原的时候文件各种属性都能保持一致。
事实上,我用这个命令不断的迁移我正在使用的 ArchLinux 开发环境。这个开发环境只有两个分区:boot 分区和 root 分区。boot 分区是 vfat 格式,存放则系统引导工具还有引导配置文件。引导的配置文件记录着 root 分区的 PARTUUID。root 分区里面有一个 /etc/fstab
记录着系统所有的挂载点。
所以系统迁移的时候,除了完整的文件拷贝(需要拷贝 boot 分区和 root 分区,运行两次上面的命令),还需要另行修改这两个地方,修改之后就能启动。
同样的全盘文件拷贝命令还有 cp
rsync
,正常来说 rsync
需要另行安装。