mirror of
				https://github.com/kevinveenbirkenbach/docker-volume-backup.git
				synced 2025-11-04 10:38:00 +00:00 
			
		
		
		
	Merged
This commit is contained in:
		
							
								
								
									
										30
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										30
									
								
								README.md
									
									
									
									
									
								
							@@ -9,18 +9,20 @@ It is part of the following scheme:
 | 
				
			|||||||

 | 
					
 | 
				
			||||||
Further information you will find [in this blog post](https://www.veen.world/2020/12/26/how-i-backup-dedicated-root-servers/).
 | 
					Further information you will find [in this blog post](https://www.veen.world/2020/12/26/how-i-backup-dedicated-root-servers/).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Backup
 | 
					## Backup all volumes
 | 
				
			||||||
Execute:
 | 
					Execute:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```bash
 | 
					```bash
 | 
				
			||||||
./docker-volume-backup.sh
 | 
					./docker-volume-backup.sh
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Recover
 | 
					## Recover one volume
 | 
				
			||||||
Execute:
 | 
					Execute:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```bash
 | 
					```bash
 | 
				
			||||||
./docker-volume-recover.sh {{volume_name}} {{backup_path}}
 | 
					
 | 
				
			||||||
 | 
					bash ./docker-volume-recover.sh "{{volume_name}}" "$(sha256sum /etc/machine-id | head -c 64)"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Debug
 | 
					## Debug
 | 
				
			||||||
@@ -29,30 +31,14 @@ To checkout what's going on in the mount container type in the following command
 | 
				
			|||||||
```bash
 | 
					```bash
 | 
				
			||||||
docker run -it --entrypoint /bin/sh --rm --volumes-from {{container_name}} -v /Backups/:/Backups/ kevinveenbirkenbach/alpine-rsync
 | 
					docker run -it --entrypoint /bin/sh --rm --volumes-from {{container_name}} -v /Backups/:/Backups/ kevinveenbirkenbach/alpine-rsync
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
## Manual Backup
 | 
					 | 
				
			||||||
rsync -aPvv  '***{{source_path}}***/' ***{{destination_path}}***";
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Test
 | 
					 | 
				
			||||||
Delete the volume.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
```bash
 | 
					 | 
				
			||||||
docker rm -f container-name
 | 
					 | 
				
			||||||
docker volume rm volume-name
 | 
					 | 
				
			||||||
```
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Recover the volume:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
```bash
 | 
					 | 
				
			||||||
docker volume create volume-name
 | 
					 | 
				
			||||||
docker run --rm -v volume-name:/recover/ -v ~/backup/:/backup/ "kevinveenbirkenbach/alpine-rsync" sh -c "rsync -avv /backup/ /recover/"
 | 
					 | 
				
			||||||
```
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Restart the container.
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Optimation
 | 
					## Optimation
 | 
				
			||||||
This setup script is not optimized yet for performance. Please optimized this script for performance if you want to use it in a professional environment.
 | 
					This setup script is not optimized yet for performance. Please optimized this script for performance if you want to use it in a professional environment.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## More information
 | 
					## More information
 | 
				
			||||||
 | 
					- https://docs.docker.com/storage/volumes/
 | 
				
			||||||
- https://blog.ssdnodes.com/blog/docker-backup-volumes/
 | 
					- https://blog.ssdnodes.com/blog/docker-backup-volumes/
 | 
				
			||||||
- https://www.baculasystems.com/blog/docker-backup-containers/
 | 
					- https://www.baculasystems.com/blog/docker-backup-containers/
 | 
				
			||||||
- https://gist.github.com/spalladino/6d981f7b33f6e0afe6bb
 | 
					- https://gist.github.com/spalladino/6d981f7b33f6e0afe6bb
 | 
				
			||||||
 | 
					- https://stackoverflow.com/questions/26331651/how-can-i-backup-a-docker-container-with-its-data-volumes
 | 
				
			||||||
 | 
					- https://netfuture.ch/2013/08/simple-versioned-timemachine-like-backup-using-rsync/
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,20 @@
 | 
				
			|||||||
#!/bin/bash
 | 
					#!/bin/bash
 | 
				
			||||||
# @param $1 Volume-Name
 | 
					# @param $1 Volume-Name
 | 
				
			||||||
 | 
					# @param $2 Hash-Name
 | 
				
			||||||
volume_name="$1"
 | 
					volume_name="$1"
 | 
				
			||||||
backup_path="$2"
 | 
					backup_hash="$2"
 | 
				
			||||||
 | 
					backup_path="/Backups/$backup_hash/docker-volume-backup/latest/$volume_name/raw"
 | 
				
			||||||
 | 
					echo "Inspect volume $volume_name"
 | 
				
			||||||
 | 
					docker volume inspect "$volume_name"
 | 
				
			||||||
 | 
					exit_status_volume_inspect=$?
 | 
				
			||||||
 | 
					if [ $exit_status_volume_inspect -eq 0 ]; then
 | 
				
			||||||
 | 
					    echo "Volume $volume_name allready exists"
 | 
				
			||||||
 | 
					  else
 | 
				
			||||||
 | 
					    echo "Create volume $volume_name"
 | 
				
			||||||
    docker volume create "$volume_name"
 | 
					    docker volume create "$volume_name"
 | 
				
			||||||
docker run --rm -v "$volume_name:/recover/" -v "$backup_path:/backup/" "kevinveenbirkenbach/alpine-rsync" sh -c "rsync -avv /backup/ /recover/"
 | 
					fi
 | 
				
			||||||
 | 
					if [ ! -d "$backup_path" ]; then
 | 
				
			||||||
 | 
					  echo "ERROR: $backup_path doesn't exist"
 | 
				
			||||||
 | 
					  exit 1
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					docker run --rm -v "$volume_name:/recover/" -v "$backup_path:/backup/" "kevinveenbirkenbach/alpine-rsync" sh -c "rsync -avv --delete /backup/ /recover/"
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user