1

簡単に言えば、XBMC との互換性を保つために、ネットワーク上でライブラリを徹底的に更新しました。完了したので、テレビ番組フォルダーのさまざまなディレクトリとサブディレクトリにある nfo、bub、srt、jpg、tbn ファイル (ビデオ ファイルを除くすべて) のバックアップを定期的に作成しても問題ないと思いました。また、日付ごとに圧縮したかったのです。遊んだ後、私はこれを半作業にしました:

find '/volume2/MyMedia/TV Shows/' -type f \( -name \*\.sub -o -name \*\.srt -o -name \*\.nfo -o -name \*\.jpg -o -name \*\.tbn \) -print0 | xargs -0 tar -pvczf '/volume2/Backups/XBMC Backups/'XBMC-TVShows-NFO-JPG-TBN-SUB-Backup-$(date +%m-%d-%y).tar.gz

それは動作 (すべてのディレクトリをスキャンしてファイルを見つける) を経て、zip ファイルが大きくなるのを確認しますが、突然 tar.gz が 0 バイトになり、再びカウントアップします。スキャンする新しいディレクトリに到達したら、それを行っていると思います。

最後に、最後にスキャンしたディレクトリのみを含む 1.8MB のファイルを取得します。その中には、サブディレクトリの1つを省略したことを除いて、ほとんどすべてがあります。IE: 「30 Rock」と指定したすべてのファイルを圧縮しましたが、シーズン 2 を除くすべてのフォルダに対して圧縮しました。

だから私は途方に暮れています。コードではすべてが明確に見えます。何らかの理由で、正しく実行されていません。私は今、プロジェクトにトンネルビジョンを持っていると思います。新鮮な目のセットは素晴らしいでしょう!

ここに出力があります:http://pastebin.com/ywctQ5Sf

最終的な tar.gz の内容は次のとおりです: http://s23.postimg.org/6pc22h7yz/output.png

最後の注意: バックアップする番組のディレクトリには、空白が含まれています。したがって、次のようなディレクトリ構造があります。

>volume2
->MyMedia
-->TV Shows
--->Fullmetal Alchemist Brotherhood
---->Season 1
----->Fullmetal Alchemist Brotherhood.S01E01.Fullmetal Alchemist.nfo

助けてくれてありがとう!

4

2 に答える 2

1

これxargsは、ファイルの巨大なリストを複数の tarコマンドに分割し、それぞれが新しいファイルを作成しようとするためです。-Aの代わりにオプションを使用してみて、-vczf ...コマンド全体を次のようにパイプしgzipます。

find ... -print0 | xargs -0 tar -A | gzip - > "....tar.gz"
于 2013-06-27T11:26:01.647 に答える
0

それで、これを再訪した後、l0b0の方法を試しました。次のように返されます。

tar: Options `-Aru' are incompatible with `-f -'

そこで、別の方法を調べて、次のスクリプトを思いつきました。

#!/bin/bash
find /volume1/Media/TV\ Series/ -iname "*.sub" -exec tar rvfP /volume1/Backups/TestBackup.tar {} \;
find /volume1/Media/TV\ Series/ -iname "*.srt" -exec tar rvfP /volume1/Backups/TestBackup.tar {} \;
find /volume1/Media/TV\ Series/ -iname "*.nfo" -exec tar rvfP /volume1/Backups/TestBackup.tar {} \;
find /volume1/Media/TV\ Series/ -iname "*.jpg" -exec tar rvfP /volume1/Backups/TestBackup.tar {} \;
find /volume1/Media/TV\ Series/ -iname "*.tbn" -exec tar rvfP /volume1/Backups/TestBackup.tar {} \;
gzip /volume1/Backups/TestBackup.tar

時間はかかりますが、何もしていない真夜中に走らせてみました。とにかく、このバックアップを実行する必要があるのはごくまれです。

気が向いたら、経過タイマーを追加することもできます。

#!/bin/bash
date1=$(date +"%s")
# Script stuff here. Uncommented...
date2=$(date +"%s")
diff=$(($date2-$date1))
echo "$(($diff / 60)) minutes and $(($diff % 60)) seconds elapsed."
于 2014-02-21T13:23:49.730 に答える