* About rsyncshot Linux backups backup with bash, cron, rsync, and hard links. Inspired by http://www.mikerubel.org/computers/rsync_snapshots/ * Usage ** Simple Setup rsyncshot installs itself. To setup, just run the following commands: #+begin_SRC sh wget https://raw.githubusercontent.com/cjennings/rsyncshot/main/rsyncshot sudo bash ./rsyncshot setup #+end_SRC or simply run make install from the rsyncshot directory ** Automatic Hourly/Daily/Weekly Schedule via Cron rsyncshot will install a default schedule: - every hour at the top of the hour - every day at midnight - every week on Sunday at midnight Edit the schedule with: #+begin_SRC sh sudo crontab -e #+end_SRC ** Manual Backups Manual backups in the terminal with two arguments: - TYPE is a way to group backups together. Automatic backups will have the TYPE as HOURLY, DAILY, or WEEKLY. But you can give your manual backups any TYPE you wish. - MAX is the maximum number of backups before the oldest gets removed. For instance: #+begin_SRC sh rsyncshot manual 100 #+end_SRC ** Filtering Specify which directories to backup by editing /etc/rsyncshot/includes.txt. The defaults are: #+begin_src - /home - /etc - /usr/local/bin #+end_src Specify what filetype patterns to exclude by editing /etc/rsyncshot/excludes.txt. The defaults are: #+begin_src - *.pyc - *.pyo - *.class - *.elc - *.o - *.tmp - .cache* #+end_src ** A Few Safeguards - rsyncshot separates backups by the machine's name. Use one external drive to backup multiple machines without conflicts. - rsyncshot leverages lockfiles to prevent overapping runs. A rsyncshot backup will not begin if a previous run is still in progress. - rsyncshot will validate the specified source directories exist before beginning the backup. - rsyncshot validates it's backing up to a mounted drive. If the drive isn't mounted, rsyncshot attempts to mount it. - Backup directory permissions are changed to read-only to avoid inadvertent deletion. - rsyncshot logs the details of all runs to /var/log/rsyncshot.log. ** Requirements - Cron - Bash - Grep - Rsync - Flock ** Uninstalling run 'make uninstall' from the cloned directory. or remove /etc/rsyncshot /usr/local/bin/rsyncshot /var/log/rsyncshot.log ... and the cron entries relating to rsyncshot * Notes rsyncshot is a simple Bash script and an experiment in literate programming using Emacs. The script is generated from the .org file. rsyncshot isn't production software, even though the underlying utilities are.