rsync --delete çalışmıyor

Sep 15 2020

İş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

3 laktak Sep 24 2020 at 14:24

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 gerekiyor filelist.txt.
  • --deletersync'in fooklasördeki dosyaları silmesine izin vermek için bağımsız değişken gereklidir
SandeepKothari Sep 28 2020 at 15:16

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