@@ -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