Skip to content

Commit 8a053bf

Browse files
committed
Refactor: Paperless-NGX Backup-Handler
1 parent 5776f67 commit 8a053bf

File tree

1 file changed

+40
-24
lines changed

1 file changed

+40
-24
lines changed

ct/paperless-ngx.sh

Lines changed: 40 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,17 @@ function update_script() {
3434

3535
if grep -q "uv run" /etc/systemd/system/paperless-webserver.service; then
3636

37-
msg_info "Backing up data"
38-
mkdir -p /opt/paperless_backup
39-
cp -r /opt/paperless/data /opt/paperless_backup/
40-
cp -r /opt/paperless/media /opt/paperless_backup/
41-
cp -r /opt/paperless/paperless.conf /opt/paperless_backup/
42-
msg_ok "Backup completed"
37+
msg_info "Backing up user data and configuration"
38+
local BACKUP_DIR="/tmp/paperless_backup_$$"
39+
mkdir -p "$BACKUP_DIR"
40+
for dir in /opt/paperless/*/; do
41+
dir_name=$(basename "$dir")
42+
if [[ ! "$dir_name" =~ ^(docker|docs|scripts|src|static)$ ]]; then
43+
cp -r "/opt/paperless/$dir_name" "$BACKUP_DIR/" 2>/dev/null || true
44+
fi
45+
done
46+
[[ -f /opt/paperless/paperless.conf ]] && cp /opt/paperless/paperless.conf "$BACKUP_DIR/"
47+
msg_ok "Backup completed to $BACKUP_DIR"
4348

4449
PYTHON_VERSION="3.13" setup_uv
4550
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "paperless" "paperless-ngx/paperless-ngx" "prebuild" "latest" "/opt/paperless" "paperless*tar.xz"
@@ -53,19 +58,14 @@ function update_script() {
5358
fi
5459

5560
msg_info "Updating Paperless-ngx"
56-
cp -r /opt/paperless_backup/* /opt/paperless/
57-
CONSUME_DIR="$(sed -n 's/^PAPERLESS_CONSUMPTION_DIR=//p' /opt/paperless/paperless.conf)"
58-
if [[ -z "$CONSUME_DIR" ]]; then
59-
CONSUME_DIR="/opt/paperless/consume"
60-
fi
61-
mkdir -p "$CONSUME_DIR"
61+
cp -r "$BACKUP_DIR"/* /opt/paperless/
6262
cd /opt/paperless
6363
$STD uv sync --all-extras
6464
cd /opt/paperless/src
6565
$STD uv run -- python manage.py migrate
6666
msg_ok "Updated Paperless-ngx"
6767

68-
rm -rf /opt/paperless_backup
68+
rm -rf "$BACKUP_DIR"
6969

7070
else
7171
msg_warn "You are about to migrate your Paperless-ngx installation to uv!"
@@ -83,8 +83,20 @@ function update_script() {
8383
rm -rf /opt/paperless/venv
8484
find /opt/paperless -name "__pycache__" -type d -exec rm -rf {} +
8585

86+
msg_info "Backing up user data and configuration"
87+
local BACKUP_DIR="/tmp/paperless_backup_$$"
88+
mkdir -p "$BACKUP_DIR"
89+
90+
for dir in /opt/paperless/*/; do
91+
dir_name=$(basename "$dir")
92+
if [[ ! "$dir_name" =~ ^(docker|docs|scripts|src|static)$ ]]; then
93+
cp -r "/opt/paperless/$dir_name" "$BACKUP_DIR/" 2>/dev/null || true
94+
fi
95+
done
96+
[[ -f /opt/paperless/paperless.conf ]] && cp /opt/paperless/paperless.conf "$BACKUP_DIR/"
97+
msg_ok "Backup completed to $BACKUP_DIR"
98+
8699
declare -A PATCHES=(
87-
["paperless-consumer.service"]="ExecStart=uv run -- python manage.py document_consumer"
88100
["paperless-scheduler.service"]="ExecStart=uv run -- celery --app paperless beat --loglevel INFO"
89101
["paperless-task-queue.service"]="ExecStart=uv run -- celery --app paperless worker --loglevel INFO"
90102
["paperless-webserver.service"]="ExecStart=uv run -- granian --interface asgi --ws \"paperless.asgi:application\""
@@ -109,12 +121,18 @@ function update_script() {
109121
done
110122

111123
$STD systemctl daemon-reload
112-
msg_info "Backing up data"
113-
mkdir -p /opt/paperless_backup
114-
cp -r /opt/paperless/data /opt/paperless_backup/
115-
cp -r /opt/paperless/media /opt/paperless_backup/
116-
cp -r /opt/paperless/paperless.conf /opt/paperless_backup/
117-
msg_ok "Backup completed"
124+
msg_info "Backing up user data and configuration"
125+
BACKUP_DIR="/tmp/paperless_backup_$$"
126+
mkdir -p "$BACKUP_DIR"
127+
128+
for dir in /opt/paperless/*/; do
129+
dir_name=$(basename "$dir")
130+
if [[ ! "$dir_name" =~ ^(docker|docs|scripts|src|static)$ ]]; then
131+
cp -r "/opt/paperless/$dir_name" "$BACKUP_DIR/" 2>/dev/null || true
132+
fi
133+
done
134+
[[ -f /opt/paperless/paperless.conf ]] && cp /opt/paperless/paperless.conf "$BACKUP_DIR/"
135+
msg_ok "Backup completed to $BACKUP_DIR"
118136

119137
PYTHON_VERSION="3.13" setup_uv
120138
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "paperless" "paperless-ngx/paperless-ngx" "prebuild" "latest" "/opt/paperless" "paperless*tar.xz"
@@ -130,16 +148,14 @@ function update_script() {
130148
fi
131149

132150
msg_info "Updating Paperless-ngx"
133-
cp -r /opt/paperless_backup/* /opt/paperless/
134-
CONSUME_DIR="$(sed -n '/^PAPERLESS_CONSUMPTION/s/[^=]=*//p' /opt/paperless/paperless.conf)"
135-
mkdir -p "${CONSUME_DIR:-/opt/paperless/consume}"
151+
cp -r "$BACKUP_DIR"/* /opt/paperless/
136152
cd /opt/paperless
137153
$STD uv sync --all-extras
138154
cd /opt/paperless/src
139155
$STD uv run -- python manage.py migrate
140156
msg_ok "Paperless-ngx migration and update completed"
141157

142-
rm -rf /opt/paperless_backup
158+
rm -rf "$BACKUP_DIR"
143159
if [[ -d /opt/paperless/backup ]]; then
144160
rm -rf /opt/paperless/backup
145161
msg_ok "Removed old backup directory"

0 commit comments

Comments
 (0)