Initial commit
This commit is contained in:
commit
c89d8d8e0b
2 files changed
+94
No files matched your search
@@ -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
@@ -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."
|
||||
Reference in new issue
Block a user