简单地说,我在网络上进行了详尽的库更新,以便与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
感谢您的帮助!
答案 0 :(得分:1)
这是因为xargs
在多个 tar
命令之间拆分了大量文件,每个命令都尝试创建一个新文件。尝试使用-A
选项而不是-vczf ...
并将整个命令传递给gzip
:
find ... -print0 | xargs -0 tar -A | gzip - > "....tar.gz"
答案 1 :(得分: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."