mirror of
https://github.com/varun-r-mallya/server-scripts.git
synced 2025-12-31 20:16:25 +00:00
1
management/nextcloud/cron
Normal file
1
management/nextcloud/cron
Normal file
@ -0,0 +1 @@
|
||||
0 3 */2 * * /home/xeon/management/nextcloud/nextcloud-snap-backup.sh >> /var/log/nextcloud-borg.log 2>&1
|
||||
34
management/nextcloud/nextcloud-snap-backup.sh
Executable file
34
management/nextcloud/nextcloud-snap-backup.sh
Executable file
@ -0,0 +1,34 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
BORG_REPO="/mnt/data/bbackup"
|
||||
SNAP_BACKUP_DIR="/var/snap/nextcloud/common/backups"
|
||||
TAR_TMP="/tmp"
|
||||
|
||||
# === Step 1: Run nextcloud.export ===
|
||||
echo "📦 Exporting Nextcloud..."
|
||||
sudo nextcloud.export -abcd
|
||||
|
||||
# === Step 2: Find most recent export folder ===
|
||||
EXPORT_DIR=$(ls -td "$SNAP_BACKUP_DIR"/20* | head -n 1)
|
||||
FOLDER_NAME=$(basename "$EXPORT_DIR")
|
||||
TAR_FILE="$TAR_TMP/nextcloud-backup-$FOLDER_NAME.tar"
|
||||
|
||||
echo "✅ Found export directory: $EXPORT_DIR"
|
||||
|
||||
# === Step 3: Tar the export directory ===
|
||||
sudo tar -cvf "$TAR_FILE" -C "$SNAP_BACKUP_DIR" "$FOLDER_NAME"
|
||||
|
||||
# === Step 4: Create Borg backup ===
|
||||
borg create --verbose --stats --compression zstd \
|
||||
"$BORG_REPO::nextcloud-export-$FOLDER_NAME" \
|
||||
"$TAR_FILE"
|
||||
|
||||
# === Step 5: Prune old backups ===
|
||||
borg prune -v --list "$BORG_REPO" \
|
||||
--keep-daily=7 --keep-weekly=4 --keep-monthly=6
|
||||
|
||||
# === Step 6: Clean up ===
|
||||
sudo rm -f "$TAR_FILE"
|
||||
sudo rm -rf "$EXPORT_DIR"
|
||||
|
||||
46
management/nextcloud/nextcloud-snap-restore.sh
Executable file
46
management/nextcloud/nextcloud-snap-restore.sh
Executable file
@ -0,0 +1,46 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
# === Config ===
|
||||
BORG_REPO="/mnt/data/bbackup"
|
||||
RESTORE_BASE="/var/snap/nextcloud/common/restore"
|
||||
TMP_DIR="/tmp/nextcloud_restore_tmp"
|
||||
|
||||
# === Step 1: List available Borg archives
|
||||
echo "🔍 Available Nextcloud Backups:"
|
||||
borg list "$BORG_REPO" | grep nextcloud-export- | nl
|
||||
|
||||
# === Step 2: Ask user to choose one
|
||||
read -p "Enter the number of the backup to restore: " CHOICE
|
||||
|
||||
ARCHIVE_NAME=$(borg list "$BORG_REPO" | grep nextcloud-export- | sed -n "${CHOICE}p" | awk '{print $1}')
|
||||
|
||||
if [ -z "$ARCHIVE_NAME" ]; then
|
||||
echo "❌ Invalid selection"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "✅ Selected archive: $ARCHIVE_NAME"
|
||||
|
||||
# === Step 3: Extract Borg archive
|
||||
rm -rf "$TMP_DIR"
|
||||
mkdir -p "$TMP_DIR"
|
||||
cd "$TMP_DIR"
|
||||
|
||||
echo "📦 Extracting archive..."
|
||||
borg extract "$BORG_REPO::$ARCHIVE_NAME"
|
||||
|
||||
cd ./tmp
|
||||
# === Step 4: Extract tar into Snap-visible restore directory
|
||||
TAR_FILE=$(ls nextcloud-backup-*.tar)
|
||||
FOLDER_NAME="${TAR_FILE%.tar}"
|
||||
|
||||
sudo mkdir -p "$RESTORE_BASE/$FOLDER_NAME"
|
||||
sudo tar -xvf "$TAR_FILE" -C "$RESTORE_BASE/$FOLDER_NAME"
|
||||
|
||||
# === Step 5: Run nextcloud.import
|
||||
echo "🚀 Restoring Nextcloud from backup..."
|
||||
sudo nextcloud.import "$RESTORE_BASE/$FOLDER_NAME"
|
||||
|
||||
echo "✅ Done restoring from $ARCHIVE_NAME"
|
||||
|
||||
Reference in New Issue
Block a user