mirror of
https://github.com/wekan/wekan.git
synced 2026-01-15 22:15:28 +01:00
Moved images from wekan.github.io to docs
This commit is contained in:
parent
b52d1ca6c4
commit
c5e5bb613e
136 changed files with 9159 additions and 3 deletions
246
docs/Platforms/FOSS/Snap/wekan-snap-upgrade-not-working.sh
Executable file
246
docs/Platforms/FOSS/Snap/wekan-snap-upgrade-not-working.sh
Executable file
|
|
@ -0,0 +1,246 @@
|
|||
#!/bin/bash
|
||||
|
||||
# ==== SETTINGS START ======
|
||||
|
||||
MONGODB_PORT=27019
|
||||
|
||||
# MongoDB database name.
|
||||
DATABASE=wekan
|
||||
|
||||
# Usually original snap name is wekan. Check with "sudo snap list".
|
||||
# Migrating changes snap wekan from stable to candidate, and migrates attachments and avatars.
|
||||
SNAPNAME=wekan
|
||||
|
||||
# Backup directory requires a lot of disk space. It will have copy of /var/snap/wekan/common and mongodump.
|
||||
BACKUPDIR=/var/wekanbackup
|
||||
|
||||
# ==== SETTINGS END ======
|
||||
|
||||
|
||||
if [ "$(id -u)" -ne 0 ]; then
|
||||
echo 'This script must be run by root' >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
#cpuavx=$(cat /proc/cpuinfo | grep avx)
|
||||
#if [ -z "${cpuavx}" ]; then
|
||||
# echo "Your CPU does not support AVX. WeKan will add support for AVX soon, by running MongoDB 6 at Qemu."
|
||||
# exit 1
|
||||
#fi
|
||||
|
||||
function pause(){
|
||||
read -p "$*"
|
||||
}
|
||||
|
||||
echo "Backups will be stored to $BACKUPDIR . Change it at top of this script, to where is enough disk space."
|
||||
echo "Backup directory requires a lot of disk space. It will have copy of /var/snap/wekan/common and mongodump."
|
||||
|
||||
PS3='Please enter your choice: '
|
||||
options=("Upgrade WeKan Snap from 6.09 to newest" "Downgrade WeKan Snap from newest to 6.09" "Quit")
|
||||
|
||||
select opt in "${options[@]}"
|
||||
do
|
||||
case $opt in
|
||||
"Upgrade WeKan Snap from 6.09 to newest")
|
||||
|
||||
echo "STEP 1: BACKUP"
|
||||
|
||||
# Original path
|
||||
export ORIGINAL_LD_LIBRARY_PATH=$LD_LIBRARY_PATH
|
||||
export ORIGINAL_PATH=$PATH
|
||||
|
||||
# Path to old MongoDB
|
||||
export LD_LIBRARY_PATH=/snap/$SNAPNAME/current/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH
|
||||
export PATH=/snap/$SNAPNAME/current/bin:/snap/$SNAPNAME/current/usr/bin:$PATH
|
||||
|
||||
# Stop Wekan
|
||||
snap stop $SNAPNAME.wekan
|
||||
snap start $SNAPNAME.mongodb
|
||||
|
||||
sleep 2
|
||||
|
||||
# Create backup directory
|
||||
mkdir -p $BACKUPDIR
|
||||
|
||||
# Run MongoDB backup
|
||||
rm -rf $BACKUPDIR/common $BACKUPDIR/dump
|
||||
/snap/$SNAPNAME/current/bin/mongodump --port $MONGODB_PORT --out=$BACKUPDIR
|
||||
snap stop $SNAPNAME.mongodb
|
||||
sleep 2
|
||||
cp -pR /var/snap/$SNAPNAME/common $BACKUPDIR/
|
||||
snap get $SNAPNAME > $BACKUPDIR/snap.sh
|
||||
|
||||
echo "STEP 2: UPGRADE WeKan"
|
||||
|
||||
# Stop WeKan
|
||||
snap stop $SNAPNAME
|
||||
|
||||
# Remove old files (after backup)
|
||||
rm -rf /var/snap/$SNAPNAME/common/*
|
||||
|
||||
# Upgrade to latest version
|
||||
snap refresh $SNAPNAME --channel=latest/candidate --amend
|
||||
|
||||
mkdir -p /var/snap/$SNAPNAME/common/files/attachments
|
||||
|
||||
mkdir -p /var/snap/$SNAPNAME/common/files/avatars
|
||||
|
||||
# Stop all services for clean start
|
||||
|
||||
echo "STEP 3: RESTORE DATA"
|
||||
|
||||
# Start MongoDB
|
||||
snap stop $SNAPNAME.wekan
|
||||
snap start $SNAPNAME.mongodb
|
||||
|
||||
sleep 2
|
||||
|
||||
# Restore database
|
||||
/snap/$SNAPNAME/current/bin/mongorestore --port $MONGODB_PORT --drop $BACKUPDIR/
|
||||
|
||||
echo "STEP 4: MIGRATE ATTACHMENTS"
|
||||
|
||||
/snap/$SNAPNAME/current/usr/bin/mongosh --port $MONGODB_PORT --host 127.0.0.1 \
|
||||
--db wekan --eval "db.attachments.files.drop()"
|
||||
|
||||
/snap/$SNAPNAME/current/usr/bin/mongosh --port $MONGODB_PORT --host 127.0.0.1 \
|
||||
--db wekan --eval "db.attachments.chunks.drop()"
|
||||
|
||||
/snap/$SNAPNAME/current/usr/bin/mongosh --port $MONGODB_PORT --host 127.0.0.1 \
|
||||
--db wekan --eval "db.avatars.files.drop()"
|
||||
|
||||
/snap/$SNAPNAME/current/usr/bin/mongosh --port $MONGODB_PORT --host 127.0.0.1 \
|
||||
--db wekan --eval "db.avatars.chunks.drop()"
|
||||
|
||||
/snap/$SNAPNAME/current/usr/bin/mongosh --port $MONGODB_PORT --host 127.0.0.1 \
|
||||
--db wekan --eval "db.cfs_gridfs.attachments.chunks.renameCollection('attachments.chunks')"
|
||||
|
||||
/snap/$SNAPNAME/current/usr/bin/mongosh --port $MONGODB_PORT --host 127.0.0.1 \
|
||||
--db wekan --eval "db.cfs_gridfs.attachments.files.renameCollection('attachments.files')"
|
||||
|
||||
/snap/$SNAPNAME/current/usr/bin/mongosh --port $MONGODB_PORT --host 127.0.0.1 \
|
||||
--db wekan --eval "db.cfs_gridfs.avatars.chunks.renameCollection('avatars.chunks')"
|
||||
|
||||
/snap/$SNAPNAME/current/usr/bin/mongosh --port $MONGODB_PORT --host 127.0.0.1 \
|
||||
--db wekan --eval "db.cfs_gridfs.avatars.files.renameCollection('avatars.files')"
|
||||
|
||||
/snap/$SNAPNAME/current/bin/mongoexport --port $MONGODB_PORT --host 127.0.0.1 \
|
||||
--db wekan --collection cfs.attachments.filerecord > $BACKUPDIR/old_files.json
|
||||
|
||||
while IFS= read -r line; do
|
||||
# Extract key from copies.attachments
|
||||
key=$(echo "$line" | grep -o '"key"[[:space:]]*:[[:space:]]*"[^"]*"' | cut -d'"' -f4)
|
||||
|
||||
if [ ! -z "$key" ]; then
|
||||
echo "Processing file with key: $key"
|
||||
|
||||
# Extract all metadata
|
||||
name=$(echo "$line" | grep -o '"original"[[:space:]]*:[[:space:]]*{[^}]*}' | grep -o '"name"[[:space:]]*:[[:space:]]*"[^"]*"' | cut -d'"' -f4)
|
||||
type=$(echo "$line" | grep -o '"original"[[:space:]]*:[[:space:]]*{[^}]*}' | grep -o '"type"[[:space:]]*:[[:space:]]*"[^"]*"' | cut -d'"' -f4)
|
||||
size=$(echo "$line" | grep -o '"size"[[:space:]]*:[[:space:]]*[0-9]*' | cut -d':' -f2 | tr -d ' ' | head -1)
|
||||
boardId=$(echo "$line" | grep -o '"boardId"[[:space:]]*:[[:space:]]*"[^"]*"' | cut -d'"' -f4)
|
||||
cardId=$(echo "$line" | grep -o '"cardId"[[:space:]]*:[[:space:]]*"[^"]*"' | cut -d'"' -f4)
|
||||
userId=$(echo "$line" | grep -o '"userId"[[:space:]]*:[[:space:]]*"[^"]*"' | cut -d'"' -f4)
|
||||
swimlaneId=$(echo "$line" | grep -o '"swimlaneId"[[:space:]]*:[[:space:]]*"[^"]*"' | cut -d'"' -f4)
|
||||
listId=$(echo "$line" | grep -o '"listId"[[:space:]]*:[[:space:]]*"[^"]*"' | cut -d'"' -f4)
|
||||
|
||||
# Determine file extension
|
||||
ext=$(echo "$name" | awk -F. '{print $NF}' | tr '[:upper:]' '[:lower:]')
|
||||
|
||||
# Determine file type
|
||||
isPDF=$(echo "$type" | grep -q "pdf" && echo "true" || echo "false")
|
||||
isImage=$(echo "$type" | grep -E -- "image|png|jpg|jpeg|gif|bmp|tiff|svg|webp|pcx" && echo "true" || echo "false")
|
||||
isVideo=$(echo "$type" | grep -E -- "video|mp4|m4p|m4v|m4mov|qt|wmv|avi|mpeg|mpg|mp2|mpe|flv|webm|mkv|flv|ogg|mts|m2ts|ts|gifv" && echo "true" || echo "false")
|
||||
|
||||
echo "Creating new format for: $name"
|
||||
|
||||
# Create new record in new format
|
||||
echo "{
|
||||
\"_id\": \"$key\",
|
||||
\"size\": $size,
|
||||
\"type\": \"$type\",
|
||||
\"name\": \"$name\",
|
||||
\"meta\": {
|
||||
\"boardId\": \"$boardId\",
|
||||
\"swimlaneId\": \"$swimlaneId\",
|
||||
\"listId\": \"$listId\",
|
||||
\"cardId\": \"$cardId\"
|
||||
},
|
||||
\"ext\": \"$ext\",
|
||||
\"extension\": \"$ext\",
|
||||
\"extensionWithDot\": \".$ext\",
|
||||
\"mime\": \"$type\",
|
||||
\"mime-type\": \"$type\",
|
||||
\"userId\": \"$userId\",
|
||||
\"path\": \"/var/snap/$SNAPNAME/common/files/attachments/$key.$ext\",
|
||||
\"versions\": {
|
||||
\"original\": {
|
||||
\"path\": \"/var/snap/$SNAPNAME/common/files/attachments/$key-original-$name\",
|
||||
\"size\": $size,
|
||||
\"type\": \"$type\",
|
||||
\"extension\": \"$ext\",
|
||||
\"storage\": \"gridfs\",
|
||||
\"meta\": {
|
||||
\"gridFsFileId\": \"$key\"
|
||||
}
|
||||
}
|
||||
},
|
||||
\"_downloadRoute\": \"/cdn/storage\",
|
||||
\"_collectionName\": \"attachments\",
|
||||
\"isVideo\": false,
|
||||
\"isAudio\": false,
|
||||
\"isImage\": $isImage,
|
||||
\"isText\": false,
|
||||
\"isJSON\": false,
|
||||
\"isPDF\": $isPDF,
|
||||
\"_storagePath\": \"/var/snap/$SNAPNAME/common/files/attachments\",
|
||||
\"public\": false
|
||||
}" > "$BACKUPDIR/new_$key.json"
|
||||
|
||||
|
||||
echo "Importing to new format..."
|
||||
|
||||
/snap/$SNAPNAME/current/bin/mongoimport --port $MONGODB_PORT --host 127.0.0.1 \
|
||||
--db wekan --collection attachments \
|
||||
--file="$BACKUPDIR/new_$key.json"
|
||||
|
||||
|
||||
echo "Completed migration for: $name"
|
||||
echo "--------------------------"
|
||||
fi
|
||||
done < $BACKUPDIR/old_files.json
|
||||
|
||||
snap start $SNAPNAME
|
||||
|
||||
echo "Upgrading completed."
|
||||
|
||||
break
|
||||
;;
|
||||
|
||||
"Downgrade WeKan Snap from newest to 6.09")
|
||||
echo "Downgrading WeKan Snap from newest to 6.09."
|
||||
|
||||
snap stop $SNAPNAME
|
||||
|
||||
rm -rf /var/snap/$SNAPNAME/common/*
|
||||
|
||||
snap refresh $SNAPNAME --channel=latest/stable --amend
|
||||
|
||||
snap stop $SNAPNAME
|
||||
|
||||
cp -pR $BACKUPDIR/common/* /var/snap/$SNAPNAME/common/
|
||||
|
||||
sudo snap start $SNAPNAME
|
||||
|
||||
echo "Downgrading completed."
|
||||
|
||||
break
|
||||
;;
|
||||
|
||||
"Quit")
|
||||
break
|
||||
;;
|
||||
*) echo invalid option;;
|
||||
esac
|
||||
done
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue