Convert RAR to ZIP

Debian Etch szerveremen Clamav futattása közben derült ki, hogy Debian Etch alatt (Etch-n-half alatt is) nem támogatott a RAR archívumok kitömörítése Clamav szempontjából, ezért nem talál vírust ezeken az állományokon belül. Hiába telepítjük az unrar csomagot a non-free repo-ból. Még az "--unrar=path" opció sincs a clamav csomagban biztonsági okokból.

Megj.: Debian Lenny / Testing-ben létezik az --unrar opció.

Lényeg hogy Windows-os mappákra indítottam a clamav-ot, és talált is vírusokat, eddig ok, viszont a RAR fájloknál 'LibClamAV Warning: RAR code not compiled-in' hibaüzenetet ad a fenti okok miatt.

Forrásból nem szeretném feltenni a clamav-ot több ok miatt is, ezért alternatív megoldást kerestem.

Azt találtam ki, hogy átkonvertálom a RAR állományokat ZIP formátumra. Erre az alábbi szkriptet írtam. Hátha segít másoknak egy kis időt spórolni.

Megj.: kell hozzá az unrar és zip csomag. Az unrar csomag a non-free tárolóból érhető csak el.


convert_rar_to_zip.sh
----------------------------------------------------------------------------
# SCRIPT TO CONVERT RAR ARCHIVE TO ZIP
# REMOVES RAR FILE

INPUT=$1
OUTPUT=$INPUT.zip


if [ "$INPUT" == "" ]; then
   echo FORMAT: command [FILE]
   exit
fi

if ! [ -a $INPUT ]; then
   echo "ERROR: INPUT FILE DOES NOT EXIST!"
   exit 1
fi

if echo -n $INPUT | grep -qiv ".rar$"; then
   echo "ERROR: NOT RAR EXTENSION IN FILENAME!"
   exit 1
fi

if [ -a $OUTPUT ]; then
   echo "ERROR: CANNOT CREATE ZIP, FILE ALREADY EXISTS!"
   exit 1
fi


if ! TEMP=`mktemp -d -p . temp.XXXXXXXX`; then
   echo ERROR: CANNOT CREATE DIRECTORY
   exit 1
fi


unrar x -inul $INPUT $TEMP/
cd $TEMP
zip -qr $TEMP.zip *
cd ..

mv $TEMP/$TEMP.zip $OUTPUT && \
rm -rf $TEMP && \
rm -f $INPUT
----------------------------------------------------------------------------

Majd az alábbi módon végezhetjük el rekurzívan a konverziót RAR fájlok esetében:


find /konyvtar -iname "*.rar" -print0 | xargs -0 convert_rar_to_zip.sh

A kimeneti fájlnevet .rar.zip -re állítom, ez speciel nekem jobb így, de igény szerint megváltoztatható. Akár a 'basename' paranccsal variálva. Pl.:


OUTPUT=`basename $INPUT .rar`.zip

Hozzászólások

Megnézted a volatile tárolóban lévő clamav-t is? Az lehet, hogy tudja a --unrar-t.

ha a Lenny-sben benne van az opcio, akkor buildeld le a csomagforrast, es tedd fel dpkg azt.

--
A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!

Azert eleg pocsek mar, hogy hackelni kell az ilyenert. En biztos, hogy vagy APT pinning-gel, vagy ujraforditassal oldottam volna meg.
--


()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.