Rsync'in bunun için bir seçeneği yok. İki çözüm görüyorum. Bunlardan biri rsync hata mesajlarını ayrıştırmaktır; bu çok sağlam değil. Diğeri, filtrelenecek okunamayan dosyaların bir listesini oluşturmaktır.
cd /source/directory
exclude_file=$(mktemp)
find . ! -readable -o -type d ! -executable |
sed -e 's:^\./:/:' -e 's:[?*\\[]:\\1:g' >>"$exclude_file"
rsync -rlptD --exclude-from="$exclude_file" . /target/directory
rm "$exclude_file"
Eğer find
sahip değilseniz -readable
ve -executable
uygun -perm
direktifle değiştirin.
Bu, adı bir satırsonu içeren okunamayan dosyalar olmadığını varsayar. Bunlarla başa çıkmanız gerekiyorsa, bu şekilde boş bir dosya listesi oluşturmanız ve -0
seçeneği aşağıdaki gibi iletmeniz gerekir rsync
:
find . \( ! -readable -o -type d ! -executable \) -print0 |
perl -0000 -pe 's:\A\./:/:' -e 's:[?*\\[]:$1:g' >>"$exclude_file"