xxx rpm을 rpm -Uvh로 업그레이드 할 예정인데 문제가 생겼을때 아래처럼 롤백 할 예정이다.
$ rpm -Uvh --oldpackage xxx.rpm
그런데 혹시 모를 문제점이 발생했을 때를 대비해 기존 rpm 파일들 백업해 두기 위해 스크립를 돌려서 백업 받는다.

1. 스크립트 내용
#!/bin/bash
# Script by mapoo.

### modify - RPM, BackupDir variable ###
RPM=openssh-server-5.3p1-70.el6.x86_64
BackupDir=/usr/local/Backup-$RPM

### Script Start ###
BackupList=$(rpm -ql $RPM)
find $BackupDir >& /dev/null
if [ $? == "1" ]; then
    mkdir -p $BackupDir
fi

for i in $BackupList
do
if [ -e $i ]; then
    if [ -f $i ]; then
        files=$(echo "$i" | awk -F '/' '{print $NF}')
        dirs=$(echo "$i" | awk -F "$files" '{print $1}')
        find $BackupDir$dirs >& /dev/null
        if [ $? == "1"  ]; then
            mkdir -p $BackupDir$dirs
            cp -a $i $BackupDir$i
        else
            cp -a $i $BackupDir$i
        fi
    fi
fi
done

for i in $BackupList
do
if [ -d $i ]; then
    if [ -e $i ]; then
        mkdir -p $BackupDir$i
    fi
fi
done

echo "$RPM files backup success."
echo "Backup directory - $BackupDir"

위 스크립트의 RPM, BackupDir 변수를 자신의 환경에 맞게 수정하면 된다.
위 예제는 openssh-server-5.3p1-70.el6.x86_64 rpm을 예로 짰다.

그리고 이 스크립트는 rpm 파일 백업 뿐만 아니라 불특정 경로의 파일들을 백업할 때 응용해서 사용하면 유용할 수 있다.
별도로 뽑아낸 파일리스트를 스크립트내에 아래처럼 넣어서 백업해도 된다.
BackupList="
/var/spool/mail/mysql
/usr/lib64/mysql
/usr/local/Backup-mysql-libs-5.1.21-1.el6_0.1.x86_64/usr/lib64/mysql
/usr/local/Backup-mysql-libs-5.1.21-1.el6_0.1.x86_64/usr/share/mysql
/usr/local/mysql-advanced-5.3.14-linux-x86_64/include/mysql
/usr/local/mysql-advanced-5.3.14-linux-x86_64/bin/mysql
/usr/share/mysql
"

rpm 파일들 백업 스크립트

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다