#ls #batch #timestamp #job #copy #jobs #file #name #batch-job #unique-name

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

#2340 in Command line utilities

Custom license

77 lines



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

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

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


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.


~17K SLoC