1

简而言之,我在我的网络上进行了详尽的库更新,以与 XBMC 兼容。现在已经完成了,我认为定期备份我的 TV Shows 文件夹中各个目录和子目录中的 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 回答