Backup and organize your pictures library.
Go to file
Félix Baylac Jacqué 2cf564f1c4 Refactoring: simplify exif/mtime logic
Refactor the exif parsing/mtime parsing logic to have two clear
branches.
2023-08-24 18:19:28 +02:00
src Refactoring: simplify exif/mtime logic 2023-08-24 18:19:28 +02:00
.gitignore Init 2023-08-24 10:51:58 +02:00
Cargo.lock Fallback to mtime when no EXIF available 2023-08-24 16:18:35 +02:00
Cargo.toml Fallback to mtime when no EXIF available 2023-08-24 16:18:35 +02:00
LICENSE First semi-naive and dirty implementation 2023-08-24 13:09:51 +02:00
README.md First semi-naive and dirty implementation 2023-08-24 13:09:51 +02:00

Picobak

WARNING: this program hasn't properly been tested yet. Use with extreme caution. It might eat your kittens for now!!

Picobak is a small CLI utility to help you backup and organize your pictures on a filesystem. It uses the pictures EXIF metadata to store the files in a year/month/day directory tree like this:

2023
|
|
|-- 02
    |-- 19
        |-- pic2.jpg
    |-- 20
        |-- pic1.jpg
        |-- pic2.jpg
        |-- pic3.jpg
(...)

This program is heavily inspired by Shotwell's backup feature. I actually used that for years to organize my pictures. Sadly, it became more and more unstable along the years, it often fails midway-through the backup. Its implementation is too intimidating for me to try to fix and maintain it. In contrast, this utility is meant to stay small in terms of features scope and codebase. Nevertheless, Shotwell is a great program overall, kudos to the original authors, they have made my life simpler for years <3.

Usage

Overall:

Usage: pictures-backup [OPTIONS] <BACKUP_ROOT> <FILE_PATH>

Arguments:
  <BACKUP_ROOT>  Pictures library directory
  <FILE_PATH>    Picture to backup

Options:
  -d, --dry-run  Do not create any directory or copy any file. Only prints out the operations it would perform
  -h, --help     Print help
  -V, --version  Print version

You can couple this tool with GNU parallel to concurently backup multiple images and fully utilize a multicore system:

ls dir-containing-pictures | parallel -j $(nproc) picobak /my/pic-backup-root/