Improved handling of Go version
This commit is contained in:
parent
d334fbf399
commit
81ed974d4b
|
@ -89,6 +89,8 @@ SSH_PORT=2222
|
|||
IRC_PORT=6697
|
||||
IRC_ONION_PORT=6697
|
||||
|
||||
GO_VERSION=1.5
|
||||
|
||||
# password used for accessing your repo mirrors
|
||||
MY_MIRRORS_PASSWORD=
|
||||
# friend's repo mirrors
|
||||
|
@ -2635,6 +2637,16 @@ function create_mirrors {
|
|||
echo 'create_mirrors' >> $COMPLETION_FILE
|
||||
}
|
||||
|
||||
function select_go_version {
|
||||
if [ ! -d $HOME/.gvm/scripts ]; then
|
||||
echo $'GVM was not installed'
|
||||
exit 629532
|
||||
fi
|
||||
cd $HOME/.gvm/scripts
|
||||
gvm use go${GO_VERSION} --default
|
||||
systemctl set-environment GOPATH=$GOPATH
|
||||
}
|
||||
|
||||
function mesh_cjdns_tools {
|
||||
if grep -Fxq "mesh_cjdns_tools" $COMPLETION_FILE; then
|
||||
return
|
||||
|
@ -2646,31 +2658,30 @@ function mesh_cjdns_tools {
|
|||
mesh_cjdns
|
||||
fi
|
||||
|
||||
select_go_version
|
||||
|
||||
apt-get -y install golang mercurial
|
||||
if [ ! -f ~/.bashrc ]; then
|
||||
touch ~/.bashrc
|
||||
fi
|
||||
|
||||
export GOPATH=/home/git/go
|
||||
if [ ! -d /home/git ]; then
|
||||
# add a gogs user account
|
||||
adduser --disabled-login --gecos 'Gogs' git
|
||||
|
||||
# install Go
|
||||
export GOPATH=/home/git/go
|
||||
if ! grep -q "export GOPATH=/home/git/go" ~/.bashrc; then
|
||||
echo 'export GOPATH=/home/git/go' >> ~/.bashrc
|
||||
if ! grep -q "export GOPATH=" ~/.bashrc; then
|
||||
echo "export GOPATH=$GOPATH" >> ~/.bashrc
|
||||
fi
|
||||
systemctl set-environment GOPATH=/home/git/go
|
||||
if ! grep -q "systemctl set-environment GOPATH=/home/git/go" ~/.bashrc; then
|
||||
echo 'systemctl set-environment GOPATH=/home/git/go' >> ~/.bashrc
|
||||
systemctl set-environment GOPATH=$GOPATH
|
||||
if ! grep -q "systemctl set-environment GOPATH=" ~/.bashrc; then
|
||||
echo "systemctl set-environment GOPATH=$GOPATH" >> ~/.bashrc
|
||||
fi
|
||||
if [ ! -d $GOPATH ]; then
|
||||
mkdir -p $GOPATH
|
||||
fi
|
||||
fi
|
||||
|
||||
export GOPATH=$GOPATH
|
||||
if ! grep -q "export GOPATH=" ~/.bashrc; then
|
||||
echo "export GOPATH=$GOPATH" >> ~/.bashrc
|
||||
fi
|
||||
|
@ -6309,12 +6320,12 @@ function upgrade_golang {
|
|||
gvm install go1.4
|
||||
gvm use go1.4
|
||||
export GOROOT_BOOTSTRAP=$GOROOT
|
||||
gvm install go1.5
|
||||
gvm install go${GO_VERSION}
|
||||
if [ ! "$?" = "0" ]; then
|
||||
echo $'Unable to upgrade golang'
|
||||
exit 529252
|
||||
fi
|
||||
gvm use go1.5 --default
|
||||
gvm use go${GO_VERSION} --default
|
||||
|
||||
if ! grep -q "gvm commit" $COMPLETION_FILE; then
|
||||
echo "gvm commit:$GVM_COMMIT" >> $COMPLETION_FILE
|
||||
|
@ -6333,8 +6344,7 @@ function install_gogs {
|
|||
return
|
||||
fi
|
||||
|
||||
export GOPATH=/home/git/go
|
||||
systemctl set-environment GOPATH=/home/git/go
|
||||
select_go_version
|
||||
|
||||
# update to the next commit
|
||||
set_repo_commit $GOPATH/src/github.com/gogits/gogs "Gogs commit" "$GOGS_COMMIT" $GIT_DOMAIN_REPO
|
||||
|
@ -6354,13 +6364,12 @@ function install_gogs {
|
|||
|
||||
# install Go
|
||||
apt-get -y install golang libpam0g-dev
|
||||
export GOPATH=/home/git/go
|
||||
if ! grep -q "export GOPATH=/home/git/go" ~/.bashrc; then
|
||||
echo 'export GOPATH=/home/git/go' >> ~/.bashrc
|
||||
if ! grep -q "export GOPATH=" ~/.bashrc; then
|
||||
echo "export GOPATH=$GOPATH" >> ~/.bashrc
|
||||
fi
|
||||
systemctl set-environment GOPATH=/home/git/go
|
||||
if ! grep -q "systemctl set-environment GOPATH=/home/git/go" ~/.bashrc; then
|
||||
echo 'systemctl set-environment GOPATH=/home/git/go' >> ~/.bashrc
|
||||
systemctl set-environment GOPATH=$GOPATH
|
||||
if ! grep -q "systemctl set-environment GOPATH=" ~/.bashrc; then
|
||||
echo "systemctl set-environment GOPATH=$GOPATH" >> ~/.bashrc
|
||||
fi
|
||||
if [ ! -d $GOPATH ]; then
|
||||
mkdir -p $GOPATH
|
||||
|
@ -6430,7 +6439,7 @@ function install_gogs {
|
|||
echo $'Check "Enable Register Confirmation"' >> /home/$MY_USERNAME/README
|
||||
echo $'Check "Enable Mail Notification"' >> /home/$MY_USERNAME/README
|
||||
echo '' >> /home/$MY_USERNAME/README
|
||||
echo $'After the initial install edit /home/git/go/src/github.com/gogits/gogs/custom/conf/app.ini' >> /home/$MY_USERNAME/README
|
||||
echo $"After the initial install edit ${GOPATH}/src/github.com/gogits/gogs/custom/conf/app.ini" >> /home/$MY_USERNAME/README
|
||||
echo $'and within the [server] section set:' >> /home/$MY_USERNAME/README
|
||||
echo " DOMAIN = $GIT_DOMAIN_NAME" >> /home/$MY_USERNAME/README
|
||||
echo " ROOT_URL = http://$GIT_DOMAIN_NAME/" >> /home/$MY_USERNAME/README
|
||||
|
@ -6456,14 +6465,14 @@ function install_gogs {
|
|||
|
||||
create_database gogs "$GOGS_ADMIN_PASSWORD"
|
||||
|
||||
chmod 600 /home/git/go/src/github.com/gogits/gogs/custom/conf/app.ini
|
||||
chmod 600 $GOPATH/src/github.com/gogits/gogs/custom/conf/app.ini
|
||||
|
||||
chown -R git:git /home/git
|
||||
cp $GOPATH/src/github.com/gogits/gogs/scripts/systemd/gogs.service /etc/systemd/system
|
||||
sed -i 's|#After=mysqld.service|After=mysqld.service|g' /etc/systemd/system/gogs.service
|
||||
sed -i "s|WorkingDirectory=.*|WorkingDirectory=$GOPATH/src/github.com/gogits/gogs|g" /etc/systemd/system/gogs.service
|
||||
sed -i "s|ExecStart=.*|ExecStart=$GOPATH/src/github.com/gogits/gogs/gogs web|g" /etc/systemd/system/gogs.service
|
||||
sed -i "s|Environment.*|Environment=\"USER=git\" \"HOME=/home/git\" \"GOPATH=/home/git/go\"|g" /etc/systemd/system/gogs.service
|
||||
sed -i "s|Environment.*|Environment=\"USER=git\" \"HOME=/home/git\" \"GOPATH=$GOPATH\"|g" /etc/systemd/system/gogs.service
|
||||
systemctl enable gogs
|
||||
systemctl daemon-reload
|
||||
systemctl restart gogs
|
||||
|
@ -10079,11 +10088,10 @@ function install_ipfs {
|
|||
return
|
||||
fi
|
||||
|
||||
export GOPATH=/home/git/go
|
||||
systemctl set-environment GOPATH=/home/git/go
|
||||
select_go_version
|
||||
|
||||
# update to the next commit
|
||||
set_repo_commit /home/git/go/src/github.com/ipfs/go-ipfs "ipfs commit" "$IPFS_COMMIT" $IPFS_REPO
|
||||
set_repo_commit $GOPATH/src/github.com/ipfs/go-ipfs "ipfs commit" "$IPFS_COMMIT" $IPFS_REPO
|
||||
|
||||
if grep -Fxq "install_ipfs" $COMPLETION_FILE; then
|
||||
return
|
||||
|
@ -10096,21 +10104,19 @@ function install_ipfs {
|
|||
adduser --disabled-login --gecos 'Gogs' git
|
||||
|
||||
# install Go
|
||||
export GOPATH=/home/git/go
|
||||
if ! grep -q "export GOPATH=/home/git/go" ~/.bashrc; then
|
||||
echo 'export GOPATH=/home/git/go' >> ~/.bashrc
|
||||
if ! grep -q "export GOPATH=" ~/.bashrc; then
|
||||
echo "export GOPATH=$GOPATH" >> ~/.bashrc
|
||||
fi
|
||||
systemctl set-environment GOPATH=/home/git/go
|
||||
if ! grep -q "systemctl set-environment GOPATH=/home/git/go" ~/.bashrc; then
|
||||
echo 'systemctl set-environment GOPATH=/home/git/go' >> ~/.bashrc
|
||||
systemctl set-environment GOPATH=$GOPATH
|
||||
if ! grep -q "systemctl set-environment GOPATH=" ~/.bashrc; then
|
||||
echo "systemctl set-environment GOPATH=$GOPATH" >> ~/.bashrc
|
||||
fi
|
||||
export GOPATH=/home/git/go
|
||||
if [ ! -d $GOPATH ]; then
|
||||
mkdir -p $GOPATH
|
||||
fi
|
||||
fi
|
||||
|
||||
IPFS_PATH=/home/git/go/bin
|
||||
IPFS_PATH=$GOPATH/bin
|
||||
export PATH="$GOPATH/bin:$PATH:"
|
||||
if ! grep -q 'GOPATH/bin' ~/.bashrc; then
|
||||
echo 'export PATH="$GOPATH/bin:$PATH:";' >> ~/.bashrc
|
||||
|
@ -10118,7 +10124,7 @@ function install_ipfs {
|
|||
|
||||
# set gopath for the user
|
||||
if ! grep -q "GOPATH=" /home/$MY_USERNAME/.bashrc; then
|
||||
echo 'export GOPATH=/home/git/go' >> /home/$MY_USERNAME/.bashrc
|
||||
echo "export GOPATH=$GOPATH" >> /home/$MY_USERNAME/.bashrc
|
||||
echo 'export PATH="$GOPATH/bin:$PATH:";' >> /home/$MY_USERNAME/.bashrc
|
||||
chown $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/.bashrc
|
||||
fi
|
||||
|
@ -10129,7 +10135,7 @@ function install_ipfs {
|
|||
exit 8242
|
||||
fi
|
||||
|
||||
cd /home/git/go/src/$IPFS_GO_REPO2
|
||||
cd $GOPATH/src/$IPFS_GO_REPO2
|
||||
git checkout $IPFS_COMMIT -b $IPFS_COMMIT
|
||||
if ! grep -q "ipfs commit" $COMPLETION_FILE; then
|
||||
echo "ipfs commit:$IPFS_COMMIT" >> $COMPLETION_FILE
|
||||
|
@ -10171,7 +10177,7 @@ function install_ipfs {
|
|||
echo "WorkingDirectory=/home/$MY_USERNAME" >> /etc/systemd/system/ipfs.service
|
||||
echo "ExecStart=$IPFS_PATH/ipfs daemon --mount" >> /etc/systemd/system/ipfs.service
|
||||
echo 'Restart=on-failure' >> /etc/systemd/system/ipfs.service
|
||||
echo "Environment=\"USER=$MY_USERNAME\" \"HOME=/home/$MY_USERNAME\" \"GOPATH=/home/git/go\"" >> /etc/systemd/system/ipfs.service
|
||||
echo "Environment=\"USER=$MY_USERNAME\" \"HOME=/home/$MY_USERNAME\" \"GOPATH=$GOPATH\"" >> /etc/systemd/system/ipfs.service
|
||||
echo '' >> /etc/systemd/system/ipfs.service
|
||||
echo '[Install]' >> /etc/systemd/system/ipfs.service
|
||||
echo 'WantedBy=multi-user.target' >> /etc/systemd/system/ipfs.service
|
||||
|
|
|
@ -42,9 +42,16 @@ USB_MOUNT=/mnt/usb
|
|||
# get default USB from config file
|
||||
CONFIG_FILE=$HOME/${PROJECT_NAME}.cfg
|
||||
if [ -f $CONFIG_FILE ]; then
|
||||
if grep -q "USB_DRIVE=" $CONFIG_FILE; then
|
||||
USB_DRIVE=$(cat $CONFIG_FILE | grep "USB_DRIVE=" | awk -F '=' '{print $2}')
|
||||
fi
|
||||
if grep -q "USB_DRIVE=" $CONFIG_FILE; then
|
||||
USB_DRIVE=$(cat $CONFIG_FILE | grep "USB_DRIVE=" | awk -F '=' '{print $2}')
|
||||
fi
|
||||
fi
|
||||
|
||||
# get the version of Go being used
|
||||
if [ -f /usr/local/bin/${PROJECT_NAME} ]; then
|
||||
GO_VERSION=$(cat /usr/local/bin/${PROJECT_NAME} | grep 'GO_VERSION=' | head -n 1 | awk -F '=' '{print $2}')
|
||||
else
|
||||
GO_VERSION=$(cat /usr/bin/${PROJECT_NAME} | grep 'GO_VERSION=' | head -n 1 | awk -F '=' '{print $2}')
|
||||
fi
|
||||
|
||||
ADMIN_USERNAME=
|
||||
|
@ -56,249 +63,249 @@ SUSPENDED_SITE=
|
|||
|
||||
DATABASE_PASSWORD=''
|
||||
if [ -f /root/dbpass ]; then
|
||||
DATABASE_PASSWORD=$(cat /root/dbpass)
|
||||
DATABASE_PASSWORD=$(cat /root/dbpass)
|
||||
fi
|
||||
|
||||
function suspend_site {
|
||||
# suspends a given website
|
||||
if [[ $ENABLE_VERIFICATION != "yes" ]]; then
|
||||
return
|
||||
fi
|
||||
SUSPENDED_SITE="$1"
|
||||
nginx_dissite $SUSPENDED_SITE
|
||||
service nginx reload
|
||||
# suspends a given website
|
||||
if [[ $ENABLE_VERIFICATION != "yes" ]]; then
|
||||
return
|
||||
fi
|
||||
SUSPENDED_SITE="$1"
|
||||
nginx_dissite $SUSPENDED_SITE
|
||||
service nginx reload
|
||||
}
|
||||
|
||||
function restart_site {
|
||||
# restarts a given website
|
||||
if [ ! $SUSPENDED_SITE ]; then
|
||||
return
|
||||
fi
|
||||
nginx_ensite $SUSPENDED_SITE
|
||||
service nginx reload
|
||||
SUSPENDED_SITE=
|
||||
# restarts a given website
|
||||
if [ ! $SUSPENDED_SITE ]; then
|
||||
return
|
||||
fi
|
||||
nginx_ensite $SUSPENDED_SITE
|
||||
service nginx reload
|
||||
SUSPENDED_SITE=
|
||||
}
|
||||
|
||||
function update_domains {
|
||||
RSS_READER_DOMAIN_NAME='ttrss'
|
||||
if grep -q "RSS reader domain" $COMPLETION_FILE; then
|
||||
RSS_READER_DOMAIN_NAME=$(cat $COMPLETION_FILE | grep "Gogs domain" | awk -F ':' '{print $2}')
|
||||
fi
|
||||
GIT_DOMAIN_NAME='gogs'
|
||||
if grep -q "Gogs domain" $COMPLETION_FILE; then
|
||||
GIT_DOMAIN_NAME=$(cat $COMPLETION_FILE | grep "Gogs domain" | awk -F ':' '{print $2}')
|
||||
fi
|
||||
MICROBLOG_DOMAIN_NAME='microblog'
|
||||
if grep -q "GNU Social domain" $COMPLETION_FILE; then
|
||||
MICROBLOG_DOMAIN_NAME=$(cat $COMPLETION_FILE | grep "GNU Social domain" | awk -F ':' '{print $2}')
|
||||
fi
|
||||
HUBZILLA_DOMAIN_NAME='hubzilla'
|
||||
if grep -q "Hubzilla domain" $COMPLETION_FILE; then
|
||||
HUBZILLA_DOMAIN_NAME=$(cat $COMPLETION_FILE | grep "Hubzilla domain" | awk -F ':' '{print $2}')
|
||||
fi
|
||||
FULLBLOG_DOMAIN_NAME='blog'
|
||||
if grep -q "Blog domain" $COMPLETION_FILE; then
|
||||
FULLBLOG_DOMAIN_NAME=$(cat $COMPLETION_FILE | grep "Blog domain" | awk -F ':' '{print $2}')
|
||||
fi
|
||||
MEDIAGOBLIN_DOMAIN_NAME='mediagoblin'
|
||||
if grep -q "Mediagoblin domain" $COMPLETION_FILE; then
|
||||
MEDIAGOBLIN_DOMAIN_NAME=$(cat $COMPLETION_FILE | grep "Mediagoblin domain" | awk -F ':' '{print $2}')
|
||||
fi
|
||||
RSS_READER_DOMAIN_NAME='ttrss'
|
||||
if grep -q "RSS reader domain" $COMPLETION_FILE; then
|
||||
RSS_READER_DOMAIN_NAME=$(cat $COMPLETION_FILE | grep "Gogs domain" | awk -F ':' '{print $2}')
|
||||
fi
|
||||
GIT_DOMAIN_NAME='gogs'
|
||||
if grep -q "Gogs domain" $COMPLETION_FILE; then
|
||||
GIT_DOMAIN_NAME=$(cat $COMPLETION_FILE | grep "Gogs domain" | awk -F ':' '{print $2}')
|
||||
fi
|
||||
MICROBLOG_DOMAIN_NAME='microblog'
|
||||
if grep -q "GNU Social domain" $COMPLETION_FILE; then
|
||||
MICROBLOG_DOMAIN_NAME=$(cat $COMPLETION_FILE | grep "GNU Social domain" | awk -F ':' '{print $2}')
|
||||
fi
|
||||
HUBZILLA_DOMAIN_NAME='hubzilla'
|
||||
if grep -q "Hubzilla domain" $COMPLETION_FILE; then
|
||||
HUBZILLA_DOMAIN_NAME=$(cat $COMPLETION_FILE | grep "Hubzilla domain" | awk -F ':' '{print $2}')
|
||||
fi
|
||||
FULLBLOG_DOMAIN_NAME='blog'
|
||||
if grep -q "Blog domain" $COMPLETION_FILE; then
|
||||
FULLBLOG_DOMAIN_NAME=$(cat $COMPLETION_FILE | grep "Blog domain" | awk -F ':' '{print $2}')
|
||||
fi
|
||||
MEDIAGOBLIN_DOMAIN_NAME='mediagoblin'
|
||||
if grep -q "Mediagoblin domain" $COMPLETION_FILE; then
|
||||
MEDIAGOBLIN_DOMAIN_NAME=$(cat $COMPLETION_FILE | grep "Mediagoblin domain" | awk -F ':' '{print $2}')
|
||||
fi
|
||||
}
|
||||
|
||||
function mount_drive {
|
||||
if [ $1 ]; then
|
||||
USB_DRIVE=/dev/${1}1
|
||||
fi
|
||||
if [ $1 ]; then
|
||||
USB_DRIVE=/dev/${1}1
|
||||
fi
|
||||
|
||||
# get the admin user
|
||||
ADMIN_USERNAME=$(cat $COMPLETION_FILE | grep "Admin user" | awk -F ':' '{print $2}')
|
||||
if [ $2 ]; then
|
||||
ADMIN_USERNAME=$2
|
||||
fi
|
||||
ADMIN_NAME=$(getent passwd $ADMIN_USERNAME | cut -d: -f5 | cut -d, -f1)
|
||||
# get the admin user
|
||||
ADMIN_USERNAME=$(cat $COMPLETION_FILE | grep "Admin user" | awk -F ':' '{print $2}')
|
||||
if [ $2 ]; then
|
||||
ADMIN_USERNAME=$2
|
||||
fi
|
||||
ADMIN_NAME=$(getent passwd $ADMIN_USERNAME | cut -d: -f5 | cut -d, -f1)
|
||||
|
||||
# check that the backup destination is available
|
||||
if [ ! -b $USB_DRIVE ]; then
|
||||
echo $"Please attach a USB drive"
|
||||
exit 1
|
||||
fi
|
||||
# check that the backup destination is available
|
||||
if [ ! -b $USB_DRIVE ]; then
|
||||
echo $"Please attach a USB drive"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# unmount if already mounted
|
||||
umount -f $USB_MOUNT
|
||||
if [ ! -d $USB_MOUNT ]; then
|
||||
mkdir $USB_MOUNT
|
||||
fi
|
||||
if [ -f /dev/mapper/encrypted_usb ]; then
|
||||
rm -rf /dev/mapper/encrypted_usb
|
||||
fi
|
||||
cryptsetup luksClose encrypted_usb
|
||||
# unmount if already mounted
|
||||
umount -f $USB_MOUNT
|
||||
if [ ! -d $USB_MOUNT ]; then
|
||||
mkdir $USB_MOUNT
|
||||
fi
|
||||
if [ -f /dev/mapper/encrypted_usb ]; then
|
||||
rm -rf /dev/mapper/encrypted_usb
|
||||
fi
|
||||
cryptsetup luksClose encrypted_usb
|
||||
|
||||
# mount the encrypted backup drive
|
||||
cryptsetup luksOpen $USB_DRIVE encrypted_usb
|
||||
if [ "$?" = "0" ]; then
|
||||
USB_DRIVE=/dev/mapper/encrypted_usb
|
||||
fi
|
||||
mount $USB_DRIVE $USB_MOUNT
|
||||
if [ ! "$?" = "0" ]; then
|
||||
echo $"There was a problem mounting the USB drive to $USB_MOUNT"
|
||||
rm -rf $USB_MOUNT
|
||||
exit 2
|
||||
fi
|
||||
# mount the encrypted backup drive
|
||||
cryptsetup luksOpen $USB_DRIVE encrypted_usb
|
||||
if [ "$?" = "0" ]; then
|
||||
USB_DRIVE=/dev/mapper/encrypted_usb
|
||||
fi
|
||||
mount $USB_DRIVE $USB_MOUNT
|
||||
if [ ! "$?" = "0" ]; then
|
||||
echo $"There was a problem mounting the USB drive to $USB_MOUNT"
|
||||
rm -rf $USB_MOUNT
|
||||
exit 2
|
||||
fi
|
||||
}
|
||||
|
||||
function unmount_drive {
|
||||
sync
|
||||
umount $USB_MOUNT
|
||||
if [ ! "$?" = "0" ]; then
|
||||
echo $"Unable to unmount the drive. This means that the backup did not work"
|
||||
rm -rf $USB_MOUNT
|
||||
exit 9
|
||||
fi
|
||||
rm -rf $USB_MOUNT
|
||||
if [[ $USB_DRIVE == /dev/mapper/encrypted_usb ]]; then
|
||||
echo $"Unmount encrypted USB"
|
||||
cryptsetup luksClose encrypted_usb
|
||||
fi
|
||||
if [ -f /dev/mapper/encrypted_usb ]; then
|
||||
rm -rf /dev/mapper/encrypted_usb
|
||||
fi
|
||||
echo $"Backup to USB drive is complete. You can now unplug it."
|
||||
sync
|
||||
umount $USB_MOUNT
|
||||
if [ ! "$?" = "0" ]; then
|
||||
echo $"Unable to unmount the drive. This means that the backup did not work"
|
||||
rm -rf $USB_MOUNT
|
||||
exit 9
|
||||
fi
|
||||
rm -rf $USB_MOUNT
|
||||
if [[ $USB_DRIVE == /dev/mapper/encrypted_usb ]]; then
|
||||
echo $"Unmount encrypted USB"
|
||||
cryptsetup luksClose encrypted_usb
|
||||
fi
|
||||
if [ -f /dev/mapper/encrypted_usb ]; then
|
||||
rm -rf /dev/mapper/encrypted_usb
|
||||
fi
|
||||
echo $"Backup to USB drive is complete. You can now unplug it."
|
||||
}
|
||||
|
||||
function backup_database {
|
||||
if [ ${#DATABASE_PASSWORD} -lt 2 ]; then
|
||||
echo $"No MariaDB password was given"
|
||||
restart_site
|
||||
exit 10
|
||||
fi
|
||||
if [ ! -d $USB_MOUNT/backup/${1} ]; then
|
||||
mkdir -p $USB_MOUNT/backup/${1}
|
||||
fi
|
||||
if [ ! -d $USB_MOUNT/backup/${1}data ]; then
|
||||
mkdir -p $USB_MOUNT/backup/${1}data
|
||||
fi
|
||||
if [ ! -d /root/temp${1}data ]; then
|
||||
mkdir -p /root/temp${1}data
|
||||
fi
|
||||
echo $"Obtaining ${1} database backup"
|
||||
mysqldump --lock-tables --password="$DATABASE_PASSWORD" ${1} > /root/temp${1}data/${1}.sql
|
||||
if [ ! -s /root/temp${1}data/${1}.sql ]; then
|
||||
echo $"${1} database could not be saved"
|
||||
shred -zu /root/temp${1}data/*
|
||||
rm -rf /root/temp${1}data
|
||||
umount $USB_MOUNT
|
||||
rm -rf $USB_MOUNT
|
||||
restart_site
|
||||
exit 5
|
||||
fi
|
||||
if [ ${#DATABASE_PASSWORD} -lt 2 ]; then
|
||||
echo $"No MariaDB password was given"
|
||||
restart_site
|
||||
exit 10
|
||||
fi
|
||||
if [ ! -d $USB_MOUNT/backup/${1} ]; then
|
||||
mkdir -p $USB_MOUNT/backup/${1}
|
||||
fi
|
||||
if [ ! -d $USB_MOUNT/backup/${1}data ]; then
|
||||
mkdir -p $USB_MOUNT/backup/${1}data
|
||||
fi
|
||||
if [ ! -d /root/temp${1}data ]; then
|
||||
mkdir -p /root/temp${1}data
|
||||
fi
|
||||
echo $"Obtaining ${1} database backup"
|
||||
mysqldump --lock-tables --password="$DATABASE_PASSWORD" ${1} > /root/temp${1}data/${1}.sql
|
||||
if [ ! -s /root/temp${1}data/${1}.sql ]; then
|
||||
echo $"${1} database could not be saved"
|
||||
shred -zu /root/temp${1}data/*
|
||||
rm -rf /root/temp${1}data
|
||||
umount $USB_MOUNT
|
||||
rm -rf $USB_MOUNT
|
||||
restart_site
|
||||
exit 5
|
||||
fi
|
||||
}
|
||||
|
||||
function backup_directory_to_usb {
|
||||
if [ ! -d ${1} ]; then
|
||||
echo $"WARNING: directory does not exist: ${1}"
|
||||
else
|
||||
BACKUP_KEY_EXISTS=$(gpg --list-keys "$ADMIN_NAME (backup key)")
|
||||
if [ ! "$?" = "0" ]; then
|
||||
echo $"Backup key could not be found"
|
||||
restart_site
|
||||
exit 6
|
||||
fi
|
||||
MY_BACKUP_KEY_ID=$(gpg --list-keys "$ADMIN_NAME (backup key)" | grep 'pub ' | awk -F ' ' '{print $2}' | awk -F '/' '{print $2}')
|
||||
if [ ! -d $USB_MOUNT/backup/${2} ]; then
|
||||
mkdir -p $USB_MOUNT/backup/${2}
|
||||
fi
|
||||
obnam force-lock -r $USB_MOUNT/backup/${2} --encrypt-with $MY_BACKUP_KEY_ID ${1}
|
||||
obnam backup -r $USB_MOUNT/backup/${2} --encrypt-with $MY_BACKUP_KEY_ID ${1}
|
||||
if [[ $ENABLE_VERIFICATION == "yes" ]]; then
|
||||
obnam verify -r $USB_MOUNT/backup/${2} --encrypt-with $MY_BACKUP_KEY_ID ${1}
|
||||
if [ ! "$?" = "0" ]; then
|
||||
umount $USB_MOUNT
|
||||
rm -rf $USB_MOUNT
|
||||
if [[ ${1} == "/root/temp"* || ${1} == *"tempbackup" ]]; then
|
||||
shred -zu ${1}/*
|
||||
rm -rf ${1}
|
||||
fi
|
||||
restart_site
|
||||
exit 71
|
||||
fi
|
||||
fi
|
||||
obnam forget --keep=30d -r $USB_MOUNT/backup/${2} --encrypt-with $MY_BACKUP_KEY_ID
|
||||
if [ ! "$?" = "0" ]; then
|
||||
umount $USB_MOUNT
|
||||
rm -rf $USB_MOUNT
|
||||
if [[ ${1} == "/root/temp"* || ${1} == *"tempbackup" ]]; then
|
||||
shred -zu ${1}/*
|
||||
rm -rf ${1}
|
||||
fi
|
||||
restart_site
|
||||
exit 7
|
||||
fi
|
||||
if [[ ${1} == "/root/temp"* || ${1} == *"tempbackup" ]]; then
|
||||
shred -zu ${1}/*
|
||||
rm -rf ${1}
|
||||
fi
|
||||
fi
|
||||
if [ ! -d ${1} ]; then
|
||||
echo $"WARNING: directory does not exist: ${1}"
|
||||
else
|
||||
BACKUP_KEY_EXISTS=$(gpg --list-keys "$ADMIN_NAME (backup key)")
|
||||
if [ ! "$?" = "0" ]; then
|
||||
echo $"Backup key could not be found"
|
||||
restart_site
|
||||
exit 6
|
||||
fi
|
||||
MY_BACKUP_KEY_ID=$(gpg --list-keys "$ADMIN_NAME (backup key)" | grep 'pub ' | awk -F ' ' '{print $2}' | awk -F '/' '{print $2}')
|
||||
if [ ! -d $USB_MOUNT/backup/${2} ]; then
|
||||
mkdir -p $USB_MOUNT/backup/${2}
|
||||
fi
|
||||
obnam force-lock -r $USB_MOUNT/backup/${2} --encrypt-with $MY_BACKUP_KEY_ID ${1}
|
||||
obnam backup -r $USB_MOUNT/backup/${2} --encrypt-with $MY_BACKUP_KEY_ID ${1}
|
||||
if [[ $ENABLE_VERIFICATION == "yes" ]]; then
|
||||
obnam verify -r $USB_MOUNT/backup/${2} --encrypt-with $MY_BACKUP_KEY_ID ${1}
|
||||
if [ ! "$?" = "0" ]; then
|
||||
umount $USB_MOUNT
|
||||
rm -rf $USB_MOUNT
|
||||
if [[ ${1} == "/root/temp"* || ${1} == *"tempbackup" ]]; then
|
||||
shred -zu ${1}/*
|
||||
rm -rf ${1}
|
||||
fi
|
||||
restart_site
|
||||
exit 71
|
||||
fi
|
||||
fi
|
||||
obnam forget --keep=30d -r $USB_MOUNT/backup/${2} --encrypt-with $MY_BACKUP_KEY_ID
|
||||
if [ ! "$?" = "0" ]; then
|
||||
umount $USB_MOUNT
|
||||
rm -rf $USB_MOUNT
|
||||
if [[ ${1} == "/root/temp"* || ${1} == *"tempbackup" ]]; then
|
||||
shred -zu ${1}/*
|
||||
rm -rf ${1}
|
||||
fi
|
||||
restart_site
|
||||
exit 7
|
||||
fi
|
||||
if [[ ${1} == "/root/temp"* || ${1} == *"tempbackup" ]]; then
|
||||
shred -zu ${1}/*
|
||||
rm -rf ${1}
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
function make_backup_directory {
|
||||
# make a backup directory on the drive
|
||||
if [ ! -d $USB_MOUNT/backup ]; then
|
||||
mkdir $USB_MOUNT/backup
|
||||
fi
|
||||
if [ ! -d $USB_MOUNT/backup ]; then
|
||||
echo $"There was a problem making the directory $USB_MOUNT/backup."
|
||||
umount $USB_MOUNT
|
||||
rm -rf $USB_MOUNT
|
||||
exit 3
|
||||
fi
|
||||
# make a backup directory on the drive
|
||||
if [ ! -d $USB_MOUNT/backup ]; then
|
||||
mkdir $USB_MOUNT/backup
|
||||
fi
|
||||
if [ ! -d $USB_MOUNT/backup ]; then
|
||||
echo $"There was a problem making the directory $USB_MOUNT/backup."
|
||||
umount $USB_MOUNT
|
||||
rm -rf $USB_MOUNT
|
||||
exit 3
|
||||
fi
|
||||
}
|
||||
|
||||
function check_storage_space_remaining {
|
||||
# Check space remaining on the usb drive
|
||||
used_percent=$(df -k $USB_MOUNT | tail -n 1 | awk -F ' ' '{print $5}' | awk -F '%' '{print $1}')
|
||||
if [ $used_percent -gt 95 ]; then
|
||||
echo $"Less than 5% of space remaining on backup drive"
|
||||
umount $USB_MOUNT
|
||||
rm -rf $USB_MOUNT
|
||||
exit 4
|
||||
fi
|
||||
# Check space remaining on the usb drive
|
||||
used_percent=$(df -k $USB_MOUNT | tail -n 1 | awk -F ' ' '{print $5}' | awk -F '%' '{print $1}')
|
||||
if [ $used_percent -gt 95 ]; then
|
||||
echo $"Less than 5% of space remaining on backup drive"
|
||||
umount $USB_MOUNT
|
||||
rm -rf $USB_MOUNT
|
||||
exit 4
|
||||
fi
|
||||
}
|
||||
|
||||
function backup_users {
|
||||
# Backup user files
|
||||
for d in /home/*/ ; do
|
||||
USERNAME=$(echo "$d" | awk -F '/' '{print $3}')
|
||||
if [[ $USERNAME != "git" && $USERNAME != "mirrors" && $USERNAME != "sync" ]]; then
|
||||
# Backup user files
|
||||
for d in /home/*/ ; do
|
||||
USERNAME=$(echo "$d" | awk -F '/' '{print $3}')
|
||||
if [[ $USERNAME != "git" && $USERNAME != "mirrors" && $USERNAME != "sync" ]]; then
|
||||
|
||||
# Backup any gpg keys
|
||||
if [ -d /home/$USERNAME/.gnupg ]; then
|
||||
echo $"Backing up gpg keys for $USERNAME"
|
||||
backup_directory_to_usb /home/$USERNAME/.gnupg gnupg/$USERNAME
|
||||
fi
|
||||
# Backup any gpg keys
|
||||
if [ -d /home/$USERNAME/.gnupg ]; then
|
||||
echo $"Backing up gpg keys for $USERNAME"
|
||||
backup_directory_to_usb /home/$USERNAME/.gnupg gnupg/$USERNAME
|
||||
fi
|
||||
|
||||
# Backup any personal settings
|
||||
if [ -d /home/$USERNAME/personal ]; then
|
||||
echo $"Backing up personal settings for $USERNAME"
|
||||
backup_directory_to_usb /home/$USERNAME/personal personal/$USERNAME
|
||||
fi
|
||||
# Backup any personal settings
|
||||
if [ -d /home/$USERNAME/personal ]; then
|
||||
echo $"Backing up personal settings for $USERNAME"
|
||||
backup_directory_to_usb /home/$USERNAME/personal personal/$USERNAME
|
||||
fi
|
||||
|
||||
# Backup ssh keys
|
||||
if [ -d /home/$USERNAME/.ssh ]; then
|
||||
echo $"Backing up ssh keys for $USERNAME"
|
||||
backup_directory_to_usb /home/$USERNAME/.ssh ssh/$USERNAME
|
||||
fi
|
||||
# Backup ssh keys
|
||||
if [ -d /home/$USERNAME/.ssh ]; then
|
||||
echo $"Backing up ssh keys for $USERNAME"
|
||||
backup_directory_to_usb /home/$USERNAME/.ssh ssh/$USERNAME
|
||||
fi
|
||||
|
||||
# Backup fin database if it exists
|
||||
if [ -d /home/$USERNAME/.fin ]; then
|
||||
echo $"Backing up fin files for $USERNAME"
|
||||
backup_directory_to_usb /home/$USERNAME/.fin fin/$USERNAME
|
||||
fi
|
||||
# Backup fin database if it exists
|
||||
if [ -d /home/$USERNAME/.fin ]; then
|
||||
echo $"Backing up fin files for $USERNAME"
|
||||
backup_directory_to_usb /home/$USERNAME/.fin fin/$USERNAME
|
||||
fi
|
||||
|
||||
# Backup syncthing
|
||||
if [ -d /home/$USERNAME/Sync ]; then
|
||||
echo $"Backing up syncthing files for $USERNAME"
|
||||
backup_directory_to_usb /home/$USERNAME/Sync syncthing/$USERNAME
|
||||
# Backup syncthing
|
||||
if [ -d /home/$USERNAME/Sync ]; then
|
||||
echo $"Backing up syncthing files for $USERNAME"
|
||||
backup_directory_to_usb /home/$USERNAME/Sync syncthing/$USERNAME
|
||||
# ensure that device IDs will be backed up as part of user config settings
|
||||
if [ ! -d /home/$USERNAME/.config/syncthing ]; then
|
||||
mkdir -p /home/$USERNAME/.config/syncthing
|
||||
|
@ -370,6 +377,12 @@ function backup_users {
|
|||
}
|
||||
|
||||
function backup_directories {
|
||||
if [ -d $HOME/.gvm/scripts ]; then
|
||||
cd $HOME/.gvm/scripts
|
||||
gvm use go${GO_VERSION} --default
|
||||
systemctl set-environment GOPATH=$GOPATH
|
||||
fi
|
||||
|
||||
# directories to be backed up (source,dest)
|
||||
backup_dirs=(
|
||||
"none, none, /etc/letsencrypt, letsencrypt"
|
||||
|
@ -382,8 +395,8 @@ function backup_directories {
|
|||
"none, none, /etc/nginx/sites-available, web"
|
||||
"none, none, /home/$ADMIN_USERNAME/.ipfs, ipfs"
|
||||
"none, none, /var/cache/minidlna, dlna"
|
||||
"/home/git/go/src/github.com/gogits, gogs, /root/tempgogsdata, gogsdata"
|
||||
"none, none, /home/git/go/src/github.com/gogits/gogs/custom, gogs"
|
||||
"$GOPATH/src/github.com/gogits, gogs, /root/tempgogsdata, gogsdata"
|
||||
"none, none, $GOPATH/src/github.com/gogits/gogs/custom, gogs"
|
||||
"none, none, /home/git/gogs-repositories, gogsrepos"
|
||||
"none, none, /home/git/.ssh, gogsssh"
|
||||
"none, none, /var/lib/tox-bootstrapd, tox"
|
||||
|
@ -451,8 +464,14 @@ function remove_backup_directory {
|
|||
}
|
||||
|
||||
function prepare_directories {
|
||||
if [ -d $HOME/.gvm/scripts ]; then
|
||||
cd $HOME/.gvm/scripts
|
||||
gvm use go${GO_VERSION} --default
|
||||
systemctl set-environment GOPATH=$GOPATH
|
||||
fi
|
||||
|
||||
# Some miscellaneous preparation for backing up directories
|
||||
if [ -d /home/git/go/src/github.com/gogits ]; then
|
||||
if [ -d $GOPATH/src/github.com/gogits ]; then
|
||||
mv /home/git/gogs-repositories/*.git /home/git/gogs-repositories/$ADMIN_USERNAME
|
||||
fi
|
||||
if [ -d /var/lib/tox-bootstrapd ]; then
|
||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue