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
- Host: GitHub
- URL: https://github.com/chriscummins/shutterbug
- Owner: ChrisCummins
- Created: 2017-01-17T20:25:43.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2018-05-06T14:04:12.000Z (almost 7 years ago)
- Last Synced: 2025-01-28T10:45:16.170Z (3 months ago)
- Topics: backup-solution, dvd, photos
- Language: Python
- Homepage:
- Size: 15.6 KB
- Stars: 0
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
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.