[pve-devel] [PATCH storage v9 6/6] pvesm: add a copy-volume command

Filip Schauer f.schauer at proxmox.com
Wed Dec 17 14:36:53 CET 2025


The method can be called from the PVE shell with `pvesm copy-volume`:

```
pvesm copy-volume \
    <source volume> <target volume or storage> \
    [--target-node <node>] [--delete]
```

For example to copy a VMA backup to a Proxmox Backup Server:

```
pvesm copy-volume \
    local:backup/vzdump-qemu-100-2024_06_25-13_08_56.vma.zst pbs
```

Or copy a container template to another node and delete the source:

```
pvesm copy-volume \
    local:vztmpl/devuan-4.0-standard_4.0_amd64.tar.gz local \
    --target-node pvenode2 --delete
```

Or copy an ISO and rename it:

```
pvesm copy-volume \
    local:iso/debian-13.1.0-amd64-netinst.iso cephfs:iso/debian13.1.iso
```

Signed-off-by: Filip Schauer <f.schauer at proxmox.com>
---
 src/PVE/CLI/pvesm.pm | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/src/PVE/CLI/pvesm.pm b/src/PVE/CLI/pvesm.pm
index 06bc4c9..4c630c9 100755
--- a/src/PVE/CLI/pvesm.pm
+++ b/src/PVE/CLI/pvesm.pm
@@ -769,6 +769,12 @@ our $cmddef = {
             print "APIAGE $res->{apiage}\n";
         },
     ],
+    'copy-volume' => [
+        "PVE::API2::Storage::Content",
+        'copy',
+        ['volume', 'target'],
+        { node => $nodename },
+    ],
     'prune-backups' => [
         __PACKAGE__,
         'prunebackups',
-- 
2.47.3





More information about the pve-devel mailing list