ソースを参照

duplicati config to vol

larry1chan@qq.com 6 ヶ月 前
コミット
39021b8209
4 ファイル変更85 行追加2 行削除
  1. 1 1
      duplicati/.env
  2. 39 0
      duplicati/bin2named.sh
  3. 6 1
      duplicati/docker-compose.yml
  4. 39 0
      nextcloud_duplicati/bin2named.sh

+ 1 - 1
duplicati/.env

@@ -1,6 +1,6 @@
 CONTAINER_NAME=duplicati
 ENCRYPTION_KEY=123456ba
-DUPLICATI_CONFIG=./config
+#DUPLICATI_CONFIG=./config
 DUPLICATI_BACKUPS=/media/yazoo/luks-5955839a-aa5e-40ef-bb39-2721cf531b48/backups
 DUPLICATI_SOURCE=/
 # password = AuFFg5bMB

+ 39 - 0
duplicati/bin2named.sh

@@ -0,0 +1,39 @@
+#!/bin/bash
+
+# Usage: ./convert_bind_to_named_volume.sh <container_name> <bind_mount_path> <named_volume>
+# Example: ./convert_bind_to_named_volume.sh mycontainer /data my_named_volume
+
+set -e
+
+CONTAINER="$1"
+BIND_PATH="$2"
+NAMED_VOL="$3"
+
+if [[ -z "$CONTAINER" || -z "$BIND_PATH" || -z "$NAMED_VOL" ]]; then
+    echo "Usage: $0 <container_name> <bind_mount_path> <named_volume>"
+    exit 1
+fi
+
+# Create the named volume if it doesn't exist
+docker volume create "$NAMED_VOL"
+
+# Copy data from the bind mount to a temporary location
+TMPDIR=$(mktemp -d)
+docker cp "$CONTAINER:$BIND_PATH/." "$TMPDIR"
+
+# Stop and remove the old container
+docker stop "$CONTAINER"
+docker rm "$CONTAINER"
+
+# Start a temporary container to copy data into the named volume
+docker run --rm -v "$NAMED_VOL":/vol -v "$TMPDIR":/from busybox sh -c "cp -a /from/. /vol/"
+
+echo "Data copied to named volume: $NAMED_VOL"
+
+echo "Now recreate your container, replacing:"
+echo "  -v /host/path:$BIND_PATH"
+echo "with:"
+echo "  -v $NAMED_VOL:$BIND_PATH"
+
+# Clean up
+rm -rf "$TMPDIR"

+ 6 - 1
duplicati/docker-compose.yml

@@ -1,4 +1,9 @@
 ---
+volumes:
+  duplicati_config:
+    name: ${CONTAINER_NAME}_config
+    driver: local
+
 services:
   duplicati:
     image: lscr.io/linuxserver/duplicati:latest
@@ -13,7 +18,7 @@ services:
       - CLI_ARGS= #optional
       - DUPLICATI__WEBSERVICE_PASSWORD=AuFFg5bMB #optional
     volumes:
-      - ${DUPLICATI_CONFIG}:/config
+      - duplicati_config:/config
       - ${DUPLICATI_BACKUPS}:/backups 
       - ${DUPLICATI_SOURCE}:/source
     ports:

+ 39 - 0
nextcloud_duplicati/bin2named.sh

@@ -0,0 +1,39 @@
+#!/bin/bash
+
+# Usage: ./convert_bind_to_named_volume.sh <container_name> <bind_mount_path> <named_volume>
+# Example: ./convert_bind_to_named_volume.sh mycontainer /data my_named_volume
+
+set -e
+
+CONTAINER="$1"
+BIND_PATH="$2"
+NAMED_VOL="$3"
+
+if [[ -z "$CONTAINER" || -z "$BIND_PATH" || -z "$NAMED_VOL" ]]; then
+    echo "Usage: $0 <container_name> <bind_mount_path> <named_volume>"
+    exit 1
+fi
+
+# Create the named volume if it doesn't exist
+docker volume create "$NAMED_VOL"
+
+# Copy data from the bind mount to a temporary location
+TMPDIR=$(mktemp -d)
+docker cp "$CONTAINER:$BIND_PATH/." "$TMPDIR"
+
+# Stop and remove the old container
+docker stop "$CONTAINER"
+docker rm "$CONTAINER"
+
+# Start a temporary container to copy data into the named volume
+docker run --rm -v "$NAMED_VOL":/vol -v "$TMPDIR":/from busybox sh -c "cp -a /from/. /vol/"
+
+echo "Data copied to named volume: $NAMED_VOL"
+
+echo "Now recreate your container, replacing:"
+echo "  -v /host/path:$BIND_PATH"
+echo "with:"
+echo "  -v $NAMED_VOL:$BIND_PATH"
+
+# Clean up
+rm -rf "$TMPDIR"