Posts Tagged exclude
rsync: cannot delete non-empty directory
A p (modifier) indicates that an (include/exclude/...) rule is perishable, meaning that it is ignored in directories that are being deleted. (из man rsync)
Има няколко причини, поради които rsync може да ви върне следната грешка:
cannot delete non-empty directory: some_dir_name
- Ако сте използвали
-bили--backup. Тогаваrsyncне трие нищо отdestination. За да модифицирате това поведение, вижте описанието на--backupвman rsync. - Ако ползвате
--excludeправила. Тези правила “предпазват” файлове вdestinationот изтриване, от което следва, че папка, изтрита вsourceняма да може да бъде изтрита вdestination, ако съдържа “предпазени” от правилата файлове, дори да сте задали--delete --force. Решението е да дефиниратеexclude-правилото като perishable.Например, ако синхронизирате директориите
sourceиdestination, които са подsubversion-контрол сrsync, можете да ползвате следната команда:rsync -rv --delete --force --filter 'exclude,p .svn' 'source' 'destination'
В случя избягваме синхронизирането на системните за
subversionдиректории.svn, като въпреки това твърдим, че правилото, “защитаващо”.svn-директориите от прехвърляне, не важи в директории, които подлежат на изтриване (т.е. правилото е perishable).
За повече информация, вижте секцията FILTER RULES и потърсете вътре за “perishable” в man rsync.