Rsync'deki dosyalar nasıl hariç tutulur?


12

Ubuntu sunucusu 12.04 kullanıyorum, şimdi rsync kullanarak bazı dosyaları yedeklemek istiyorum, burada bir deneyin:

rsync -aAX $HOME/Documents/* $HOME/Backups/TEST --exclude={$HOME/Documents/another/*,$HOME/Documents/temp/*} 

Gördüğünüz gibi, $ HOME / Documents klasöründeki tüm dosyaları $ HOME / Backups / TEST klasörüne yedeklemek istiyorum , ancak klasördeki dosyaları başka ve geçici olarak hariç tutmak istiyorum . Ancak başarısız oldum, rsync dosyaları her iki hariç tutulan klasörde de kopyaladı:

ls $HOME/Backups/TEST/another
test

Test klasöründe bir dosya başka , ben rsync'de dosyayı, neden dışarıda olsa da kopyalanır? Bu dosyaların gerçekten hariç tutulmasına nasıl izin verilir?

Yanıtlar:


11

Rsync komutunuzla ilgili birkaç sorun vardır (ayrıca , filtre kurallarının ayrıntılı açıklaması için rsync için kılavuz sayfasına bakın ).

  • --excludeherhangi bir desen için bir komuta ihtiyacımız var .
  • verilen yolların kaynak yola göre olması gerekir (mutlak yol yoktur).
  • kaynak ve hedefi belirtmeden önce seçeneklerin verilmesi gerekir.

Örneğin, aşağıdaki sözdizimi işe yarayacaktır:

rsync -avAX --exclude=another/ --exclude=temp/ ~/Documents/ ~/Backups/TEST

Bir dışlama kalıbı bununla bitiyorsa /bir dizine başvurduğunu unutmayın . Her ikisini de atlarsanız, bu ada sahip dosyalar ve dizinler hariç tutulur. *Adlarında bu dizeye sahip tüm dosyaları veya dizinleri hariç tutmak için joker karakterle değiştirin .


6
Bu tamamen doğru değil. Nasıl çalıştığından emin değilim, ancak denemeden, --exclude=/foodizini foodoğrudan kaynakta --exclude=foohariç tutacaktır , ancak alt dizinlerde bile foo adlı dizinleri hariç tutacaktır.
Sparhawk

10

.rsync-filterKaynak dizinlerinize dosya eklemeyi daha kolay bulabilir ve -Fseçeneği kullanabilirsiniz .

Man sayfasından:

-F: -F seçeneği bu kural için bir kısayol [...]:

 --filter='dir-merge /.rsync-filter'

Bu, rsync'e hiyerarşi serpiştirilmiş dizin başına .rsync filtre dosyalarını aramasını ve aktarımdaki dosyaları filtrelemek için kurallarını kullanmasını söyler.

Örneğin: $ HOME / Belgeler / .rsync-filtresinde

# you can add comments in filter files

- /another/
- /temp/

Bunun yerine -, tüm kelimeyi de yazabilirsiniz exclude.

Şimdi yapabilirsin

rsync -aAX -F $HOME/Documents/ $HOME/Backups/TEST/
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.