Isso deve cuidar do que você quer e irá adicionar o _05042018
a todos os diretórios que se encaixam no archive
quando eles envolvem o wrm6.
sed -i -E "s/(.*wrm6[[:space:]]+\/archive\/)(.+)([[:space:]]+NFS.*)/_05042018/g" /etc/fstab
Plataforma: Linux Bash shell
É necessário modificar apenas a segunda coluna, ou seja, montar pontos do compartilhamento NAS / vol / wrm6 no arquivo / etc / fstab.
NAS1:/vol/wrm6 /archive/net1 NFS default 0 0
NAS2:/vol/wrm6 /archive/06 NFS default 0 0
NAS3:/vol/wrm7 /archive/07 NFS default 0 0
NAS4:/vol/wrm8 /archive/09 NFS default 0 0
Os caminhos devem ser modificados para ter um sufixo na segunda coluna:
NAS1:/vol/wrm6 /archive/net1_05042018 NFS default 0 0
NAS2:/vol/wrm6 /archive/06_05042018 NFS default 0 0
NAS3:/vol/wrm7 /archive/07 NFS default 0 0
NAS4:/vol/wrm8 /archive/09 NFS default 0 0
qualquer diretório que esteja sob /archive/
para compartilhamento NAS / vol / wrm6, inclua _05042018
como /archive/*_05042018
. *
significa pode ser qualquer dir.
Isso deve cuidar do que você quer e irá adicionar o _05042018
a todos os diretórios que se encaixam no archive
quando eles envolvem o wrm6.
sed -i -E "s/(.*wrm6[[:space:]]+\/archive\/)(.+)([[:space:]]+NFS.*)/_05042018/g" /etc/fstab
O script a seguir seria
/etc/fstab
existente e, finalmente, /etc/fstab
. Eu recomendaria executá-lo em uma cópia do arquivo fstab
algumas vezes para garantir que ele funcione em seu sistema. Basta alterar a variável fstab
na parte superior do script para apontar para um arquivo diferente.
O script apenas adiciona um sufixo ao ponto de montagem. Não tenta removê-lo se já houver um aí.
#!/bin/sh
set -e # terminate on errors (don't remove!)
fstab='/etc/fstab' # these could be made command line arguments
device_pattern='^NAS[0-9]:/vol/wrm6' # but I kept them like this for simplicity
dir_pattern='^/archive/'
suffix='_05042018'
# Check for non-existing mount points
awk -v suf="$suffix" -v dev="$device_pattern" -v dir="$dir_pattern" \
'$1 ~ dev && $2 ~ dir { print NR, $1, $2 suf }' "$fstab" |
while read lineno device mtpoint; do
if [ ! -d "$mtpoint" ]; then
printf 'Mount point "%s" for "%s" is missing on line %d of %s\n' \
"$mtpoint" "$device" "$lineno" "$fstab" >&2
#exit 1
fi
done
# Make backup
bkname="$fstab-backup.$(date +%F_%H%M%S)"
cp "$fstab" "$bkname"
# Modify file
awk -v suf="$suffix" -v dev="$device_pattern" -v dir="$dir_pattern" \
'$1 ~ dev && $2 ~ dir { $2 = $2 suf } 1' "$bkname" >"$fstab"
echo 'Done.'
echo 'New fstab:'
cat "$fstab"
O "não remova!" comentário é real. Se set -e
for removido, o script não será encerrado se um ponto de montagem inválido for encontrado (pelo menos quando executado em bash
ou pdksh
).
Tags bash text-processing fstab