(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_go digest --srcDir /media/username/MYDISK/backup \
--dstDigest /media/username/MYDISK/.skrync/
skrync_go digest --srcDir /media/username/MYDISK2/backup \
--dstDigest /media/username/MYDISK2/.skrync/
# Dry run it (produces a plan)
skrync_go compare \
--srcDigest \
/media/username/MYDISK/backup/.skrync/media_username_MYDISK__20210101120000 \
--dstDigest \
/media/username/MYDISK2/backup/.skrync/media_username_MYDISK2__20210101120010
# Do it.
skrync_go 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_go execute --plan /tmp/todo/plan.json --backup /tmp/changed/# Build, format and run all tests
mvn spotless:apply clean verifyThis project includes an executable
mvn package
# Using the uber jar from the command line
alias skrync_go="java -jar $(find ~+ -name skrync-*.jar | sort | head -n1)"
skrync_go --help