Commit Graph

43 Commits

Author SHA1 Message Date
Markus Ressel
d472f48845
Update README with note about "zfs rewrite" command
Added important notes about ZFS 2.3.3 and the `zfs rewrite` command.
2025-10-29 20:16:36 +01:00
Colin Hebert
b788358600
Support Hardlinks (Any number) - Update (#70)
* 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>
2025-04-15 21:12:22 +02:00
Gregory Zdanowski-House
709b1cc2c6
Update dependency documentation (#26)
The project no longer requires "bc", but instead relies on more common "perl" being preinstalled.
2023-09-04 17:19:54 +02:00
Karl Henselin
8a76414b43
Update README.md (#23) 2023-07-21 00:13:26 +02:00
johnpyp
973855c049
--skip-hardlinks flag (#22)
* 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
2023-06-16 16:36:43 +02:00
Markus Ressel
19caa50d47
Update README.md 2022-11-15 23:37:01 +01:00
Markus Ressel
548c488782 added info about Dockerfile to README 2022-11-15 23:29:34 +01:00
Markus Ressel
0c74cfa468
Update README.md 2022-04-03 03:37:17 +02:00
Markus Ressel
d4019d1d2f
Update README.md 2022-04-02 23:04:16 +02:00
Markus Ressel
9a5788a5fa added section about logging to file 2022-03-29 04:11:01 +02:00
Markus Ressel
c8bbf5a3f4
Added note about snapshots 2021-01-07 14:43:15 +01:00
Markus Ressel
da3a6cb7de
removed whitespace 2021-01-06 21:12:31 +01:00
Markus Ressel
a20e73ad1c
added note about bc and root 2021-01-06 21:11:25 +01:00
Markus Ressel
7e44bd4b4f
use raw link 2021-01-06 21:04:20 +01:00
Markus Ressel
b624d415a3
added zpool list -v output 2021-01-06 21:01:57 +01:00
Markus Ressel
72b9ab5cc3
use curl instead of wget 2021-01-06 20:56:46 +01:00
Markus Ressel
f805188e3f
Update README.md 2020-08-01 03:41:28 +02:00
Markus Ressel
32eb6ed6cd
Update README.md 2020-08-01 03:40:25 +02:00
Markus Ressel
b16e13ad34
Update README.md 2020-07-31 05:31:05 +02:00
Markus Ressel
fe5dcece3b
Update README.md 2020-07-31 05:29:35 +02:00
Markus Ressel
dd60db0b60
Update README.md 2020-07-31 05:26:18 +02:00
Markus Ressel
290325ba26
Update README.md 2020-07-31 05:25:25 +02:00
Markus Ressel
92ae7179bc fixed passes parameter, added shorthands 2020-07-30 20:07:36 +02:00
Markus Ressel
1315fdf424 fixed passes parameter, added shorthands 2020-07-30 20:06:53 +02:00
Markus Ressel
85986300e7 fixed passes parameter, added shorthands 2020-07-30 20:06:14 +02:00
Markus Ressel
437a19b662 fixed passes parameter, added shorthands 2020-07-30 20:05:43 +02:00
Markus Ressel
c070f4a178 fixed passes parameter, added shorthands 2020-07-30 20:05:27 +02:00
Markus Ressel
421792b04b added installation section to README 2020-07-30 18:45:13 +02:00
Markus Ressel
4bbb6da195 updated README 2020-07-30 18:02:50 +02:00
Markus Ressel
3e195055ad updated README 2020-07-30 17:47:35 +02:00
Markus Ressel
b258b6aa3b added ability to disable passes tracking 2020-07-30 17:45:43 +02:00
Markus Ressel
3d02d6c274 added -checksum and -passes parameters, added logic to skip checksum, added logic to limit max passes, print configuration on startup, added help message 2020-07-30 17:38:02 +02:00
Markus Ressel
ea7a5501b3 keep track of rebalances in a 'database' file 2020-07-30 16:27:57 +02:00
Markus Ressel
909fa1ad78 updated README 2020-07-30 15:54:05 +02:00
Markus Ressel
b895381634 updated README 2020-07-28 21:53:33 +02:00
Markus Ressel
acd7a016b4 updated README 2020-07-28 21:51:00 +02:00
Markus Ressel
f1991198a0 updated README 2020-07-28 21:49:32 +02:00
Markus Ressel
d5a62b43f1 added asciinema 2020-07-28 17:46:04 +02:00
Markus Ressel
f91e3afc22 added asciinema 2020-07-28 17:43:49 +02:00
Markus Ressel
b3d9c174f5 updated README 2020-07-28 17:11:50 +02:00
Markus Ressel
1da3101ca9 renamed script file 2020-07-28 04:27:35 +02:00
Markus Ressel
bc4306118d initial script version, updated README 2020-07-28 04:14:14 +02:00
Markus Ressel
b1f7976f7e
Initial commit 2020-07-28 03:42:15 +02:00