File Backup Solution

Problem: I have various files (docs and images) scattered over my entire C-drive (or any drive, folder, or library), and there are specific files I would like to back up and organize in some way. It is incredibly tedious to click through folders to find these files. I wrote a utility to automate the process; it’s a console app written in C#. I point it to a source drive or folder, tell it what kind of files I want to scan for and what paths to ignore, and specify output organization structure…and let it run. It logs some information about the operation.

The GitHub Repository is at  https://github.com/RichardFeich/FileBackupV2. It’s fully functional and could modified to suit your needs.

A little bit of setup is required:

exclude.txt — contains a list of paths not to scan [example]:

C:\Users\acme\.nuget
C:\Users\acme\.dotnet
C:\Users\acme\.vscode
C:\Users\acme\source
C:\Users\acme\AppData
C:\Users\acme\Application Data
C:\Users\acme\Cookies
C:\Users\acme\Local Settings
C:\Users\acme\My Documents
C:\Users\acme\NetHood
C:\Users\acme\PrintHood
C:\Users\acme\Recent
C:\Users\acme\SendTo
C:\Users\acme\Start Menu
C:\Users\acme\Templates
C:\Users\acme\source

 extensions.txt — contains a list of file extensions to look for during the file scan [example]:

.pdf
.jpeg
.jpg
.xls
.xlsx
.pst
.doc
.docx
.csv
.txt

appsettings.json – run configuration setting [example]:

{
  "SourceNode": "C:\\Users\\acme",
  "DestinationNode": "I:\\FileBackup_temp",
  "OrganizationFormat": "ByMonth",
  "UseMetadata": "true"
}

SourceNode: the drive, library, or folder you wish to scan.
DestinationNode: where you want to copy files to…the destination.
OrganizationFormat:   file organization at the destination, 4 possibilities

Flat — all files in one folder i.e. no hiearchy
ByYear — files organized by year of Create Date  (one level hierarchy)  ex. 2016
ByMonth — files organized by year and month of Create Date (two level hierarchy)  ex. 2016/Oct
ByDay — files organized by year, month, and date  of Create Date (three level hierarchy) ex. 2016/Oct/Oct03

UseMetadatatrue/false,  when set to true the Create Date will be pulled from metada (exif), if it exists. This is useful for digital photography.