Сценарий / приложение, чтобы распаковать файлы, и удалить только те архивы, которые были успешно расширены

У меня есть задание cron, которое запускает скрипт для удаления всех файлов в определенном каталоге (/ rared ради аргумента) и размещения расширенных файлов в / unrared. Я хотел бы изменить этот скрипт, чтобы он удалял исходные архивы rar из / rared , только если они успешно извлечены .

Это не означает, что unrar сообщил , что они были полностью извлечены, потому что у меня было повреждение данных во время декомпрессии ранее.

В идеале (кругосветное небо, просто чтобы дать вам представление о том, за что я стреляю), программа unrar должна включать эту функцию, сравнивая ожидаемое значение md5sum с фактическим значением md5sum и удаляя только архив, если они совпадают. Я не против написать весь этот процесс, если потребуется, но должен быть лучший способ, чем дважды развернуть и сравнить md5sums.

2
задан 14 October 2010 в 09:57

2 ответа

Это сценарий, который у меня есть, он сначала проверяет, выполняется ли текущая операция unrar, и завершает работу, если она есть (не хочу загружать диск кучами операций чтения / записи). Затем он удаляет все файлы в / rared, которые еще не были разархивированы, помещая извлеченные файлы в / unrared. Он еще не проверяет извлеченные файлы и не удаляет архивы :

#!/bin/sh

# First check if there is an "unrar" running already, if so, exit.

if ps -ef | grep -v grep | grep -v unrarall | grep unrar ; then
        exit 0
else

# This line probably unnecessary
PATH=$PATH:/usr/bin/

# The RARs I download are always multi-part, so I have to find the
#   first file in the archive and extract only that. This is done
#   using the "find" command. -exec means "run this command on the
#   file" and the filename is substituted wherever {} is 

find /rared/ -name "*part01.rar" -exec unrar -y -o- x \{\} /unrared/ \;
find /rared/ -name "*part001.rar" -exec unrar -y -o- x \{\} /unrared/ \;
find /rared/ -name "*.r00" -exec unrar -y -o- x \{\} /unrared \; 

# If you only want .rar files, comment out the above 3 lines and
#   uncomment the one below
# find /rared/ -name "*.rar" -exec unrar -y -o- x \{\} /unrared/ \;

fi

Это запись в crontab, которая сопровождает ее:

# m h dom mon dow   command
  * * *   *   *     rared/unrarall > /dev/null
0
ответ дан 14 October 2010 в 09:57

Мой друг работал над сценарием оболочки bash, чтобы сделать это на github.

https://github.com/arfoll/unrarall

0
ответ дан 14 October 2010 в 09:57

Другие вопросы по тегам:

Похожие вопросы: