(This is a project in progress)
My file synchronization tool.
- Save the state of all files recursively from a root directory:
size and MD5 or SHA1, date, attributes
- As a file ✔️
- Automatically generating a descriptive, dated filename ✔️
- Showing progress ✔️
- Interruptable and resumable.
- Print some statistics on the files that were discovered.
- Number of files.
- Largest files that have duplicates.
- Largest directories that have duplicates.
- Compare two states to find the differences.
- Equals only. ✔️
- Info.
- New files. ✔️
- Deleted files. ✔️
- Moved and/or renamed.
- Copied...?
- Rectify the differences. ❌ (not started)
- Progress
- Copy new files from source to destination.
- Move files in the destination.
- Delete files.
- Log and/or stash all changes that would lose data in the destination.
# Create with default name (media_username_MYDISK__20210101120000).
# Unlikely that it exists already due to the timestamp.
skrync digest --srcDir /media/username/MYDISK/backup \
--dstDigest /media/username/MYDISK/.skrync/
skrync digest --srcDir /media/username/MYDISK2/backup \
--dstDigest /media/username/MYDISK2/.skrync/
# Dry run it (produces a plan)
skrync compare \
--srcDigest \
/media/username/MYDISK/backup/.skrync/media_username_MYDISK__20210101120000 \
--dstDigest \
/media/username/MYDISK2/backup/.skrync/media_username_MYDISK2__20210101120010
# Do it.
skrync execute --srcDigest \
/media/username/MYDISK/backup/.skrync/media_username_MYDISK__20210101120000 \
--dstDigest \
/media/username/MYDISK2/backup/.skrync/media_username_MYDISK2__20210101120010 \
--backup /tmp/skrync_changed/
skrync execute --plan /tmp/todo/plan.json --backup /tmp/changed/
mvn package
# Using the fat jar
alias skrync='java -jar '$(pwd)'/target/skrync*-SNAPSHOT.jar'
skrync --help