summaryrefslogtreecommitdiff
path: root/README.org
blob: 22d59c548e5fb62c5f1470e6af37f6a621ff8192 (plain)
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
* About rsyncshot
Linux backups with hard links, rsync, cron, and bash. 
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
curl -LO https://git.io/JYSMS
sudo sh ./rsyncshot setup
#+end_SRC
** 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 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
* 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.