Php

如何根據該文件夾中是否存在特定文件類型來同步整個文件夾

  • January 2, 2011

我有一個伺服器設置接收電影到一個文件夾。然後我使用 DLNA 提供這些電影。但是在他們結束的初始文件夾中,所有類型的文件都結束了。圖片、音樂、文件等。我想我可以通過在該文件夾中執行以下腳本來解決這個問題

rsync -rvt –include=’/’ –include=’.avi’ –include=’.mkv’ –exclude=’’ 。../電影/

這可以工作並掃描給定的文件夾,並將所有找到的給定擴展類型的電影移動到該Movies文件夾中。

但我想知道是否有辦法告訴 rsync 到if a folder if found that includes a movie of the given extension types, sync the entire folder. Including other files such as .srt. 這是為了讓我更容易將字幕與電影一起移動。

我有一個通過 php 編寫的腳本找到的解決方案(是的,我實際上在 linux 中使用 php 編寫了大部分腳本……只是很久以前堅持的一個習慣)。但是,如果 rsync 可以從一開始就處理它,那就太好了。

另外,我注意到這行 rsync 實際上複製了給定文件夾中的所有根文件夾。如果文件夾中沒有電影,它將創建一個空文件夾。我如何防止 rsync 這樣做……並省去刪除所有Movies空文件夾的麻煩。

我非常有信心您需要使用某種包裹在 rsync 周圍的外部腳本來實現這一點。因此,您的問題的最終答案是簡潔的“不”。

按照上面的路徑範例,源文件位於“。”中 並且您希望將它們複製到“../Movies”:

if [ `find . -name \*.avi | wc -l` -gt 1 ]; then rsync ./ ../Movies/; fi

引用自:https://serverfault.com/questions/217133