#!/usr/bin/env bash echo "Clearing journald > 30 days" sudo journalctl --vacuum-time=30d echo "Applying system upgrades" sudo apt-get update sudo apt-get autoclean sudo apt-get upgrade ## rclone in LTS is too old function upgrade_rclone() { echo "Checking rclone..." # get installed version _LOCAL=$(dpkg-query --showformat='${Version}' --show rclone) # get latest version, strip leading "v" (v1.55.1 -> 1.55.1) _REMOTE=$(curl -s "https://api.github.com/repos/rclone/rclone/releases/latest" | grep -Po '"tag_name": "\K.*?(?=")') _REMOTE=${_REMOTE#v} # bash doesn't see versions as numbers, but as strings if [[ "${_LOCAL}" != "${_REMOTE}" ]]; then echo "Upgrading rclone - installed ${_LOCAL}, latest ${_REMOTE}" curl -L -o /tmp/rclone-latest.deb \ "https://downloads.rclone.org/rclone-current-linux-amd64.deb" if [[ $? -eq 0 ]]; then sudo apt-get install /tmp/rclone-latest.deb rm -f /tmp/rclone-latest.deb fi else echo "Installed rclone is the latest - ${_LOCAL}" fi } ## kopia is not in repos function upgrade_kopia() { echo "Checking kopia..." # get installed version _LOCAL=$(dpkg-query --showformat='${Version}' --show kopia) # get latest version, strip leading "v" (v1.55.1 -> 1.55.1) _REMOTE=$(curl -s "https://api.github.com/repos/kopia/kopia/releases/latest" | grep -Po '"tag_name": "\K.*?(?=")') _REMOTE=${_REMOTE#v} # bash doesn't see versions as numbers, but as strings if [[ "${_LOCAL}" != "${_REMOTE}" ]]; then echo "Upgrading kopia - installed ${_LOCAL}, latest ${_REMOTE}" curl -L -o /tmp/kopia-latest.deb \ "https://github.com/kopia/kopia/releases/download/v${_REMOTE}/kopia_${_REMOTE}_linux_amd64.deb" if [[ $? -eq 0 ]]; then sudo apt-get install /tmp/kopia-latest.deb rm -f /tmp/kopia-latest.deb fi else echo "Installed kopia is the latest - ${_LOCAL}" fi } upgrade_rclone upgrade_kopia