* Support hardlink groups, add debug
-Adds debug functionality with extended details
-Supports detecting inode groups for hardlink processing.
-Pulls files and sorts by, then groups by inode group with awk
-Checks all files in an inode group's counts when calculating skipping counts
-Removes existing skip hardlink flag
-Removes hardlinks and recreates them directly after the balance copy/delete/move operation per inode group to minimize 'downtime'
* Update README.md to denote hardlink support
Adds details around the debug flag, hardlink support, removed --skip-hardlinks functionality, and temporary files used during the script processing.
* Add additional hardlink group database notes
* typo
* Flip default debug
* Fix space handling in paths
* Fix echo bug
Removed the 'recreating hardlinks' echo for inode groups of 1 file.
* Introduce echo_debug
* Reintroduce cp documentation
* Remove unnecessary -e flag
* Remove unused flag
* Fix broken test due to | in the filename
* Add ignore on temporary inode files
* Update tests to assert the hardlinks are still working
* Fix ShellCheck issues
* Fix pasting issue
* Make grep compatible with BSD/MacOS
* Print whole line in debug
* Fix stat for BSD
* Fix stat for BSD part 2
* Fix shellcheck entry
* Fix stats working with FreeBSD
* Use bash's double brackets for consistency sake
* Expand to a string
---------
Co-authored-by: undaunt <31376520+undaunt@users.noreply.github.com>
* add: test on freebsd
* test fix vm
* fix: transform to lowercase
transform the `OSTYPE` to a lowercase and store it inside `OSName`
* add: caching of the vm
* add: test on MacOS
Add test for MacOS in Github action
Maybe see this to add test for FreeBSD :
https://github.com/marketplace/actions/freebsd-vm
* add: log to test
adding log to the test for better understanding
* fix: shellcheck
remove the yellow color that is unused in the test
* fix: fail on lower-casting
the `"${variable,,}"` seam to not work on macOS so y remove it for the `skip_hardlink_flag` because it's always lowercase
* fix: macOS
remove all the lower-case casting
* fix(perf): going to `stat` remove `lsattr` macOS
The command `lsattr` is not supported on macOS so I have remove it
switch to `stat` instead of `ls` for better performance and no subshell
use of parameter expansion with `%` in place of `awk` for performance and no subshell
* fix: forgot to remove variable
1) switch all the miscellaneous indentation to 4 spaces
2) remove the space before the parenthesis of function
3) add indentation inside of if
4) remove miscellaneous spaces at the end of lines
freebsd and macos share stat and sed history with some differences from
gnu
tested on freebsd and linux, mac just verified with man pages and stack
overflow
Co-authored-by: mosshope <moss@lararium.houseofdusk.online>
* feat: --skip-hardlinks flag
Adds a --skip-hardlinks flag that will not process any files that have an active hardlink.
Without a pre-scan to identify hardlink targets and relink them after copies, all this would result in is duplication.
You'd then have to run another de-duplicator, which doesn't have knowledge of the balancing, and could arbitrarily undo
the balancing work.
* doc: .rebalance suffix -> .balance suffix
* doc: add --skip-hardlinks parameter to README
* test: add unit tests for --skip-hardlink