I thought about this question some time now and I came across two solutions. The best one is the following.
Use cdcat which is a program that can index filesystem trees like DVDs or hard drives (without storing big files to the index) and store multiple of them in one catalog. This is probably the program of choice for such a task because it will also include meta information of music (ID3 tags) and videos (resolution, duration and so on) to the catalog but it was not developed for this purpose (but could be extended now). Another nice feature is that cdcat can calculate how big an indexed directory or a file (node) is.
It will save all the meta information (and small files like nfo if you configure it to do this) in a compressed XML file.
To copy files from you (person A) to someone (person B), after allowing him (B) to select what he actually wants, could work like this:
- Person A indexes all of his interesting files (you should check the settings of cdcat before doing so to be sure what is going to be included like nfo, ID3 tags, …) and saves them as one catalog.
- Person A copies the catalog over to person B.
- Now person B has to select the files somehow. I came up with the idea of using the category field which can be added to each node (directory or file). This field could be used as a priority for example. Any node which has no category recursively attached to it or with a special category will not be copied later. The category is also saved to the XML file and it is not very hard to write a parser for this to export for example a .bat script or Bash script to copy all of the wanted files.
- Person B gives the OS specific copy script to person A (or of course person B gives the modified catalog back and lets person A generate the copy script).
- Person A executes the copy script and gives person B the data medium. (There will be one little inconvenience because cdcat does not save the path to the mount point from where the data was indexed to the catalog.)
- Person B copies the files to his storage and hands the data medium back to person A.
This solutions is not yet perfect but it is the best I came up with. I have not used this yet but I will do so in the future. During this I will need to write some extension or script which generates copy scripts for Linux and for Windows. My plan is to include this directly to the cdcat program.
A second and more sophisticated solution which is worth mentoring is to use git-annex which can probably also be used for this, but did not think about this as careful as about the solution with cdcat because this second approach would somehow require that both persons (A and B) have git-annex and know how to use it …
I will keep you up to date.