@@ -21,49 +21,34 @@ to the next are saved. This requires the datadir to be in a BTRFS filesystem"
21
21
22
22
BASEDIR=/var/www
23
23
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
+
24
30
configure ()
25
31
{
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 ) || {
28
36
echo -e " Error reading data directory. Is NextCloud running and configured?" ;
29
37
return 1;
30
38
}
31
- local SNAPSHOT=${DATADIR} _$( date +" %F" )
32
39
33
40
# 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"
36
44
return 1
37
45
}
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
48
46
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
60
48
61
49
sudo -u www-data php " $BASEDIR " /nextcloud/occ maintenance:mode --off
62
- echo -e " snapshot $SNAPSHOT generated"
63
50
}
64
51
65
- install () { : ; }
66
-
67
52
# License
68
53
#
69
54
# This script is free software; you can redistribute it and/or modify it
0 commit comments