你的表述里 “debian context” 不够明确,在 Debian 里常见有几种不同含义。下面我按最常见的几种场景分别说明迁移方法,你可以对号入座;如果都不是,可以再补充具体环境。
Debian 默认 不使用 SELinux,而是 AppArmor。
如果你是从 RHEL / CentOS 迁移到 Debian,或者手动启用了 SELinux:
ls -Z /path
ps -Z
SELinux context 不能直接复制,需要:
.pp 文件)# 原系统
semodule -l
semodule -E my_policy
# Debian
apt install selinux-basics selinux-policy-default
semodule -i my_policy.pp
restorecon -Rv /
⚠️ 不推荐在 Debian 上强用 SELinux,除非你非常熟悉。
这是 Debian 更常见的“context”。
aa-status
/etc/apparmor.d/
迁移步骤:
# 原系统
rsync -av /etc/apparmor.d/ target:/etc/apparmor.d/
# 目标系统
systemctl restart apparmor
aa-status
例如 systemd-nspawn、systemd --user 上下文。
systemctl show myservice | grep Security
迁移方式:
/lib/systemd/system/
/etc/systemd/system/
systemctl daemon-reload
systemctl restart myservice
lxc-info -n container
迁移:
lxc-stop -n myct
rsync -a /var/lib/lxc/myct/ target:/var/lib/lxc/
lxc-start -n myct
docker context ls
迁移:
docker context export mycontext
docker context import mycontext file
getfacl -R /path > acl.bak
setfacl --restore=acl.bak
tar -czpf debian-rootfs.tar.gz -C /srv/chroot/debian .
常见做法:
rsync -axH --numeric-ids / target:/mnt/newroot
然后:
/etc/fstab为了给你精确方案,可以告诉我:
我可以直接给你一步一步可执行的迁移命令。