An open API service indexing awesome lists of open source software.

https://github.com/chriscummins/shutterbug

📷 + 💿 = Archive photos on discs for safekeeping
https://github.com/chriscummins/shutterbug

backup-solution dvd photos

Last synced: about 1 month ago
JSON representation

📷 + 💿 = Archive photos on discs for safekeeping

Awesome Lists containing this project

README

        

# Shutterbug

Shutterbug splits a large collection of photos into a series of DVD-sized folders for burning to disc, and provides a mechanism to go from these disc backups back to the original directory structure.

Shutterbug is paranoid about data loss and corruption, and has some coping
strategies:

* It maintains a 1-1 mappings so that 1 input file = 1 file on a disc. This
means if a file becomes corrupted, you lose one image. Other approaches which
do not respect file boundaries lead to losing multiple images in one go.
* It randomizes the order of the files on the discs so that if a disc is lost,
you end up with lots of tiny gaps in your photo library, not one big one.
* It validates your files after restoring from backup, so you have a warning of
data corruption. Note this does not **prevent** data loss, only **discovers**
it. *The best way to prevent irrecoverable data loss is to make more copies of
your data to begin with.*

## Usage

### Requirements

* Python 3.

### Installation

```
$ pip3 install shutterbug
```

### Archiving to disc

To backup your photo library in `~/Pictures/2016` to 4.7GB DVDs, split the folder into "chunks" using shutterbug:

```
$ mkdir ~/chunks && cd ~/chunks
$ shutterbug ~/Pictures/2016 --gzip
chunk_001/ae3d47f87af176b74e1ec30599a7b31a.jpg.gz 4.93MB -> 4.90MB
chunk_001/631600d1e11339794e81d75f104e9f19.jpg.gz 7.40MB -> 7.38MB
chunk_001/130c52fe396237a59500a61b8101ff55.jpg.gz 6.79MB -> 6.77MB
chunk_001/27fc10914e18b0e1b303c05a800c299d.jpg.gz 5.73MB -> 5.70MB
...
Wrote chunk_001/MANIFEST.txt
Wrote chunk_001/README.txt
chunk_001 has 723 files, size 4662.40 MB (99.2% of maximum size)

chunk_002/5c9ce3b8071207ab702766ac2be76f10.jpg.gz 6.13MB -> 6.11MB
chunk_002/bc17480a318e7ba9a3e4e2e57538917d.jpg.gz 9.63MB -> 9.60MB
...
```

Burn each of the resulting folders in `~/chunks` to DVDs.

### Restoring from disc

Copy each chunk from your DVDs back to disc, e.g. `~/import/chunk_001`,
`~/import/chunk_002` etc. Restore the original file structure by running
shutterbug from the output directory:

```
$ mkdir ~/Pictures/2016 && cd ~/Pictures/2016
$ shutterbug --unpack ~/import/chunk_*
$ ~/Pictures/mkbackup.py ../compressed/* -u
~/import/chunk_001/ae3d47f87af176b74e1ec30599a7b31a.jpg.gz -> ./2016-12 NYC (2434 of 5025).jpg
~/import/chunk_001/631600d1e11339794e81d75f104e9f19.jpg.gz -> ./2016-12 NYC (4411 of 5025).jpg
~/import/chunk_001/130c52fe396237a59500a61b8101ff55.jpg.gz -> ./2016-12 NYC (301 of 5025).jpg
...
```

Shutterbug will print warnings for files in case the size or contents have
changed.