Auteur de la discussion
#1
rsync ile hariç tutma kuralları: etkili dosya senkronizasyonu için pratik rehber
Rsync, dosyaları kaynak ve hedef arasında taşırken sadece gerekli olanları işlemek için güçlü bir filtre mekanizması sunar. Hariç tutma kuralları, büyük veri setlerinde gereksiz tekrarı azaltır, güvenlik ve performans açısından da önemli bir rol oynar. Aşağıda temel kavramları ve pratik kuralları adım adım ele alıyorum.
1) Temel filtre yapısı
Rsync’te hariç tutma işlemi için iki ana yol kullanılır: filtre dosyaları ve komut satırında filtre seçenekleri. Filtre dosyası, --exclude, --include ve --filter gibi anahtarların birleşimini içerir. Örneğin bir yedekleme senaryosunda .git klasörü, .DS_Store dosyaları, tmp ve cache dizinlerini kolayca hariç tutabilirsiniz. Filtre dosyasına şu satırları yazabilirsiniz:
2) Kademeli filtre kullanımı
Birden fazla katmanla çalışmayı planlarken önce genel kuralları, sonra özel kuralları uygulamak faydalıdır. Örneğin çalışma kökünden hemen hariç tutacaklar:
Bu yapı, kök düzeyindeki genel hariç tutmaların ardından belirli bir proje yolunu içe dahil ederken, istenmeyen dizinlerin çoğunu otomatik olarak dışlar.
3) Dosya adları ve yol desenleri
4) Include ile filtreleri zorlama
Include ile hangi içeriğin alınacağını belirlerken, önce include kuralları sonra exclude ile kapsam haritalanabilir. Oyun şu şekilde olabilir:
Bu durumda yalnızca projeA içerikleri ve ortak config dahil edilir; geri kalanı hariç edilir.
5) İki yönlü senkronizasyonlarda dikkat
Kaynak ve hedef arasında çift yönlü değişim varsa --delete gibi seçeneklerle hedefteki eski dosyaların temizlenmesi mümkündür. Ancak hariç tutma kurallarını karşı tarafa da uygun şekilde uyguladığınızdan emin olun. Aksi halde istenmeyen dosyalar hedef üzerinde kalabilir.
6) İpucu ve güvenlik
Özet
Rsync ile hariç tutma kuralları, performansın ve güvenliğin temel dayanaklarındandır. Desenleri dikkatli seçmek, include-exclude mantığını net kavramak ve test etmek, güvenilir bir senkronizasyonun anahtarıdır. Bu yaklaşım üzerinde hangi projelerde hangi filtreleri kullandığınızı paylaşır mısınız? Özellikle karmaşık proje yapılarında hangi strateji sizce daha temiz sonuçlar veriyor?
Rsync, dosyaları kaynak ve hedef arasında taşırken sadece gerekli olanları işlemek için güçlü bir filtre mekanizması sunar. Hariç tutma kuralları, büyük veri setlerinde gereksiz tekrarı azaltır, güvenlik ve performans açısından da önemli bir rol oynar. Aşağıda temel kavramları ve pratik kuralları adım adım ele alıyorum.
1) Temel filtre yapısı
Rsync’te hariç tutma işlemi için iki ana yol kullanılır: filtre dosyaları ve komut satırında filtre seçenekleri. Filtre dosyası, --exclude, --include ve --filter gibi anahtarların birleşimini içerir. Örneğin bir yedekleme senaryosunda .git klasörü, .DS_Store dosyaları, tmp ve cache dizinlerini kolayca hariç tutabilirsiniz. Filtre dosyasına şu satırları yazabilirsiniz:
CODE
123456
--exclude .git/
--exclude [b]/tmp/
--exclude [/b]/.DS_Store
--include /dokumanlar/[b]
--exclude /gece_yedekleri/[/b]
2) Kademeli filtre kullanımı
Birden fazla katmanla çalışmayı planlarken önce genel kuralları, sonra özel kuralları uygulamak faydalıdır. Örneğin çalışma kökünden hemen hariç tutacaklar:
CODE
123456
--exclude /cache/
--exclude /logs/
--exclude /node_modules/
--include /projeler/projeA/[b]
--exclude /*Bu yapı, kök düzeyindeki genel hariç tutmaların ardından belirli bir proje yolunu içe dahil ederken, istenmeyen dizinlerin çoğunu otomatik olarak dışlar.
3) Dosya adları ve yol desenleri
- Tekil dosya veya dizin için: --exclude /confidential.pdf
- Tüm alt dizinlerde belirli dosya adları için: --exclude [/b]/debug.log
- Uzantıya göre hariç tutma: --exclude *.tmp
- Dinamik desenler ile kaynak içinde belirli yapıların hedefe alınmaması: --exclude /build/ veya --exclude /output/
4) Include ile filtreleri zorlama
Include ile hangi içeriğin alınacağını belirlerken, önce include kuralları sonra exclude ile kapsam haritalanabilir. Oyun şu şekilde olabilir:
CODE
1234
--include /projeA/**
--include /shared/config.yaml
--exclude /*
Bu durumda yalnızca projeA içerikleri ve ortak config dahil edilir; geri kalanı hariç edilir.
5) İki yönlü senkronizasyonlarda dikkat
Kaynak ve hedef arasında çift yönlü değişim varsa --delete gibi seçeneklerle hedefteki eski dosyaların temizlenmesi mümkündür. Ancak hariç tutma kurallarını karşı tarafa da uygun şekilde uyguladığınızdan emin olun. Aksi halde istenmeyen dosyalar hedef üzerinde kalabilir.
6) İpucu ve güvenlik
- Kök dizin üzerinde çok geniş filtreler kullanmaktan kaçının; filtrelerin hangi dosyaları etkilediğini test etmek için --dry-run (veya -n) ile çalıştırmak yararlı olur.
- Özellikle kritik dizinlerde herhangi bir dosya adını yanlış yazmamak için filtreleri katalog yapısında doğrulayın.
- Büyük veri setlerinde filtre dosyasını ayrı bir kaynakta yönetmek ve sürüm kontrolüne almak hata oranını azaltır.
Özet
Rsync ile hariç tutma kuralları, performansın ve güvenliğin temel dayanaklarındandır. Desenleri dikkatli seçmek, include-exclude mantığını net kavramak ve test etmek, güvenilir bir senkronizasyonun anahtarıdır. Bu yaklaşım üzerinde hangi projelerde hangi filtreleri kullandığınızı paylaşır mısınız? Özellikle karmaşık proje yapılarında hangi strateji sizce daha temiz sonuçlar veriyor?
