skip to main content

Digital Asset Management using digiKam, Geeqie, and Exiftool: ingestion

Managing photographs can be a daunting task. After several years (and too many "do-overs"), I finally have a digital asset management workflow that works for me. Part 1 discusses how image metadata can get really messy and how to use Exiftool to clean up the mess. Part 2 (this page) covers the ingestion process.

Your approach to digital asset management undoubtedly differs greatly from my own. Even so, you might find some of the individual steps and perhaps even the overall process adaptable for your own workflow.

Written in 2012. Minor update in March 2015.

Overview, the obligatory warning, and outline with page links

Overview

During the actual ingestion process I use Exiftool to rename camera image files and write copyright, credit, and contact information directly to the image metadata.

Because of certain peculiarities and bugs in digiKam's handling of XMP sidecar files (possibly fixed in digiKam 4.7; see Bug 309058 - Database can't be synchronized with XMP sidecars), I use a combination of Geeqie and Exiftool to write rotation metadata before handing the images over to digiKam, and I create Exiftool "MIE" sidecar files to be used in conjunction with the XMP sidecar files that digiKam will create.

Finally, I use Exiftool to move the camera image files and MIE sidecar files into my digiKam album subfolders.

A word about Exiftool: Exiftool is a mature and extremely reliable metadata reading and writing application, and it's the only metadata writing application that I trust enough to allow writing metadata to my camera raw files. Although this article was written in 2012, Exiftool and the Exiftool syntax seldom change except to add new tags and new capabilities. I put this article up on my website mostly so I would have a quick reference for the Exiftool commands that I use the most often. This doesn't mean that all the command examples on this page still work exactly the same as they did when I first posted the article. But I haven't found any that don't.

Warning: dangerous commands, proceed with caution

Some of the steps on this page use "find", "chmod", and "rm" at the command line. "find", "chmod", and "rm" are Linux commands. I don't know what the Windows or MacIntosh equivalents would be.

If you execute an improperly typed "chmod" or "rm" command from within the wrong folder, you can delete or change the file permissions on a whole lot of files that weren't the files you were trying to delete or modify. You can easily delete all your personal files and/or ruin your system files. When in doubt, the internet search engines are your friends.

Other steps use Exiftool. If misused, Exiftool can scatter your images all over your hard drive, remove all your image metadata, and otherwise wreck havoc on your files.

All the Exiftool example commands on this page assume you are using Linux. Windows commands are sometimes slightly different because (among other differences) Windows requires different escape characters (%, ", and ' are example escape characters). The possible differences are beyond the scope of this article, but well presented in the Exiftool documentation and frequently discussed in the Exiftool forums.

Many times online tutorials provide generalized commands (eg command options filename) rather than specific examples (eg exiftool -a -S -G0 flower.cr2) for what to type when using the command line. Personally I find generalized examples often confusing and sometimes uninterpretable.

In this tutorial all command line examples are specific rather than generalized. So unless your folder structure, name, and copyright and contact information exactly matches Elle Stone's (doubtful!), take extra care to modify the command line examples to match your own folder structure, name, etc.

So make sure you understand what the sample commands do. Test all the "find" commands on a folder of test images using "ls" (list) before attempting to deploy "chmod" (change file permissions) or "rm" (delete). Likewise test Exiftool commands on a folder of test images.

Finally, don't discount the possibility that I might have made a typo somewhere in an example command. In other words, use the information on this page at your own risk.

Outline of the ingestion process, with links to the appropriate sub-section of the tutorial

Before the ingestion process can start, a decision must be made regarding what to name and where to put camera image files:

  1. File names
  2. Folder structure

The actual ingeston process can be broken down into twelve steps:

  1. Transfer images from the camera card to the computer.
  2. Rename the image files by date, time, and camera file number.
  3. Change the image file permissions to "read only".
  4. Change the system file modification date to match the image createdate.
  5. Add copyright/contact/credit information to the image file metadata, and in the process create backup "_original" files.
  6. Set temporary sidecar XMP orientation flags on images that display with the wrong orientation; at the same time do a preliminary cull.
  7. Write the correct orientation metadata to any images that display with the wrong orientation.
  8. Delete the temporary XMP sidecar files.
  9. Create Exiftool MIE sidecar files.
  10. Move the image files and MIE sidecar files to the appropriate digiKam album subfolder.
  11. Delete any duplicates and move the remaining backup "_original" files to the "ingest/camera/originals" folder.
  12. Open digiKam and begin tagging and rating.

Most of the above-listed steps are accomplished very quickly by copy-pasting at the command line. So explaining the process is a lot more complicated than actually doing it.

From camera to digiKam album folder

Naming camera image files

Most people rename camera images to something other than the camera-created file name. And again, what works for one person might be totally unsuited for another person. I tried a lot of different naming schemes before settling on naming by date plus the number portion of the camera-created file name:

file name scheme: "yymmdd-hhmm-dir-file.ext"

For example: 080602-1609-100-0713.cr2

Reading the file name from left to right:
The photograph was taken on June 2, 2008.
The time was 1609 UTC.
The camera directory number was 100.
The camera file number was 0713.

I settled on this naming scheme for several reasons:

  • I can tell at a glance what year, month, day, hour, and minute an image was taken, which comes in handy when I'm selecting images that go together, and when tagging and rating images.
  • The camera file number guarantees that the images are uniquely named in the "as taken" sequence; otherwise I would need to add an automatic copy number to some images when shooting faster than one image per minute, and sometimes automatic copy numbers are not in the same order as the images were actually taken.
  • Even though the file name is a bit long, when I want to use exiftool to view the metadata in a particular image I can type "*####.ext", where "####" is the last four digits of the file name. If I left off the camera file number, I'd have to type the entire file name to view the metadata of any given image.

Because I find it next to impossible to keep track of daylight savings time and time zones, my cameras are set to UTC instead of local time. Combined with the date and location, calculating local time isn't that hard. But usually I'm more interested in knowing whether "these photographs were all taken within five minutes of each other" than I am in knowing whether "these photographs were taken at five in the afternoon local time".

Organizing camera image files

Digial photographs have to go somewhere, and what works for one person might be totally unsuited for another person. I keep my camera image files in folders and subfolders organized by file type (jpeg or raw) and by year and month:


Ingestion folders (temporary storage, no subfolders):

   /media/sdb3/ingest/camera/jpegs
   /media/sdb3/ingest/camera/rawfiles
   /media/sdb3/ingest/camera/originals


DigiKam album folders (permanent storage):

Jpegs, with example subfolders by year and month:

   /media/sdd6/dam/esp/jpegs
      /media/sdd6/dam/esp/jpegs/02
         /media/sdd6/dam/esp/jpegs/02/0201
         /media/sdd6/dam/esp/jpegs/02/0202
         . . .
      /media/sdd6/dam/esp/jpegs/12
         /media/sdd6/dam/esp/jpegs/12/1208

Raw files, with example subfolders by year and month:

   /media/sdd6/dam/esp/rawfiles
      /media/sdd6/dam/esp/rawfiles/07
         /media/sdd6/dam/esp/rawfiles/07/0707
         /media/sdd6/dam/esp/rawfiles/07/0708
         /media/sdd6/dam/esp/rawfiles/07/0709
         . . .
      /media/sdd6/dam/esp/rawfiles/12
         /media/sdd6/dam/esp/rawfiles/12/1210
         /media/sdd6/dam/esp/rawfiles/12/1211

In the above folder structure "esp" stands for "Elle Stone Photography" and only holds images straight from the camera, unmodified except for additional metadata. I have other folders for images from other sources (scans of old family photographs, etc) and one of these days I'll get around to organizing them and importing them into digiKam.

  1. Transfer images from the camera card to the computer:

    Remove the camera card from the camera, plug the card into the card reader, and plug the card reader into the computer. I use a file manager (eg Dolphin or SpaceFM) to copy new images from the camera card to the appropriate "ingest" subfolder. New jpegs go in '/media/sdb3/ingest/camera/jpegs'. New raw files go in '/media/sdb3/ingest/camera/rawfiles'. If I were as organized as I'd like to be, I'd write a script for copying new files over at the command line.

  2. Use Exiftool at the command line to change the image file names:

    Dolphin, SpaceFM, and probably other file managers can be set up to open a terminal that's already at the directory where the Exiftool commands should be executed. The new file names will follow the format "yymmdd-hhmm-filenumber.ext", with the resulting filename having a lower-case extension regardless of the case of the original file name extension (I don't like upper-case file extensions).

     #Sample commands for various original image file-name extensions:
    
    exiftool '-filename<${CreateDate}-${filenumber}.%le' -d %y%m%d-%H%M *.CR2
    exiftool '-filename<${CreateDate}-${filenumber}.%le' -d %y%m%d-%H%M *.cr2
    exiftool '-filename<${CreateDate}-${filenumber}.%le' -d %y%m%d-%H%M *.JPG
    exiftool '-filename<${CreateDate}-${filenumber}.%le' -d %y%m%d-%H%M *.jpg
    
  3. Use "find" plus "chmod" at the command line to change the image file permissions to "read-only":
     # Optional: List files to see which files will be affected:
    
    #Jpegs:
    find . -name '*.jpg' -exec ls -l '{}' \;
    
    #Raw files:
    find . -name '*.cr2' -exec ls -l '{}' \;
    
    
    #Change file permissions:
    
    #Jpegs:
    find . -name '*.jpg' -exec chmod a=r '{}' \;
    
    #Raw files:
    find . -name '*.cr2' -exec chmod a=r '{}' \;
    
    
    #The following command changes the permissions on the
    #file folder as well as the image files.
    #Which means you can't get into the folder until you
    #change the permissions on the folder back to what they were.
    #So don't use the following command:
    find . -name '*.*' -exec chmod a=r '{}' \;
    
    

    The "read-only" status only partially protects images from being modified. Exiftool and other programs run by the user who owns the images still can write to the image files.

  4. Use Exiftool to change the system file modification date to match the image createdate:
    Jpegs:
    exiftool '-filemodifydate<createdate' *.jpg
    
    Raw files:
    exiftool '-filemodifydate<createdate' *.cr2
    

    From this point forward, all Exiftool commands that write to the image file will require using the "-P" option at the beginning of the command, or else the system file modification date will change to the currect date and time.

    So far the file name and the system filemodify date have been changed, but the image file itself hasn't been modified. So make sure you have backups of your original camera images before proceeding (exiftool will also make a backup), because the next step will modify the image file itself, by writing to the image metadata. Obviously, if you never, ever write to your original camera files, you'll need to modify the procedure to write to a sidecar file instead.

  5. Use Exiftool to add copyright/contact/credit information:

    This step will modify the image file, but Exiftool will automatically create a copy of the original image, with the same file name, except with "_original" tacked on to the extension:

    Add copyright/credit/contact information to jpegs:
    exiftool  -P -OwnerName='Elle Stone' -IFD0:Artist='Elle Stone' -IPTC:By-line='Elle Stone' -XMP-dc:Creator='Elle Stone' -IPTC:By-lineTitle='Photographer' -XMP-photoshop:AuthorsPosition='Photographer' -XMP-photoshop:Credit='Elle Stone, Nine Degrees Below Photography' -IPTC:Contact='email: whatever@example.com, whatever-else@example.com; website: http://example.com' -XMP-iptcCore:CreatorWorkEmail='whatever@example.com, whatever-else@example.com' -XMP-iptcCore:CreatorWorkURL='http://example.com' -d %Y -IFD0:Copyright'<Copyright © $createdate Elle Stone, all rights reserved.' -d %Y -IPTC:CopyrightNotice'<Copyright © $createdate Elle Stone, all rights reserved.' -d %Y -XMP-dc:Rights'<Copyright © $createdate Elle Stone, all rights reserved.' *.jpg
    
    Add copyright/credit/contact information to raw files:
    exiftool  -P -OwnerName='Elle Stone' -IFD0:Artist='Elle Stone' -IPTC:By-line='Elle Stone' -XMP-dc:Creator='Elle Stone' -IPTC:By-lineTitle='Photographer' -XMP-photoshop:AuthorsPosition='Photographer' -XMP-photoshop:Credit='Elle Stone, Nine Degrees Below Photography' -IPTC:Contact='email: whatever@example.com, whatever-else@example.com; website: http://example.com' -XMP-iptcCore:CreatorWorkEmail='whatever@example.com, whatever-else@example.com' -XMP-iptcCore:CreatorWorkURL='http://example.com' -d %Y -IFD0:Copyright'<Copyright © $createdate Elle Stone, all rights reserved.' -d %Y -IPTC:CopyrightNotice'<Copyright © $createdate Elle Stone, all rights reserved.' -d %Y -XMP-dc:Rights'<Copyright © $createdate Elle Stone, all rights reserved.' *.cr2
    

    The command that adds copyright/credit/contact information is a bit long, so here's a list of all the metadata that was added to the image files:

    Camera owner:
    -OwnerName='Elle Stone'
    
    Photographer's name: 
    -IFD0:Artist='Elle Stone'
    -IPTC:By-line='Elle Stone'
    -XMP-dc:Creator='Elle Stone'
    
    Photographer's title:
    -IPTC:By-lineTitle='Photographer'
    -XMP-photoshop:AuthorsPosition='Photographer'
    
    Desired credit line:
    -XMP-photoshop:Credit='Elle Stone, Nine Degrees Below Photography'
    
    Contact information — essential to avoid creating orphaned works:
    -IPTC:Contact='email: whatever@example.com; website: http://example.com'
    -XMP-iptcCore:CreatorWorkEmail='whatever@example.com'
    -XMP-iptcCore:CreatorWorkURL='http://example.com'
    
    Copyright information:
    -d %Y -IFD0:Copyright'<Copyright © $createdate Elle Stone, all rights reserved.'
    -d %Y -IPTC:CopyrightNotice'<Copyright © $createdate Elle Stone, all rights reserved.'
    -d %Y -XMP-dc:Rights'<Copyright © $createdate Elle Stone, all rights reserved.'
    

    The above list of metadata items seems overly redundant. But different applications read different portions and types of metadata. So given the potential problems associated with orphaned images, I decided to hit all the bases at one go.

  6. Set image orientation flags and do a preliminary cull:

    Using Geeqie, scroll through the images, setting the orientation flag for any images that aren't displaying correctly, and at the same time using Geeqie's "safe delete" to cull any unwanted images. By using Geeqie's "safe delete", I can review the images again before permanent deletion, and return them to the appropriate ingestion folder if I change my mind (I do change my mind quite a lot).

    As all the image files are "read only", I set Geeqie preferences to write to sidecar files. I allow Exiftool but no other application to write metadata directly to my image files; all other applications including digiKam are set to write to sidecar files.

  7. Use Exiftool to copy the orientation information from the Geeqie sidecar files to the image file metadata:

    For some unfathomable reason, Geeqie treats raw files and jpegs differently. For raw files, Geeqie creates sidecar files named "filename.xmp" and puts them in the same folder as the image file. For jpegs, Geeqie creates sidecar files named "filename.jpg.gq.xmp" and puts them in a hidden folder named ".metadata", the location of which depends on how Geeqie is set up. So for jpegs, first use a file manager (or write a script) to move Geeqie's jpeg sidecar files from the hidden ".metadata" folder to the "jpegs" folder.

    #Jpegs:
    exiftool -P -tagsfromfile %d%f.jpg.gq.xmp -xmp-tiff:Orientation '-XMP-tiff:Orientation<IFD0:Orientation' '-XMP-tiff:Orientation<IFD1:Orientation' -overwrite_original *.jpg
    
    #Raw files:
    exiftool -P -tagsfromfile %d%f.xmp -xmp-tiff:Orientation '-XMP-tiff:Orientation<IFD0:Orientation' '-XMP-tiff:Orientation<IFD1:Orientation' -overwrite_original *.cr2
    
    #A harmless error message will be generated for every image file
    #that doesn't have a corresponding xmp sidecar file. For example:
    Warning: Error opening file - 091215-2313-100-3833.jpg.gq.xmp
    Warning: Error opening file - 091215-2314-100-3834.jpg.gq.xmp
    Warning: Error opening file - 091215-2316-100-3836.jpg.gq.xmp
    . . .
    Warning: Error opening file - 120910-1756-100-4553.jpg.gq.xmp
       62 image files updated
      539 image files unchanged
    
    

    This time I used the '-overwrite_original' option, which asks Exiftool to not create backup files this time.

    I wrote the orientation flag to three separate locations in the image file:

    1. -xmp-tiff:Orientation
    2. '-XMP-tiff:Orientation<IFD0:Orientation'
    3. '-XMP-tiff:Orientation<IFD1:Orientation'

    This is because digiKam reads all existing image file orientation flags and reconciles any differences by prefering the IFD1 tag over the IFD0 tag, and the IFD0 tag over the XMP-tiff tag. By definition, an XMP sidecar file only has the XMP-tiff:Orientation tag. So if digiKam is set up to only write to XMP sidecar files, any action that causes digiKam to reread the image metadata will also reset the digiKam database orientation flag to match the image metadata IFD1 or IFD0 orientation tag instead of the digiKam XMP sidecar orientation flag.

    So for images that need the metadata orientation flag reset, I use Exiftool set the flag for all three metadata fields before digiKam ever sees the image file. And if I subsequently use digiKam to change the orientation flag in the digiKam XMP sidecar file, I then use Exiftool to copy the XMP sidecar file orientation information over to all three orientation tags in the image metadata.

    Unfortunately digikam doesn't write the orientation tag to the XMP sidecar for raw files (this is a bug in DigiKam 3.3, hopefully fixed in subsequent verions). So setting the orientation flag for raw files using digiKam requires locating the raw files one by one before using Exiftool to set the orientation flags in the image metadata. It's much better to catch all the images that need their orientation flag changed before digiKam sees the image for the first time.

  8. Delete the temporary Geeqie XMP files:
    #Optional: List the files to be deleted:
    find . -name '*.xmp' -exec ls -l '{}' \;
    
    #Delete the Geeqie xmp sidecar files:
    find . -name '*.xmp' -exec rm '{}' \;
    #
    
  9. Create Exiftool MIE sidecar files and change the file permissions to "read-only":
    #Jpegs:
    exiftool -o %d%f.mie *.jpg
    find . -name '*.mie' -exec chmod a=r '{}' \;
    
    #Raw files:
    exiftool -o %d%f.mie *.cr2
    find . -name '*.mie' -exec chmod a=r '{}' \;
    
    #When creating MIE files for a folder with subfolders and multiple image file types:
    exiftool -ext jpg -ext cr2 -ext mrw -o %d%f.mie -r /path/to/top/folder
    
  10. Use Exiftool to move the image files and Exiftool MIE sidecar files to the appropriate digiKam database album subfolders, creating new folders as needed:
    #Jpegs:
    exiftool '-Directory<CreateDate' -d /media/sdd6/dam/esp/jpegs/%y/%y%m *.jpg
    exiftool '-Directory<CreateDate' -d /media/sdd6/dam/esp/jpegs/%y/%y%m *.mie
    
    #Raw files:
    exiftool '-Directory<CreateDate' -d /media/sdd6/dam/esp/rawfiles/%y/%y%m *.cr2
    exiftool '-Directory<CreateDate' -d /media/sdd6/dam/esp/rawfiles/%y/%y%m *.mie
    
    #Sample command output and command variations:
    exiftool '-Directory<CreateDate' -d /media/sdd6/dam/esp/jpegs/%y/%y%m *.jpg
    Error: '/media/sdd6/dam/esp/jpegs/10/1005/100506-0858-100-3934.jpg' already exists - 100506-0858-100-3934.jpg
    Error: '/media/sdd6/dam/esp/jpegs/10/1005/100506-0858-100-3935.jpg' already exists - 100506-0858-100-3935.jpg
    Error: '/media/sdd6/dam/esp/jpegs/10/1005/100506-0858-100-3936.jpg' already exists - 100506-0858-100-3936.jpg
    . . .
    Error: '/media/sdd6/dam/esp/jpegs/12/1208/120816-2022-100-4497.jpg' already exists - 120816-2022-100-4497.jpg
    Error: '/media/sdd6/dam/esp/jpegs/12/1208/120816-2133-100-4509.jpg' already exists - 120816-2133-100-4509.jpg
        3 directories created
        0 image files updated
      352 image files copied
      249 files weren't updated due to errors
    
    #Command variations: The above command moves the images
    #out of the ingest folder and puts it in a digiKam album folder.
    #It will not move a file if a file with the same name
    #already exists in the destination folder. Instead it prints an
    #error message for each file that wasn't moved because
    #there was already a file by that name in the destination folder.
    
    #To copy instead of move,
    #but not overwrite if file already exists in destination folder,
    #start the command with:
    exiftool -o . '-Directory<CreateDate'
    
    #To copy AND OVERWRITE if file already exists in destination folder,
    #start the command with:
    exiftool -o '-Directory<CreateDate'
    
  11. Delete duplicate images and move the remaining "_original" camera files to a safe place:

    In the previous command, because I used Exiftool to "move" rather than "copy" the images, any image and sidecar MIE files that weren't moved to the digiKam album folders are duplicates of images that were already in the digiKam album folders (they have same file names, so if they aren't really the same image, there's a serious problem somewhere in the workflow!).

    As noted above, while writing the copyright/credit/contact information to the image files, Exiftool automatically created copies of the original images, with the same base names but with "_original" tacked on to the extension. You can use a file manager to delete the duplicates from the ingestion folder, along with their corresponding _original files. Then if you like you can use a file manager to move the remaining "_original" files to a separate folder for backup storage.

  12. Open digiKam and start tagging and rating images:

    Using Dolphin, safely remove the camera card from the card reader and put it back in the camera or somewhere safe. At this point, I have three copies of each image file: one copy on the camera card, one completely untouched copy in the "ingest/camera/originals" folder, and one copy with appropriate copyright/credit/contact/orientation information in a digiKam album subfolder. Even so, I don't like to erase the image files from the camera card until I've verified that they all open in digiKam without a problem, and I've made a back-up copy to external storage.

    As an extra precaution, my "ingest" folder is on a different physical drive from the digiKam albums, and I keep offline backup copies of my digiKam image albums and database.

Summary with copy-pastable commands

These are just sample commands. Don't forget to modify the commands as appropriate, unless you really do want to transfer copyrights for all your images over to Elle Stone!

Jpegs

#1 After copying the image files from the camera card
to the "ingest/jpegs" folder, the following four comments plus commands
can be copied and pasted all at once into the terminal:

#2 Rename
exiftool '-filename<${CreateDate}-${filenumber}.%le' -d %y%m%d-%H%M *.JPG

#3 Change file permissions
find . -name '*.jpg' -exec chmod a=r '{}' \;

#4 Change system file modification date
exiftool '-filemodifydate<createdate' *.jpg

#5 Add copyright, credit, and contact information
exiftool  -P -OwnerName='Elle Stone' -IFD0:Artist='Elle Stone' -IPTC:By-line='Elle Stone' -XMP-dc:Creator='Elle Stone' -IPTC:By-lineTitle='Photographer' -XMP-photoshop:AuthorsPosition='Photographer' -XMP-photoshop:Credit='Elle Stone, Nine Degrees Below Photography' -IPTC:Contact='email: whatever@example.com, whatever-else@example.com; website: http://example.com' -XMP-iptcCore:CreatorWorkEmail='whatever@example.com, whatever-else@example.com' -XMP-iptcCore:CreatorWorkURL='http://example.com' -d %Y -IFD0:Copyright'<Copyright © $createdate Elle Stone, all rights reserved.' -d %Y -IPTC:CopyrightNotice'<Copyright © $createdate Elle Stone, all rights reserved.' -d %Y -XMP-dc:Rights'<Copyright © $createdate Elle Stone, all rights reserved.' *.jpg

#6 Use Geeqie to do a preliminary cull
and to write sidecars with image orientation flags.
Then following four comments plus commands can be
copied all at once and pasted into the terminal.

#7 Copy orientation information from Geeqie sidecar files to image files
exiftool -P -tagsfromfile %d%f.jpg.gq.xmp -xmp-tiff:Orientation '-XMP-tiff:Orientation<IFD0:Orientation' '-XMP-tiff:Orientation<IFD1:Orientation' -overwrite_original *.jpg

#8 Delete the Geeqie xmp sidecar files
find . -name '*.xmp' -exec rm '{}' \;

#9 Create Exiftool MIE sidecar files and change the file permissions to read-only
exiftool -o %d%f.mie *.jpg
find . -name '*.mie' -exec chmod a=r '{}' \;

#10 Move the image files and MIE sidecar files to the appropriate digiKam
# database album folders, creating new subfolders as needed
exiftool '-Directory<CreateDate' -d /media/sdd6/dam/esp/jpegs/%y/%y%m *.jpg
exiftool '-Directory<CreateDate' -d /media/sdd6/dam/esp/jpegs/%y/%y%m *.mie

#11 Use Dolphin to delete any duplicates from the ingestion folder,
#along with their corresponding "_original" files.
#Then move the remaining "_original" files to a separate folder.

#12 Open digiKam and begin tagging and rating.

Raw files

 #1 After copying the image files from the camera card
to the "ingest/jpegs" folder, the following four comments plus commands
can be copied and pasted all at once into the terminal:

#2 Rename
exiftool '-filename<${CreateDate}-${filenumber}.%le' -d %y%m%d-%H%M *.CR2

#3 Change file permissions:
find . -name '*.cr2' -exec chmod a=r '{}' \;

#4 Change system file modification date
exiftool '-filemodifydate<createdate' *.cr2

#5 Add copyright, credit, contact information
exiftool  -P -OwnerName='Elle Stone' -IFD0:Artist='Elle Stone' -IPTC:By-line='Elle Stone' -XMP-dc:Creator='Elle Stone' -IPTC:By-lineTitle='Photographer' -XMP-photoshop:AuthorsPosition='Photographer' -XMP-photoshop:Credit='Elle Stone, Nine Degrees Below Photography' -IPTC:Contact='email: whatever@example.com, whatever-else@example.com; website: http://example.com' -XMP-iptcCore:CreatorWorkEmail='whatever@example.com, whatever-else@example.com' -XMP-iptcCore:CreatorWorkURL='http://example.com' -d %Y -IFD0:Copyright'<Copyright © $createdate Elle Stone, all rights reserved.' -d %Y -IPTC:CopyrightNotice'<Copyright © $createdate Elle Stone, all rights reserved.' -d %Y -XMP-dc:Rights'<Copyright © $createdate Elle Stone, all rights reserved.' *.cr2

#6 Use Geeqie to do a preliminary cull
and to write sidecars with image orientation flags.
Then following four comments plus commands can be
copied all at once and pasted into the terminal.

#7 Copy orientation information from Geeqie sidecar files to image files
exiftool -P -tagsfromfile %d%f.xmp -xmp-tiff:Orientation '-XMP-tiff:Orientation<IFD0:Orientation' '-XMP-tiff:Orientation<IFD1:Orientation' -overwrite_original *.cr2

#8 Delete the Geeqie xmp sidecar files
find . -name '*.xmp' -exec rm '{}' \;

#9 Create Exiftool MIE sidecar files and change the file permissions to read-only
exiftool -o %d%f.mie *.cr2
find . -name '*.mie' -exec chmod a=r '{}' \;

#10 Move the image files and MIE sidecar files to the appropriate digiKam database album folders, creating new subfolders as needed
exiftool '-Directory<CreateDate' -d /media/sdd6/dam/esp/rawfiles/%y/%y%m *.cr2
exiftool '-Directory<CreateDate' -d /media/sdd6/dam/esp/rawfiles/%y/%y%m *.mie

#11 Use Dolphin to delete any duplicates from the ingestion folder,
#along with their corresponding "_original" files.
#Then move the remaining "_original" files to a separate folder.

#12 Open digiKam and begin tagging and rating.