Android

Rsync ile dosya ve dizinler nasıl hariç tutulur

8. LINUX. Резервное копирование | Технострим

8. LINUX. Резервное копирование | Технострим

İçindekiler:

Anonim

Rsync, dosyaları ve klasörleri uzak bir kabuk üzerinden iki konum arasında senkronize eden hızlı ve çok yönlü bir komut satırı yardımcı programıdır.

Rsync ile verileri yansıtabilir, artımlı yedeklemeler oluşturabilir ve sistemler arasında dosya kopyalayabilirsiniz. Verileri kopyalarken, adlarına veya konumlarına göre bir veya daha fazla dosya veya dizini hariç tutmak isteyebilirsiniz.

Bu öğreticide, rsync ile dosya ve dizinleri nasıl hariç tutacağınızı göstereceğiz.

Sen başlamadan önce

Rsync'in nasıl çalıştığı hakkında temel bilgiye sahip olmalısınız.

Aşağıdaki örneklerde, -a , seçeneğiyle rsync kullanacağız. Bu, rsync'e dizinleri özyinelemeli olarak senkronize etmesini, özel ve blok aygıtları aktarmasını ve sembolik bağlantıları, değiştirme sürelerini, grubu, sahipliği ve izinleri korumasını söyler.

Dosyaları veya dizinleri hariç tutarken, kaynak dizine ilişkin göreli yollarını kullanmanız gerekir.

Dışlamak istediğiniz dosyaları ve dizinleri belirtmek için iki seçenek vardır:

  • Komut satırından --exclude seçeneğini kullanarak. Dosyadan --exclude --exclude-from seçeneğini kullanarak.

Belirli Bir Dosyayı Hariç Tut

Belirli bir dosyayı hariç tutmak için, dosyanın göreli yolunu --exclude seçeneğine --exclude .

Aşağıdaki örnekte src_directory/file.txt dosyası aktarılmayacak:

rsync -a --exclude 'file.txt' src_directory/ dst_directory/

Belirli Bir Dizini Hariç Tut

Belirli bir dizini hariç tutmak, bir dosyayı hariç --exclude aynıdır, dizine ilişkin göreli yolu aşağıda gösterildiği gibi --exclude seçeneğine --exclude :

rsync -a --exclude 'dir1' src_directory/ dst_directory/

rsync -a --exclude 'dir1/*' src_directory/ dst_directory/

Birden Çok Dosya veya Dizin'i Hariç Tut

Birden çok dosyayı veya dizini hariç tutmak için birden çok - dışlama seçeneği belirtmeniz yeterlidir:

rsync -a --exclude 'file1.txt' --exclude 'dir1/*' --exclude 'dir2' src_directory/ dst_directory/

rsync -a --exclude={'file1.txt', 'dir1/*', 'dir2'} src_directory/ dst_directory/

Dışlamak istediğiniz dosya ve / veya dizin sayısı büyükse, birden fazla --exclude seçeneği kullanmak yerine, bir dosyada hariç tutmak istediğiniz dosya ve dizinleri belirleyebilir ve dosyayı --exclude-from aktarabilirsiniz. seçeneği.

Aşağıdaki komut yukarıdaki komutla tamamen aynıdır:

rsync -a --exclude-from='exclude-file.txt' src_directory/ dst_directory/ dışlamak-file.txt

file1.txt dir1/* dir2

Bir Desene Dayalı Birden Çok Dosya veya Dizin Dışlama

Rsync ile dosya veya dizin adıyla eşleşen bir desene dayalı olarak dosyaları ve dizinleri de hariç tutabilirsiniz.

Örneğin, çalıştırdığınız tüm .jpg dosyalarını hariç tutmak için:

rsync -a --exclude '*.jpg*' src_directory/ dst_directory/

Belirli bir kalıpla eşleşenler dışındaki tüm dosyaları ve dizinleri hariç tutmak biraz daha zordur. Diyelim ki .jpg ile biten dosyalar hariç diğer tüm dosyaları ve dizinleri hariç tutmak istiyorsunuz.

Bir seçenek aşağıdaki komutu kullanmaktır:

rsync -a -m --include='*.jpg' --include='*/' --exclude='*' src_directory/ dst_directory/

Birden çok dahil / hariç tut seçeneği kullanıldığında, ilk eşleşen kural geçerlidir.

  • --include='*.jpg' - Önce tüm .jpg dosyalarını .jpg . --include='*/' - O zaman src_directory dizinindeki tüm dizinleri src_directory . Bu olmadan rsync sadece *.jpg dosyalarını üst düzey dizine kopyalar. -m - Boş dizinleri kaldırır.

Başka bir seçenek de find komutunun çıktısını rsync'e bağlamaktır:

find src_directory/ -name "*.jpg" -printf %P\\0\\n | rsync -a --files-from=- src_directory/ dst_directory/

  • -printf %P\\0\\n - src_directory/ dosya yolundan kaldırır. --files-from=- - yalnızca standart girdideki dosyaları içerir (find komutundan geçirilen dosyalar).

Sonuç

Bu öğreticide, Rsync ile veri aktarırken dosyaları ve dizinleri nasıl hariç tutacağınızı öğrendiniz. Rsync Kullanım Kılavuzu sayfasında Rsync hakkında öğrenilecek çok şey var.

rsync terminali