rsync --delete çalışmıyor
İşletim sistemi Debian 10, rsync sürüm 3.1.3'tür. Rsync'i şöyle çalıştırıyorum:
time rsync -ar --delete --info=progress2 --files-from=filelist.txt . /path/to/dest
Bu, dosyaları kopyalamak için çalışır, ancak kaldırılan hiçbir şeyi silmez. (Ya src'den tamamen kaldırıldı ya da benim durumumda filelist.txt'den kaldırıldı) Bu büyük bir problem. Bulduğum tek çözüm, tüm hedefi basitçe nuke etmek ve her şeyi tekrar kopyalamak, ancak bu çok fazla zaman alıyor ve temelde ilk etapta rsync kullanma noktasını geçersiz kılıyor.
Bu bir hata mı? Rsync'in gerektiği gibi --delete bayrağına saygı göstererek düzgün çalışmasını nasıl sağlayabilirim?
Düzenle:
Örneğin:
- Filelist.txt "foo" içeriyorsa, / yolu / hedefi "foo" içerecektir.
- Filelist.txt "foo" ve "bar" içeriyorsa, / yol / hedef, "foo" ve "bar" içerecektir.
- Filelist.txt "foo", "bar" ve "bat" ifadelerini içeriyorsa, / yolu / hedefi "foo", "bar" ve "bat" içerir.
- vb
"Foo" "bar" "bat" vb. Dizinler olduğunu varsayın.
Yanıtlar
Rsync'e eksik argümanları silmesini söylemeniz gerekir:
rsync -arv --delete-missing-args --delete --info=progress2 --files-from=filelist.txt . /path/to/dest
- Eğer dizini silerseniz
fooo zaman da silinecek/path/to/destile--delete-missing-args. foohala listelenmesi gerekiyorfilelist.txt.--deletersync'infooklasördeki dosyaları silmesine izin vermek için bağımsız değişken gereklidir
Hayır rsync, dosyaları / dizinleri, dosya listesi bu dosyaları içermediği veya boş olduğu için silmeyecektir.
kullanıyorsanız --files-from, yalnızca listelenen dosyaları kaynaktan hedefe eşitlemeye çalışacaktır.
Dosyaları sırf aktarılan dosyalar listesinde olmadığı için silmez --files-from.
--Delete'in çalışması için gerçek kaynak yolunu kullanmanız gerekir.
rsync -ar --delete path/to/src path/to/destination