2012-04-27 54 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