2012-04-27 22 views
0

我需要创建一个cron作业,将tar在最后X天内创建的所有图像。 我在我的网站上使用cron作业,在CPanel中设置它们,但是当涉及到unix的时候,我不是一个有经验的脚本编写者。任何帮助将不胜感激。克朗到创建日期的焦油文件

这是我的计划任务:

0 4 * * 1 tar pzvcf /home/xxxxxx/public_html/backups/images_backup.tar /home/xxxxxx/public_html/images/products 

回答

2

使用find查找所有图片和养活他们的焦油。

像这样的东西应该给你文件的最后2天时间创造(-2意味着< 2 * 24小时)

find <path> -ctime -2 -print 

像这样的事情大概会在整个工作:

find <path> -ctime -<within_days> -print | tar cf <output.tar> -T - 

You need to specify: 
    <path>  (where to search for images) 
    <output.tar> (output file name) 
    <within_days> (add files < this many days old) 

tar cf <file>创建一个tarball,tar af <file>附加到一个现有的tarball

-T -告诉tar重新添加stdin的命令列表。

find命令将匹配文件的列表回显到stdout。

|将find的stdout连接到tar的stdin:因此tar应该添加找到的所有文件。

+0

将cron的能够将文件添加到现有的焦油? – bikey77 2012-04-27 06:03:20

+0

使用tar avf而不是cvf来追加(c = create,a = append) - 您可能也会将v离开(这只是意味着冗长 - 并非所有cron作业都有用) – John3136 2012-04-27 06:05:03

+0

您可能想要限制'find'只列出常规文件。如果您将目录名称传递给'tar',它将递归地存档整个目录内容。使用:'find -type f ...' – 2012-04-27 06:41:59

0

U可以使用下面的命令

tar -cvzf outputfilename.tar ` find . -name '*' -mtime -2 -print` 

在find命令 。 - >目录搜索 * - >文件模式 -2 - >代表无天

在你的情况

0 4 * * 1 tar -cvz /home/xxxxxx/public_html/backups/outputfilename.tar ` find /home/xxxxxx/public_html/images/products -name '*' -mtime -2 -print` 
+0

我可以用find吗。 -name'l _ *。jpg'只能打印具有该模式的文件? – bikey77 2012-04-27 06:49:58

+0

如果文件列表很大(数千),那么使用这种技术可能会出现'command line too long'错误。另外,最好限制'find'不要列出目录。 – 2012-04-27 06:50:13

+0

对不起,重播延迟。希望你通过测试找到它,U可以使用相同的方式来查找模式。在大量文件的情况下,你可以将响应重定向到一个虚拟文件(使用“>>日志文件名”)。 – DAC84 2012-05-10 06:39:59