web-dev-qa-db-ja.com

unRARファイルへのスクリプト/アプリ、および正常に展開されたアーカイブのみを削除します

スクリプトを実行して特定のディレクトリ(引数のために/ rared)のすべてのファイルを展開し、展開されたファイルを/ unraredに配置するcronジョブがあります。このスクリプトを変更して、元のrarアーカイブを/ raredから削除するようにしますそれらが正常に抽出された場合のみ

これは、unrarにreportedが完全に抽出されたことを意味するものではありません。以前に解凍中にデータ破損があったためです。

理想的には(私が撮影しているもののアイデアを提供するために空にパイ)、unrarプログラムにはこの機能が含まれ、予想されるmd5sum値と実際のmd5sum値を比較し、一致。必要に応じてこのプロセス全体のスクリプトを作成してもかまいませんが、mustを2回展開してmd5sumを比較するよりも良い方法です。

2
Jeremy

私の友人は、これを行うためのbashシェルスクリプトを作成しています。これは、githubにあります。

https://github.com/arfoll/unrarall

8
Dan

これは私がこれまでに持っているスクリプトです。最初に現在のunrar操作が実行されているかどうかを確認し、実行されている場合は終了します(読み取り/書き込みのヒープでディスクをいっぱいにしたくない)。その後、/ rared内のすべてのファイルのunRARを解除し、まだunRARedでなく、抽出したファイルを/ 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
1
Jeremy