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
UseMetadata — true/false, when set to true the Create Date will be pulled from metada (exif), if it exists. This is useful for digital photography.