#md5 #unique #name #filename #file #timestamp #system

app uniqopy

Create a copy of a file with a unique name (based on timestamp and MD5-hash)

2 unstable releases

0.3.0 Feb 6, 2022
0.2.0 Jan 10, 2022

#20 in #md5

Custom license

7KB
77 lines

Uniqopy

CI

Create a unique copy of a file using its name, the system time, and MD5 hashing.

$ ls
fibblesnork.txt
$ uniqopy fibblesnork.txt 
Copying fibblesnork.txt to fibblesnork.2022-01-10-07:06:49.db194cb65e3d5200798471729c8f3e9a.txt
Copyied 16 bytes
$ ls
fibblesnork.2022-01-10-07:06:49.db194cb65e3d5200798471729c8f3e9a.txt
fibblesnork.txt

You might want a unique filename:

  • For files generated in a batch job
  • For (small) backups
  • For log rotation
  • Etc.

Name Generation

To generate a uniquely named copy, uniqopy:

  1. reads and calculates the MD5 hash of the input file's contents (with std::fs::read and the md5 crate),
  2. generates a timestamp (with chrono::offset::Local::now),
  3. concatenates the file's original name, the timestamp, and the MD5 hash, and finally
  4. if the original filename has an extension (according to std::path::Path::extension) it's moved to the end of the new filename.

For example:

  • foo becomes foo.2022-01-10-07:05:03.d3b07384d113edec49eaa6238ad5ff00
  • foo.txt becomes foo.2022-01-10-07:05:01.0e771a9094f21f0bf74be99ebdbb568d.txt

License

This work is provided under the Parity Public License 7.0.0 which can be found in LICENSE.md or at https://paritylicense.com/versions/7.0.0.

Dependencies

~1MB
~18K SLoC