-
Notifications
You must be signed in to change notification settings - Fork 1
/
nc-datadir.sh
executable file
·96 lines (80 loc) · 3.46 KB
/
nc-datadir.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#!/bin/bash
# Data dir configuration script for NextCloudPi
#
# Copyleft 2017 by Ignacio Nunez Hernanz <nacho _a_t_ ownyourbits _d_o_t_ com>
# GPL licensed (see end of file) * Use at your own risk!
#
# More at https://ownyourbits.com/2017/03/13/nextcloudpi-gets-nextcloudpi-config/
#
#####
#
# Moving Datadir is not supported !!!!!!!!!!!!!
#
# https://help.nextcloud.com/t/changing-data-directory/11156
# https://help.nextcloud.com/t/is-there-a-safe-and-reliable-way-to-move-data-directory-out-of-web-root/3642/8
#
#####
PHPVER=$( grep PHPVER /root/.nextpi.cnf | sed 's|PHPVER=||' )
DATADIR=$( grep CHGDATADIR /root/.nextpi.cnf | sed 's|CHGDATADIR=||' )
BASEDIR=$( dirname "$DATADIR" )
## CHECKS
SRCDIR=$( cd /var/www/nextcloud; sudo -u www-data php occ config:system:get datadirectory ) || {
echo -e "Error reading data directory. Is NextCloud running and configured?";
exit 1;
}
[ -d "$SRCDIR" ] || { echo -e "data directory $SRCDIR not found"; exit 1; }
[[ "$SRCDIR" == "$DATADIR" ]] && { echo -e "INFO: data already there"; exit 1; }
# start
cd /var/www/nextcloud
sudo -u www-data php occ maintenance:mode --on
# backup possibly existing datadir
[ -d $DATADIR ] && {
BKP="${DATADIR}-$( date "+%m-%d-%y" )"
echo "INFO: $DATADIR is not empty. Creating backup $BKP"
mv "$DATADIR" "$BKP"
}
## COPY
echo "moving data dir from $SRCDIR to $DATADIR..."
mkdir -p $BASEDIR
chown www-data:www-data $BASEDIR
rsync -Aax "$SRCDIR" "$BASEDIR" || exit 1
chown www-data:www-data "$DATADIR"
# tmp upload dir
mkdir -p "$DATADIR/tmp"
chown www-data:www-data "$DATADIR/tmp"
sudo -u www-data php occ config:system:set tempdirectory --value "$DATADIR/tmp"
sed -i "s|^;\?upload_tmp_dir =.*$|uploadtmp_dir = $DATADIR/tmp|" /etc/php/${PHPVER}/cli/php.ini
sed -i "s|^;\?upload_tmp_dir =.*$|upload_tmp_dir = $DATADIR/tmp|" /etc/php/${PHPVER}/fpm/php.ini
sed -i "s|^;\?sys_temp_dir =.*$|sys_temp_dir = $DATADIR/tmp|" /etc/php/${PHPVER}/fpm/php.ini
# opcache dir
sed -i "s|^opcache.file_cache=.*|opcache.file_cache=$DATADIR/.opcache|" /etc/php/${PHPVER}/mods-available/opcache.ini
# update logpath
#sed -i "s|logpath =.*nextcloud.log|logpath = $DATADIR/nextcloud.log|" /etc/fail2ban/jail.local
sed -i "s|-.*nextcloud.log|- $DATADIR/nextcloud.log|" /etc/crowdsec/acquis.yaml
# datadir & tmp
sudo -u www-data php occ config:system:set datadirectory --value="$DATADIR"
sudo -u www-data php occ config:system:set logfile --value="$DATADIR/nextcloud.log"
sudo -u www-data php occ maintenance:mode --off
rm -r $SRCDIR
echo "Edit the database: In oc_storages delete the path on the local::/old-data-dir/ entry.
sudo mysql;
use nextcloud;
select * from oc_storages;
delete from oc_storages where numeric_id=###;"
echo "Reboot the server!"
# License
#
# This script is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This script is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this script; if not, write to the
# Free Software Foundation, Inc., 59 Temple Place, Suite 330,
# Boston, MA 02111-1307 USA