feat: Set directory attributes (#483)

* feat: Set directory attributes
This commit is contained in:
Kroese 2023-12-23 20:01:27 +01:00 committed by GitHub
parent 698516ac8c
commit 87fad1b0e9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 14 additions and 5 deletions

View File

@ -261,7 +261,7 @@ convertDisk() {
checkFS () {
local DISK_FILE=$1
local DIR FS FA
local DIR FS
DIR=$(dirname "$DISK_FILE")
[ ! -d "$DIR" ] && return 0
@ -282,11 +282,15 @@ checkFS () {
fi
fi
if [ -f "$DISK_FILE" ] ; then
FA=$(lsattr "$DISK_FILE")
[[ "$FA" == *"C"* ]] && FA=$(lsattr -d "$DIR")
else
local FA=""
[ -f "$DISK_FILE" ] && FA=$(lsattr "$DISK_FILE")
if [[ "$FA" == "" || "$FA" == *"C"* ]]; then
FA=$(lsattr -d "$DIR")
if [[ "$FA" != *"C"* ]]; then
{ chattr -R +C "$DIR"; } || :
FA=$(lsattr -d "$DIR")
fi
fi
if [[ "$FA" != *"C"* ]]; then

View File

@ -54,8 +54,13 @@ FS=$(stat -f -c %T "$STORAGE")
if [[ "$FS" == "overlay"* ]]; then
info "Warning: the filesystem of $STORAGE is OverlayFS, this usually means it was binded to an invalid path!"
fi
if [[ "$FS" == "xfs" || "$FS" == "zfs" || "$FS" == "btrfs" || "$FS" == "bcachefs" ]]; then
FA=$(lsattr -d "$STORAGE")
if [[ "$FA" != *"C"* ]]; then
{ chattr -R +C "$STORAGE"; } || :
FA=$(lsattr -d "$STORAGE")
fi
if [[ "$FA" != *"C"* ]]; then
info "Warning: the filesystem of $STORAGE is ${FS^^}, and COW (copy on write) is not disabled for that folder!"
info "This will negatively affect performance, please empty the folder and disable COW (chattr +C <path>)."