如何在实例中访问文件

您可以使用 Incus 客户端管理实例内部的文件,而无需通过网络访问实例。可以单独编辑或删除文件,从本地机器推送或拉取文件。或者,您可以将实例的文件系统挂载到本地机器上。

对于容器,这些文件操作始终有效,并由 Incus 直接处理。对于虚拟机,必须在虚拟机内部运行 incus-agent 进程才能使它们工作。

编辑实例文件

要从本地机器编辑实例文件,请输入以下命令

incus file edit <instance_name>/<path_to_file>

例如,要编辑实例中的 /etc/hosts 文件,请输入以下命令

incus file edit my-container/etc/hosts

注意

文件必须已存在于实例上。您不能使用 edit 命令在实例上创建文件。

从实例中删除文件

要从实例中删除文件,请输入以下命令

incus file delete <instance_name>/<path_to_file>

将文件从实例拉取到本地机器

要将文件从实例拉取到本地机器,请输入以下命令

incus file pull <instance_name>/<path_to_file> <local_file_path>

例如,要将 /etc/hosts 文件拉取到当前目录,请输入以下命令

incus file pull my-instance/etc/hosts .

除了将实例文件拉取到本地系统上的文件之外,您还可以将其拉取到标准输出并将其传递到另一个命令的标准输入。例如,这对于检查日志文件很有用

incus file pull my-instance/var/log/syslog - | less

要拉取包含所有内容的目录,请输入以下命令

incus file pull -r <instance_name>/<path_to_directory> <local_location>

将文件从本地机器推送到实例

要将文件从本地机器推送到实例,请输入以下命令

incus file push <local_file_path> <instance_name>/<path_to_file>

要推送到包含所有内容的目录,请输入以下命令

incus file push -r <local_location> <instance_name>/<path_to_directory>

挂载来自实例的文件系统

您可以将实例文件系统挂载到客户端上的本地路径。

为此,请确保已安装 sshfs。然后运行以下命令

incus file mount <instance_name>/<path_to_directory> <local_location>

然后,您可以从本地机器访问这些文件。

设置 SSH SFTP 监听器

或者,您可以设置 SSH SFTP 监听器。此方法允许您使用任何 SFTP 客户端以及专用的用户名进行连接。

为此,首先通过输入以下命令设置监听器

incus file mount <instance_name> [--listen <address>:<port>]

例如,要在本地机器上的随机端口(例如 127.0.0.1:45467)上设置监听器

incus file mount my-instance

如果要从本地网络外部访问实例文件,则可以传递特定的地址和端口

incus file mount my-instance --listen 192.0.2.50:2222

注意

执行此操作时请小心,因为它会远程公开您的实例。

要在特定地址和随机端口上设置监听器

incus file mount my-instance --listen 192.0.2.50:0

该命令会打印出分配的端口以及连接的用户名和密码。

提示

您可以通过传递 --auth-user 标志来指定用户名。

使用此信息访问文件系统。例如,如果要使用 sshfs 连接,请输入以下命令

sshfs <user_name>@<address>:<path_to_directory> <local_location> -p <port>

例如

sshfs xFn8ai8c@127.0.0.1:/home my-instance-files -p 35147

然后,您可以访问本地机器上指定位置的实例文件系统。