플랫폼: Linux Bash 쉘
NAS 공유 /vol/wrm6의 마운트 지점인 /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
두 번째 열에 접미사를 추가하려면 경로를 수정해야 합니다.
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
/archive/
NAS 공유 /vol/wrm6 아래의 모든 디렉토리가 추가됩니다. _05042018
예를 들어 /archive/*_05042018
.*
답변1
이것은 당신이 원하는 것을 처리해야 하며 _05042018
wrm6과 관련된 모든 디렉토리에 추가됩니다.archive
sed -i -E "s/(.*wrm6[[:space:]]+\/archive\/)(.+)([[:space:]]+NFS.*)/\1\2_05042018\3/g" /etc/fstab
답변2
다음 스크립트는
- 새 마운트 지점이 실제로 존재하는지 확인하고(그렇지 않으면 중단),
- 기존 파일의 날짜 백업을 만들고
/etc/fstab
마지막으로 /etc/fstab
파일을 수정합니다 .
나는 제안한다복사fstab
파일이 시스템에서 실행되는지 여러 번 확인하십시오. fstab
다른 파일을 가리키도록 스크립트 상단의 변수를 변경하기만 하면 됩니다 .
스크립트만다음에 추가마운트 지점의 접미사입니다. 이미 있는 경우 삭제를 시도하지 않습니다.
#!/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"
"삭제하지 마세요!"라는 의견이 사실입니다. 제거된 경우 set -e
잘못된 마운트 지점이 발견되면(적어도 bash
또는 에서 실행되는 경우 pdksh
) 스크립트가 종료되지 않습니다.