@@ -21,49 +21,34 @@ to the next are saved. This requires the datadir to be in a BTRFS filesystem"
2121
2222BASEDIR=/var/www
2323
24+ install ()
25+ {
26+ wget https://raw.githubusercontent.com/nachoparker/btrfs-snp/master/btrfs-snp -O /usr/local/bin/btrfs-snp
27+ chmod +x /usr/local/bin/btrfs-snp
28+ }
29+
2430configure ()
2531{
26- local DATADIR
27- DATADIR=$( cd " $BASEDIR " /nextcloud; sudo -u www-data php occ config:system:get datadirectory ) || {
32+ sudo -u www-data php " $BASEDIR " /nextcloud/occ maintenance:mode --on
33+
34+ local DATADIR MOUNTPOINT
35+ DATADIR=$( sudo -u www-data php /var/www/nextcloud/occ config:system:get datadirectory ) || {
2836 echo -e " Error reading data directory. Is NextCloud running and configured?" ;
2937 return 1;
3038 }
31- local SNAPSHOT=${DATADIR} _$( date +" %F" )
3239
3340 # file system check
34- [[ " $( stat -fc%T " $DATADIR " ) " != " btrfs" ]] && {
35- echo " The datadir is not in a BTRFS filesystem"
41+ MOUNTPOINT=" $( stat -c " %m" " $DATADIR " ) " || return 1
42+ [[ " $( stat -fc%T " $MOUNTPOINT " ) " != " btrfs" ]] && {
43+ echo " $MOUNTPOINT is not in a BTRFS filesystem"
3644 return 1
3745 }
38- local DESTDIR=" $( dirname " $DATADIR " ) "
39-
40- # do it
41- sudo -u www-data php " $BASEDIR " /nextcloud/occ maintenance:mode --on
42-
43- [[ -d " $SNAPSHOT " ]] && {
44- btrfs subvolume delete " $SNAPSHOT " & > /dev/null
45- rm -rf " $SNAPSHOT " & > /dev/null
46- }
47- btrfs subvolume snapshot -r " $DATADIR " " $SNAPSHOT " || return 1
4846
49- # prune older backups
50- [[ $LIMIT_ != 0 ]] && {
51-
52- local SNAPS=( $( btrfs subvolume list -s --sort=gen " $DESTDIR " | awk ' { print $14 }' ) )
53- cd " $DESTDIR " || return 1
54- [[ ${# SNAPS[@]} -gt $LIMIT_ ]] && \
55- echo " Pruning old snapshots..." && \
56- for (( i= 0 ; i < $(( ${# SNAPS[@]} - LIMIT_ )) ; i++ )); do
57- btrfs subvolume delete " ${SNAPS[$i]} "
58- done
59- }
47+ btrfs-snp $MOUNTPOINT manual $LIMIT_ 0 ../ncp-snapshots
6048
6149 sudo -u www-data php " $BASEDIR " /nextcloud/occ maintenance:mode --off
62- echo -e " snapshot $SNAPSHOT generated"
6350}
6451
65- install () { : ; }
66-
6752# License
6853#
6954# This script is free software; you can redistribute it and/or modify it
0 commit comments