FAQ | This is a LIVE service | Changelog

Skip to content
Snippets Groups Projects
  1. May 24, 2022
    • Dr Adam Thorn's avatar
      Fix generation of list of package files to exclude in the standard prepare script · ad91da90
      Dr Adam Thorn authored
      c714a331 introduced an annoying bug here. If the filenames piped to xargs include
      an apostrophe, xargs will complain and stop. We have thus, in practice, been
      including all files that appear in the list after
      
      /usr/share/sounds/ubuntu/ringtones/Sam's Song.ogg
      
      !! Also, we've not been properly handling filenames with spaces in, and perhaps
      other filenames too. We thus null-terminate the filenames for ourself.
      
      Because I want to get to the point where we can have a sensible return code
      from the prepare script, this commit also adds some set -e commands to try
      to ensure errors bubble up. This is a little tedious to achieve due to all
      the subshells in this script.
      
      For the same reason, we split off the "diff" command into a "set +e" block
      because diff returns non-zero if differences are found. We do not consider
      that to be an error!
      ad91da90
    • Dr Adam Thorn's avatar
      Improve check of whether mysql is(/should be) running in default prepare script · 40f64d5c
      Dr Adam Thorn authored
      We think the intention of the old version of this block is
      
      "if mysql is running, dump the databases".
      
      The check has been buggy for a long long time: it reads the contents
      of my.cnf ... which nowadays just has some !includedir directives.
      This lead to setting
      
      SOCKET=""
      
      and, it turns out, [ -S "" ] returns true.
      
      The main intention of this part of the prepare script is to backup
      vaguely normal machines running a simple mysql database, such as
      small group webservers. We thus don't need to consider every
      eventuality.
      40f64d5c
    • Dr Adam Thorn's avatar
    • Dr Adam Thorn's avatar
      Cease trying to configure dateext logrotation in prepare script · dd28c9af
      Dr Adam Thorn authored
      On servers we configure this via ansible.
      
      On workstations it is not having the desired effect because the stock
      logrotate.conf includes the line ...
      
      and so the simple grep thinks it's already configured! I'll add an
      ansible task in due course to actually configure this.
      dd28c9af
  2. Apr 25, 2022
  3. Jan 06, 2021
  4. Nov 09, 2020
  5. Nov 07, 2018
    • Dr Adam Thorn's avatar
      Escape $ in ssh commands used in prepare scripts · 71da2ff1
      Dr Adam Thorn authored
      Our backup logs are generally full of
      
      + ssh -p 22 -o ConnectTimeout=10 root@openvpn2020.ch.cam.ac.uk '
        umask 077
        FILELIST=`tempfile`
        CONFLIST=`tempfile`
        mkdir -p /var/adm/backup
        # Make logrotate use datestamps
        if ! grep -q dateext /etc/logrotate.conf ; then sed  -i '\''s/^include/dateext\ninclude/'\'' /etc/logrotate.conf ; fi
        # Which packages are installed?
        dpkg --get-selections | awk '\'' { print $1 ; } '\'' >/var/adm/backup/packages
        cat /var/lib/dpkg/info/*.list | while read F ; do [ -f "$F" ] && echo "$F" ; done | sort > $FILELIST
        awk '\''/Description:/ { flag = 0 } ; flag == 1 { print $1 ; }  ; /Conffiles:/ { flag = 1  } ; '\'' </var/lib/dpkg/status |  sort >$CONFLIST
        diff -u $FILELIST $CONFLIST | grep ^-/ | sed s/^-// >/var/adm/backup/package-files
        rm
       '
      rm: missing operand
      
      because we're not escaping the args to that final rm command! This means we gradually fill
      up /tmp, especially on machines that are infrequently rebooted (e.g. calculon)
      0.9-ch56
      71da2ff1
  6. Jan 14, 2016
  7. Jul 02, 2015
Loading