uniqopy

Crates.iouniqopy
lib.rsuniqopy
version0.3.0
sourcesrc
created_at2022-01-10 05:35:31.96126
updated_at2022-02-06 18:51:20.953601
descriptionCreate a copy of a file with a unique name (based on timestamp and MD5-hash).
homepagehttps://github.com/nathanielknight/uniqopy
repositoryhttps://github.com/nathanielknight/uniqopy
max_upload_size
id511171
size15,205
Nathaniel Knight (nathanielknight)

documentation

README

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.

Commit count: 13

cargo fmt