賞金將在 5 天后到期。此問題的答案有資格獲得 50聲望賞金。 MarkK希望引起對這個問題的更多關注。
我正在使用腳本(如下)將 OCI 中的塊卷附加到新實體或現有實體。但是,如果卷已經分配了檔案系統型別,我將丟失所有資料!
有沒有辦法僅在sudo mkfs -t ext4 /dev/oracleoci/oraclevdb尚未格式化時才運行命令?
有沒有辦法運行下面的第 1 行,只有在附加的卷尚未格式化的情況下?
sudo mkfs -t ext4 /dev/oracleoci/oraclevdb
sudo mkdir /data
sudo mount /dev/oracleoci/oraclevdd /data
df -h
問題是每次使用現有卷創建新實體時,我都會丟失所有資料。但是,我想保持新實體附加新卷的行為。
所以像...
if condition x
sudo mkfs -t ext4 /dev/oracleoci/oraclevdb
else
do nothing
我正在運行 Oracle Linux 8。
uj5u.com熱心網友回復:
只需檢查您是否可以安裝它。
if ! sudo mount /dev/oracleoci/oraclevdd /data; then
if ! sudo mkfs -t ext4 /dev/oracleoci/oraclevdb; then
echo "och nooo, formatting fialed"
fi
if ! sudo mount /dev/oracleoci/oraclevdd /data; then
echo "Och nooooo, can't mount after formatting, that's odd"
fi
fi
uj5u.com熱心網友回復:
您可以lsblk像這樣運行此資訊:
lsblk -o NAME,FSTYPE
并使用一些腳本運行測驗:
export DEVICE="/dev/oracleoci/oraclevdb"
export FSTYPE="ext4"
if ! lsblk -o NAME,FSTYPE | grep $DEVICE | grep $FSTYPE; then
sudo mkfs -t $FSTYPE $DEVICE
fi
uj5u.com熱心網友回復:
您可以file用來檢查任何內容:
有選項:
-b, --brief Do not prepend filenames to output lines (brief mode). -L, --dereference option causes symlinks to be followed, as the like-named option in ls -s, --special-files Specifying the -s option causes file to also read argument files which are block or character special files.
創建一個腳本conditionalMkExt4:
#!/bin/bash
if [[ ! -b $1 ]] ;then
echo "Not a block device: '$1'"
exit 1
fi
sudo /bin/bash <<eof
read -r partTyp < <(file -Lsb "$1")
case $partTyp in
data )
mkfs -t ext4 "$1"
;;
* )
echo "Device '$1' is of type: '$partTyp'"
exit 1
;;
esac
if [[ $2 ]] ;then
[[ -e $2 ]] || mkdir -p "$2"
mount "$1" "$2"
fi
eof
然后
conditionalMkExt4 /dev/oracleoci/oraclevdb /data
如果您希望能夠鞭打任何非 ext4磁區:
Juste替換case ... esac為
case $partTyp in
*ext4* )
echo "Device '$1' already formated as ext4"
exit 1 # Comment this if you want to mount if already formated
;;
* )
mkfs -t ext4 "$1"
;;
esac
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/442429.html
上一篇:jq帶單引號bash腳本
