kubectl cp does: it runs tar in the container, and reads or writes its archive.
Both are in a running pod’s actions: its ⋯ menu (.), the row’s right-click menu, or the command palette.
Download a file or a folder
1
Choose Download files…
Open a running pod, and choose Download files… from its actions.
2
Say what to copy
Pick the Container, and type the path of the File or folder in the container, like
/var/log/app.log. A path that doesn’t start with / is read from the container’s working directory.3
Choose Download
- Desktop app
- In your cluster
Once the container starts sending it, your system’s dialog asks where to save it, starting in your Downloads folder. When it’s done, the dialog says where it is, with Show in folder.
tar in the container and changes nothing there. The dialog shows the command that does the same:
Upload a file or a folder
1
Choose Upload files…
Open a running pod, and choose Upload files… from its actions.
2
Pick what to send
Pick the Container, then Choose a file… or Choose a folder…. The dialog says its name, how many files it holds and their size.
3
Say where it goes
Type the Folder in the container. It starts as
/tmp. What you picked is put in that folder, under its own name. The folder must be there already.4
Choose Upload
On a production cluster, type the pod’s name first.
kubectl cp. Where tar runs as root in the container, they belong to root.
While it copies
The dialog shows how much has moved, of how much when that’s known, and how many files.- Hide closes the dialog and the copy goes on. A toast says how it ended.
- Stop ends it.
- A copy stops by itself when nothing has moved for a minute. Choosing where to save doesn’t count: take as long as you like.
- Closing the page, or quitting the desktop app, stops every copy.
404, as it does for anyone else, and afterwards. Where Lumovi runs as several replicas, a browser’s requests must stay with one of them for a copy to work.
What it needs
- A running container. The actions show on running pods only, and the dialog lists the containers that are running, debug containers too.
tarin the container. Without it, the dialog says “container has no tar, which copying files needs, as kubectl cp does”, with akubectl debugcommand to copy, which starts a container with tools beside it. From there, the container’s files are under/proc/1/root. Or choose Debug… in the pod’s actions: see Debug containers.createonpods/execin the namespace, as a shell needs. See Permissions.
tar.
What’s kept of a download
A container can send any archive it likes, so Lumovi trusts none of it:- Only files and folders are kept. Links, symbolic or hard, are never written, so none can lead out of the folder you save. Devices and pipes aren’t either. The dialog says how many were left out.
- Only what’s under the path you asked for. An entry with an absolute path, with
..in it, or under another name stops the copy, and nothing of it is kept. - Only ordinary permission bits. Read, write and execute are kept; the bits that make a file run as someone else aren’t.
- Where it’s saved is yours to say, in the desktop app, never the archive’s. A folder is saved as a new one: Lumovi doesn’t unpack over a folder that’s there, and asks you to save it under another name.
- On Windows, a file whose name Windows can’t use is left out, and counted.
Who may copy
Where your access doesn’t allow it, the action is disabled and says why. In a fleet, copies go the way shells do, through the cluster’s agent where it has one, with nothing more granted to it.
How much one copy carries
One copy carries 2 GiB of files at most, and 100,000 files and folders. Past either, it stops; past the size, it says “That’s more than one copy carries here, which is 2 GiB.”, and what sets the limit. A download that’s stopped this way keeps nothing.- Desktop app
- In your cluster
Your organization’s policy sets another limit, in bytes, or turns copying off:Without a policy that sets it, the desktop app follows
LUMOVI_FILE_COPY_MAX_BYTES in its environment, as a server does.What’s recorded
The audit log has two entries for each copy, Downloaded files from a container or Uploaded files to a container: one when it begins, before anything moves, and one for how it ended, whether it finished, failed or was stopped. A copy that’s refused, by your access, by read-only or because copying is off, has one. Each says who, the pod, the container, the path, and thekubectl cp command that does the same. The ending adds how many files and bytes were copied, how long it took, and what was left out.
It never records what was in the files, the names of files inside a folder, or anything the container said: when tar fails, the page shows you its words, and the log keeps a sentence of Lumovi’s own. See Events.
Shells and debug containers
A terminal in a running container, or a debug container with tools.
Logs
Every pod of a workload, merged in the order lines were written.