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