在 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 宿主机终端
  1. 在 PVE 宿主机上为 LXC 添加共享挂载点:

    Bash

    # 将 PVE 的 /var/backups 目录映射到 LXC 容器内的 /mnt/pve_share 目录
    pct set 100 -mp0 /var/backups,mp=/mnt/pve_share
    
  2. 使用方式:

    在 LXC 容器内将文件存入 /mnt/pve_share/,PVE 宿主机的 /var/backups/ 目录下会实时同步显示,无需手动执行任何复制操作。

总结建议

  • 偶尔提取单文件/压缩包:直接在 PVE 运行 pct pull(最省心)。
  • 提取大文件/多层级目录:使用 RootFS 路径 cp(零开销,速度最快)。
  • 长期备份/频繁交互:配置 Bind Mount 共享目录。

附注(Ray): 也参考
https://ytai.de/t/topic/168