在 Proxmox VE (PVE) 中,将文件从 LXC 容器复制到 PVE 宿主机,最常用且高效的方法有以下 4 种。你可以根据当前操作终端(是在 PVE 宿主机还是 LXC 容器内)选择合适的方式:
方法一:使用 PVE 官方 pct pull 命令(最推荐)
这是 PVE 官方提供的专用 CLI 命令,无论容器是运行中还是关机状态均可直接使用,且不限制底层存储类型(ZFS、LVM-thin、Directory 等均通用)。
操作位置:PVE 宿主机终端
Bash
# 语法:pct pull <容器ID> <LXC内部文件路径> <PVE宿主机目标路径>
pct pull 100 /tmp/npm_lxc_backup.tar.gz /root/npm_lxc_backup.tar.gz
- 复制文件夹添加参数:如果要复制整个目录,
pct pull会自动处理。
方法二:通过 PVE 宿主机 RootFS 路径直接复制(最快速)
如果你的 LXC 容器使用的是目录存储(Directory)或 ZFS 子卷(Subvolume),LXC 的完整文件系统会在 PVE 宿主机上直接挂载。
操作位置:PVE 宿主机终端
Bash
# 标准默认 RootFS 路径:/var/lib/lxc/<容器ID>/rootfs/
cp /var/lib/lxc/100/rootfs/tmp/npm_lxc_backup.tar.gz /root/
# 如果要复制整个文件夹
cp -r /var/lib/lxc/100/rootfs/data /root/
(注意:如果容器底层是 LVM-thin 或 raw 镜像且处于关机状态,可能需要手动 pct mount <CTID> 挂载后再复制。)
方法三:从 LXC 容器内部使用 scp 传输
如果你当前正处于 LXC 容器的终端内部,可以直接通过网络将文件发回 PVE 宿主机。
操作位置:LXC 容器终端
Bash
# 语法:scp <LXC本地文件> root@<PVE宿主机IP>:<PVE目标路径>
scp /tmp/npm_lxc_backup.tar.gz [email protected]:/root/
方法四:配置 Bind Mount 目录共享(适合频繁/自动化传输)
如果你需要经常在 LXC 和 PVE 宿主机之间同步或传输文件,建议在 PVE 上为该容器挂载一个共享目录。
操作位置:PVE 宿主机终端
在 PVE 宿主机上为 LXC 添加共享挂载点:
Bash
# 将 PVE 的 /var/backups 目录映射到 LXC 容器内的 /mnt/pve_share 目录 pct set 100 -mp0 /var/backups,mp=/mnt/pve_share使用方式:
在 LXC 容器内将文件存入
/mnt/pve_share/,PVE 宿主机的/var/backups/目录下会实时同步显示,无需手动执行任何复制操作。
总结建议
- 偶尔提取单文件/压缩包:直接在 PVE 运行
pct pull(最省心)。 - 提取大文件/多层级目录:使用 RootFS 路径
cp(零开销,速度最快)。 - 长期备份/频繁交互:配置 Bind Mount 共享目录。
附注(Ray): 也参考
https://ytai.de/t/topic/168