Init
This commit is contained in:
		
						commit
						6ef597701f
					
				
							
								
								
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1 @@ | |||||||
|  | *.deb | ||||||
							
								
								
									
										1
									
								
								DEBIAN/conffiles
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								DEBIAN/conffiles
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1 @@ | |||||||
|  | /etc/tupper.conf | ||||||
							
								
								
									
										6
									
								
								DEBIAN/control
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								DEBIAN/control
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,6 @@ | |||||||
|  | Package: tupper | ||||||
|  | Version: 0.1 | ||||||
|  | Maintainer: Martin "maride" Dessauer | ||||||
|  | Architecture: all | ||||||
|  | Depends: cron (>= 3.0), borgbackup (<< 2), sshfs (>= 3) | ||||||
|  | Description: Some drops of glue between SSHFS, Borg and cron | ||||||
							
								
								
									
										10
									
								
								DEBIAN/postinst
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										10
									
								
								DEBIAN/postinst
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,10 @@ | |||||||
|  | #!/bin/bash | ||||||
|  | 
 | ||||||
|  | if [ "$1" == "configure" ]; then | ||||||
|  | 	chown root:root /etc/tupper.conf | ||||||
|  | 	chmod 600 /etc/tupper.conf | ||||||
|  | 	chown root:root /etc/cron.daily/tupper | ||||||
|  | 	chmod 755 /etc/cron.daily/tupper | ||||||
|  | 	chown root:root /usr/sbin/tupper | ||||||
|  | 	chmod 755 /usr/sbin/tupper | ||||||
|  | fi | ||||||
							
								
								
									
										0
									
								
								DEBIAN/postrm
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										0
									
								
								DEBIAN/postrm
									
									
									
									
									
										Executable file
									
								
							
							
								
								
									
										0
									
								
								DEBIAN/preinst
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										0
									
								
								DEBIAN/preinst
									
									
									
									
									
										Executable file
									
								
							
							
								
								
									
										0
									
								
								DEBIAN/prerm
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										0
									
								
								DEBIAN/prerm
									
									
									
									
									
										Executable file
									
								
							
							
								
								
									
										21
									
								
								README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								README.md
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,21 @@ | |||||||
|  | # tupper | ||||||
|  | 
 | ||||||
|  | Drops of glue between [SSHFS](https://github.com/libfuse/sshfs), [Borg](https://www.borgbackup.org/) and [cron](https://github.com/vixie/cron) | ||||||
|  | 
 | ||||||
|  | ## Features | ||||||
|  | 
 | ||||||
|  | - Auto-mounts specified SSHFS as required | ||||||
|  | - Encrypted, deduplicated backups thanks to Borg | ||||||
|  | - Backup of specified directories to SSHFS | ||||||
|  | - Daily cron scheduler | ||||||
|  | 
 | ||||||
|  | ## Usage | ||||||
|  | 
 | ||||||
|  | Enter SSH credentials, host and destination directory in `/etc/tupper.conf`, as well as the directories to back up. | ||||||
|  | 
 | ||||||
|  | Then either run `sudo tupper` or wait for the daily cron scheduler to kick in. | ||||||
|  | 
 | ||||||
|  | ## Building | ||||||
|  | 
 | ||||||
|  | `dpkg-deb --build . tupper_0.1_any.deb` | ||||||
|  | 
 | ||||||
							
								
								
									
										4
									
								
								etc/cron.daily/tupper
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										4
									
								
								etc/cron.daily/tupper
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,4 @@ | |||||||
|  | #!/bin/bash | ||||||
|  | 
 | ||||||
|  | /usr/sbin/tupper 2>&1 | tee --append /var/log/tupper.log | ||||||
|  | 
 | ||||||
							
								
								
									
										8
									
								
								etc/tupper.conf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								etc/tupper.conf
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,8 @@ | |||||||
|  | ### tupper.conf - config file for tupper | ||||||
|  | # | ||||||
|  | ## Example: | ||||||
|  | # SSH_URI='backupuser@yournas.local:/filez' | ||||||
|  | # SSH_PASS='p4$$w0rcl' | ||||||
|  | # BORG_PASSPHRASE='backuppass' | ||||||
|  | # TARGET='/var/lib/docker/volumes' | ||||||
|  | 
 | ||||||
							
								
								
									
										45
									
								
								usr/sbin/tupper
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										45
									
								
								usr/sbin/tupper
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,45 @@ | |||||||
|  | #!/bin/bash -e | ||||||
|  | 
 | ||||||
|  | # Inform user | ||||||
|  | echo "Welcome to tupper! Running on $(date)" | ||||||
|  | 
 | ||||||
|  | # Check access rights of config file | ||||||
|  | CONF="/etc/tupper.conf" | ||||||
|  | if [ "$(stat -c '%U' $CONF)" != "root" ] && [ "$(stat -c '%A' $CONF)" = "*------" ]; then | ||||||
|  | 	echo "Config file $CONF must be owned by root without any rights for group and other (**00)  set" 1>&2 | ||||||
|  | 	exit 1 | ||||||
|  | fi | ||||||
|  | # Include config file | ||||||
|  | source "$CONF" | ||||||
|  | 
 | ||||||
|  | # Check if required variables are set | ||||||
|  | if [ "$SSH_URI$SSH_PASS$TARGET" = "" ]; then | ||||||
|  | 	echo "Config file $CONF must contain SSH_URI, SSH_PASS and TARGET" 1>&2 | ||||||
|  | 	exit 1 | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | # Check privileges | ||||||
|  | if [ "$UID" -ne 0 ]; then | ||||||
|  | 	echo "$0 must be run as root. Quitting." 1>2 | ||||||
|  | 	exit 1 | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | # Create temporary mountpoint | ||||||
|  | MOUNTPOINT="$(mktemp --directory)" | ||||||
|  | 
 | ||||||
|  | # Check if SSHFS needs to be mounted | ||||||
|  | if [ "$(mount | grep $MOUNTPOINT | wc -l)" -eq 0 ]; then | ||||||
|  | 	echo "$SSH_PASS" | sshfs -o password_stdin "$SSH_URI" "$MOUNTPOINT" | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | # Backup | ||||||
|  | export BORG_PASSPHRASE | ||||||
|  | borg create --stats "$MOUNTPOINT::"'{now}' "$TARGET" | ||||||
|  | borg list "$MOUNTPOINT" | ||||||
|  | 
 | ||||||
|  | # Unmount and clean up mountpoint | ||||||
|  | fusermount -u "$MOUNTPOINT" && \ | ||||||
|  | rm -rf "$MOUNTPOINT" | ||||||
|  | 
 | ||||||
|  | # Inform user | ||||||
|  | echo "Goodbye from tupper! Finished on $(date)" | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user