Initial commit

This commit is contained in:
Thorsten committed 2026-05-12 15:51:12 +02:00
commit c89d8d8e0b
2 files changed
+94

No files matched your search

+39
View File
@@ -0,0 +1,39 @@
# volumecopy
Kleines Shell-Script zum Kopieren von Docker-Volumes inklusive aller Rechte, Besitzer und versteckter Dateien.
## 🔧 Voraussetzungen
- Docker installiert und lauffähig
- Zugriff auf `docker` CLI (ggf. als root oder mit sudo)
---
## 🚀 Nutzung
```bash
volumecopy <source_volume> <target_volume>
```
## Beispiel
```bash
volumecopy anchor_anchor_data anchor_data
```
## ⚠️ Wichtiger Hinweis
Vor dem Kopieren sollten alle Container gestoppt werden, die auf die Volumes zugreifen:
```bash
docker compose down
```
## 📦 Installation
1. Script ausführbar machen:
Vor dem Kopieren sollten alle Container gestoppt werden, die auf die Volumes zugreifen:
```bash
chmod +x volumecopy
```
2. In einen Ordner verschieben, der im `$PATH` liegt:
Vor dem Kopieren sollten alle Container gestoppt werden, die auf die Volumes zugreifen:
```bash
sudo mv volumecopy /usr/local/bin/
```
+55
View File
@@ -0,0 +1,55 @@
#!/usr/bin/env bash
set -euo pipefail
# -----------------------------
# volumecopy: Docker Volume Copy Tool
# Usage: volumecopy <source_volume> <target_volume>
# -----------------------------
if [ "$#" -ne 2 ]; then
echo "Usage: volumecopy <source_volume> <target_volume>"
exit 1
fi
SRC="$1"
DST="$2"
echo "==> Source: $SRC"
echo "==> Target: $DST"
# Prüfen ob Volumes existieren
if ! docker volume inspect "$SRC" >/dev/null 2>&1; then
echo "ERROR: Source volume '$SRC' does not exist!"
exit 1
fi
if ! docker volume inspect "$DST" >/dev/null 2>&1; then
echo "ERROR: Target volume '$DST' does not exist!"
exit 1
fi
# Warnung bei gleichem Namen
if [ "$SRC" == "$DST" ]; then
echo "ERROR: Source and target must be different!"
exit 1
fi
echo "==> Starting copy..."
echo "!! Make sure no container is using these volumes !!"
sleep 2
docker run --rm \
-v "$SRC":/from \
-v "$DST":/to \
alpine sh -c "cp -a /from/. /to/"
echo "==> Copy completed."
# Optional: Größe vergleichen
echo "==> Comparing sizes..."
docker run --rm \
-v "$SRC":/from \
-v "$DST":/to \
alpine sh -c "du -sh /from /to"
echo "==> Done."