Gå til innhold

Hvordan få til auto extract på ubuntu server?


Anbefalte innlegg

Jeg har en helt nybegynner bare så det er sagt, så hadde vært greit å få informasjonen inn med teskje.

 

Det jeg ønsker er at ubunto serveren jeg har satt opp skal kunne extracte nedlastninger som kommer i rar format, automatisk fra en nedlastningsmappe til en mappe for ferdig filer. Er dette mulig å få til? Ser at det finnes et program for dette til windows kalt AutoExtract. Regner med det er samme funksjonaliteten jeg er på jakt etter.

 

Har også lest litt rundt rTorrent, men når det diskuteres rundt kommandoer detter jeg fort av lasset. Foreløpig har jeg holdt meg til ubuntu server med GUI...

 

Takker for alle svar

Lenke til kommentar
Videoannonse
Annonse

Et shellscript er nok den enkleste løsningen på dette og jeg tviler på at det finnes noe grafisk for dette. Et script som ved jevne mellomrom sjekker nedlastingsmappen for *.rar-filer og kjører unrar på de med "ferdig-mappe" som mål.

 

Nå har jeg ikke tid til å mekke et sånt script til deg, men det er nok mange andre geeks her som har tid til det :)

Lenke til kommentar

Hvis noen har tenkt å ta seg tid til det, er det følgende skriptet et glimrende utgangspunkt. Det er smått endret for å fungere på FreeBSD (tror det var noe med find-variablene som ikke stemte overens, men husker ikke helt), og er tatt fra linuxforums. Det inkluderer muligheten til å sjekke filene basert på sfv-filen også, og er jo mulig å endre slik at det sjekker den først, og deretter kun pakker ut arkivet dersom alle bitene matcher.

 

Den jobber seg rekursivt nedover inne i katalogen den får spesifisert. Slik det er nå, tror jeg det pakker ut i samme mappe.

 

red: Haha, glemte helt skriptet:

#!/usr/local/bin/bash

if [ $# -ne 1 ]
then
 echo "U forgot to enter directory where i should work!"
 exit
fi

while 
mesg="\n==============================================\n
 1.. Check .sfv files.\n
 2.. Unrar all files.\n
 3.. Delete rar and sfv files.\n
 4.. Exit
 \n==============================================\n
Select: \c"
do
 echo -e $mesg
 read selection
 case $selection in
 1)
   cd $1
   cfv -r ;;
 2)
   for f in `find $1 -path *.r01`
   do
     echo "Unpacking in directory: "`dirname $f`
     unrar e  $f `dirname $f`
   done ;;
 3)
   for g in `find $1 -path *.r01`
   do 
     cd `dirname $g`
     echo "Deleting in directory: "`dirname $g`
     rm *.r?? *.url *.sfv imdb.nfo
     rm -r Sample/
   done ;;
 4) 
   exit;;
 esac
done

Endret av NgZ
Lenke til kommentar

Har nå trålet meg gjennom Deluge sitt forum. Detnørmeste en løsning jeg har kommet er følgen post:

 

Hi - here is the script I use:

 

Code: Select all

#!/bin/sh

 

cd /media/disk/incoming/unpacking/

 

for file in $(find /media/disk/incoming/finished/ -iregex '.*\.\(rar\|001\)')

do

echo -n "checking file ${file##*/}..."

onblacklist=`grep -c $file /media/disk/incoming/unpacking/blacklist`

if [ $onblacklist -ne 0 ]; then

echo "already unpacked"

else

echo "not unpacked yet"

echo -n "unpacking..."

unrar e -inul -o- $file

echo "done!"

echo -n "adding to blacklist..."

echo $file >> /media/disk/incoming/unpacking/blacklist

echo "done!"

fi

done

ls -rt /media/disk/incoming/unpacking/ | grep -v '\(^unpack_torrents.sh$\|^blacklist$\|^cron.log$\)' | xargs -I{} mv {} /media/disk/incoming/unpacked/

 

 

 

I have 2 directories, unpacking and unpacked, and this script along with the blacklist file and the cron.log file sit in the unpacking folder. Should be pretty easy to adjust to your needs. The script will write the filename of each file it unpacks to a blacklist so that it will not unpack it again next time the script is run. You can obviously remove all of the echo stuff if you have no interest in logging, I just stuck it in there while I was testing and havent got round to removing it. I'm not exactly an expert shell scripter so there may be a more elegant solution, however this does work well for me.

 

Hadde satt utrolig pris på om noen kunne forklart meg steg for steg hvordan jeg "setter i gang" dette scriptet. Har byttet ut mappeplasseringene slik at de stemmer med mine.

 

... this script along with the blacklist file and the cron.log file sit in the unpacking folder.

Her detter jeg av. Må jeg lage min egen cron.log fil, og i hvilken "form" skal scriptet ligge i denne mappen?

 

Skulle noen vite om andre metoder å få til dette på er det selfølgelig bare til å si i fra.

 

Setter utrolig stor pris på hjelp.

Lenke til kommentar

Har ikke/bruker ikke rar/unrar, men har laget et script med unzip, for å illustrere hvor enkelt det kan gjøres. (Skal ikke være verre enn å endre til korrekte unrar-kommandoer osv).

 

#!/usr/bin/env bash

UNZIPFOLDER=/home/sokkalf/unzipscript/unzipfolder
EXTRACTEDFOLDER=/home/sokkalf/unzipscript/extracted
UNZIPCOMMAND=unzip
FILEEXT=zip

for i in `ls ${UNZIPFOLDER}/*.${FILEEXT}`
do
${UNZIPCOMMAND} -d ${UNZIPFOLDER} ${i} &
mv ${i} ${EXTRACTEDFOLDER}
done

 

Du må selvsagt bytte ut katalogene osv til noen som passer for deg.

 

Legg så scriptet (etter du har verfisert at det fungerer) i cron, på denne måten:

 

Skriv:

crontab -e

og legg inn følgende

 

* * * * * /path/til/scriptet > /dev/null 2>&1

 

Dette gjør at mappen vil sjekkes for filer som kan pakkes ut hvert minutt, og hvis det er noen der, pakkes de ut - og flyttes umiddelbart (mens de fortsatt pakkes ut) til mappen for filer som allerede er pakket ut. Slik unngår man at filer pakkes ut flere ganger. Filen flyttes umiddelbart mens utpakkingen pågår for å unngå problemer hvis utpakkingen tar lengre tid enn ett minutt. Siden unzip allerede holder på inoden til fila, gjør det ikke noe om den flyttes mens den pakkes ut, da inoden ikke vil endre seg.

Endret av Sokkalf™
Lenke til kommentar

Setter virkelig pris på at du tar deg tid til å hjelpe Sokkalf. Må bare beklage at jeg må ha dette inn med teskje, men mine linux kunnskaper er meget begrenset.

 

#!/usr/bin/env bash

UNZIPFOLDER=/home/espen/Unpacking
EXTRACTEDFOLDER=/home/espen/Unpacked
UNZIPCOMMAND=unrar
FILEEXT=rar

for i in `ls ${UNZIPFOLDER}/*.${FILEEXT}`
do
${UNZIPCOMMAND} -d ${UNZIPFOLDER} ${i} &
mv ${i} ${EXTRACTEDFOLDER}
done

 

Er det de to endringene som skal gjøres? Er det så enkelt?

 

etter du har verfisert at det fungerer

Hvordan gjør jeg dette?

 

Har fortsatt ikke fått noe til å faktisk skje, har prøvd å kjøre scriptet og fått lagret "cronfilen".

Lenke til kommentar

du mp også endre linjen

${UNZIPCOMMAND} -d ${UNZIPFOLDER} ${i} &

 

for utpakkings-valget til urar er ikke "-d"

 

Det er " e", men det er mulig du trenger noen andre flagg også, fpr å fortelle urar at den skal pakke ut et annet sted. som standard pakker den ut i mappen du er i.

Lenke til kommentar

Kan ikke se at du har blitt fortalt at du må sette på executable-flagget på skriptene som har blitt postet over. Hvis ikke dette flagget er aktivert, vil du ikke ha mulighet for å kjøre skriptet (med mindre du kjører sh-kommandoen med skriptet som første argument).

 

Det kan lett løses ved å skrive følgende i en terminal

chmod +x /path/til/skript

Du kan deretter teste at skriptet virker i etterkant ved å kjøre det før du legger det til i cron. Enkelt og greit, når skriptet har blitt satt til executable, trenger du bare å skrive:

/path/til/skript

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...