Skip to content

Commit

Permalink
fix(perf): going to stat remove lsattr macOS
Browse files Browse the repository at this point in the history
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
  • Loading branch information
meo-pill committed Dec 14, 2024
1 parent eaa969e commit d4e70de
Showing 1 changed file with 21 additions and 20 deletions.
41 changes: 21 additions & 20 deletions zfs-inplace-rebalancing.sh
Original file line number Diff line number Diff line change
Expand Up @@ -137,37 +137,38 @@ function rebalance() {
# Linux

# file attributes
original_md5=$(lsattr "${file_path}" | awk '{print $1}')
# file permissions, owner, group
# shellcheck disable=SC2012
original_md5="${original_md5} $(ls -lha "${file_path}" | awk '{print $1 " " $3 " " $4}')"
original_md5=$(lsattr "${file_path}")
# remove anything after the last space
original_md5=${original_md5% *}
# file permissions, owner, group, size, modification time
original_md5="${original_md5} $(stat -c "%A %U %G %s %Y" "${file_path}")"
# file content
original_md5="${original_md5} $(md5sum -b "${file_path}" | awk '{print $1}')"
original_md5="${original_md5} $(md5sum -b "${file_path}")"


# file attributes
copy_md5=$(lsattr "${tmp_file_path}" | awk '{print $1}')
# file permissions, owner, group
# shellcheck disable=SC2012
copy_md5="${copy_md5} $(ls -lha "${tmp_file_path}" | awk '{print $1 " " $3 " " $4}')"
copy_md5=$(lsattr "${tmp_file_path}")
# remove anything after the last space
copy_md5=${copy_md5% *}
# file permissions, owner, group, size, modification time
copy_md5="${copy_md5} $(stat -c "%A %U %G %s %Y" "${tmp_file_path}")"
# file content
copy_md5="${copy_md5} $(md5sum -b "${tmp_file_path}" | awk '{print $1}')"
copy_md5="${copy_md5} $(md5sum -b "${tmp_file_path}")"
# remove the temporary extension
copy_md5=${copy_md5%"${tmp_extension}"}
elif [[ "${OSTYPE}" == "darwin"* ]] || [[ "${OSTYPE}" == "freebsd"* ]]; then
# Mac OS
# FreeBSD

# file attributes
original_md5=$(lsattr "${file_path}" | awk '{print $1}')
# file permissions, owner, group
# shellcheck disable=SC2012
original_md5="${original_md5} $(ls -lha "${file_path}" | awk '{print $1 " " $3 " " $4}')"
# note: no lsattr on Mac OS or FreeBSD

# file permissions, owner, group size, modification time
original_md5="${original_md5} $(stat -f "%Sp %Su %Sg %z %m" "${file_path}")"
# file content
original_md5="${original_md5} $(md5 -q "${file_path}")"

# file attributes
copy_md5=$(lsattr "${tmp_file_path}" | awk '{print $1}')
# file permissions, owner, group
# shellcheck disable=SC2012
copy_md5="${copy_md5} $(ls -lha "${tmp_file_path}" | awk '{print $1 " " $3 " " $4}')"
# file permissions, owner, group size, modification time
copy_md5="${copy_md5} $(stat -f "%Sp %Su %Sg %z %m" "${tmp_file_path}")"
# file content
copy_md5="${copy_md5} $(md5 -q "${tmp_file_path}")"
else
Expand Down

0 comments on commit d4e70de

Please sign in to comment.