Jaki jest najlepszy sposób porównywania dwóch struktur katalogów i usuwania obcych plików i katalogów w lokalizacji docelowej?
Mam małą internetową galerię zdjęć, którą opracowuję. Użytkownicy dodają i usuwają obrazy za pomocą FTP. Oprogramowanie galerii internetowej, które napisałem, tworzy nowe miniatury w locie, ale nie zajmuje się usuwaniem. Chciałbym zaplanować skrypt poleceń / bash, który zajmie się tym w określonych odstępach czasu.
Oryginalne obrazy są przechowywane /home/gallery/images/
i są uporządkowane w albumach przy użyciu podkatalogów. Miniatury są buforowane /home/gallery/thumbs/
przy użyciu tej samej struktury katalogów i nazw plików, co katalog obrazów.
Próbowałem użyć tego, aby to osiągnąć:
rsync -r --delete --ignore-existing /home/gallery/images /home/gallery/thumbs
co działałoby dobrze, gdyby wszystkie miniatury zostały już zapisane w pamięci podręcznej, ale nie ma gwarancji, że tak się stanie, gdy tak się stanie, katalog thumb ma skopiowane oryginalne obrazy w pełnym rozmiarze.
Jak najlepiej osiągnąć to, co próbuję zrobić?
rmdir
?find
i podczas[
testu]
. Oczywiście, bądź bardzo ostrożny zarówno z poleceniem, które ci dałem, jak i wszelkimi modyfikacjami, i dokładnie przetestujecho
!Potrzebujesz
--existing
również:Z strony podręcznika:
źródło
--ignore-errors
argument. To jedyna rzecz, która działała dla mnie. Dziękuję za--existing
i--ignore-existing
! Użyłem twojej odpowiedzi jako podstawy mojej odpowiedzi tutaj .rm
,cp
czymv
będzie działać jak to jakie błędy są: Są to problemy, które powinny zostać przeanalizowane i operacje, które uniemożliwiają ukończenie udany. Możesz poinstruować większość narzędzi, aby ignorowały błędy (np. W-f
przypadkurm
), ale nie widzę, jak ma to znaczenie dla pytania lub tej odpowiedzi.