Biri bana bunun ne yaptığını söyleyebilir mi?
rsync -uva --delete /srv/bkp01 /srv/offbk2/ > ~/offbkp01.log
O silmek mu bkp01
ve offbk2
ve bir günlük gönderir offbkp01.log
?
Biri bana bunun ne yaptığını söyleyebilir mi?
rsync -uva --delete /srv/bkp01 /srv/offbk2/ > ~/offbkp01.log
O silmek mu bkp01
ve offbk2
ve bir günlük gönderir offbkp01.log
?
Yanıtlar:
Bunu parçalara ayırmak için iki ana bölüm, ardından bir özet ve notlar var:
rsync
komut:rsync -uva --delete /srv/bkp01 /srv/offbk2/
rsync-command > ~/offbkp01.log
rsync
komut:rsync
- Bunun bir açıklama gerektirmediğini varsayıyorum (ancak istenirse sağlayacaktır).-uva
- Bir dizi tek karakter seçeneği, (kısa sonra uzun form gösterilir):
-u
--update
- rsync'e tüm değişikliklerin yalnızca hedefte kaynakta bulunanlarla aynı yaşta (ve farklı boyutlarda) veya daha eski dosyalara uygulanması gerektiğini bildirir. Yani, rsync yalnızca hedefi güncelleyecek kaynaktan gelen değişiklikleri iletmelidir, ancak hedef dosyanın eski bir sürüm olmasını sağlayacak herhangi bir değişiklik yapmamalıdır.
Bazı istisnalar var. Türdeki farklılıklar (örn. Biri dosya, diğeri dizin) tarihlerden bağımsız olarak güncellemeye neden olur. Simge bağlantıları ve diğer özel dosyalar bu seçeneği yok sayar. Ve daha da önemlisi, bu hangi dosyaların silineceğini etkilemez.
-v
--verbose
- rsync yürütülürken yazdırdığı bilgi miktarını artırır. Bu olmadan, rsync hiçbir şey basmaz (neredeyse?). Bu seçenek olduğu gibi, rsync size hangi dosyaların aktarıldığını söyler ve sonuna bir özet ekler. Daha fazla v
s yazdırılan bilgileri artırır, ancak kılavuz sayfasında ikiden fazla v
s yalnızca hata ayıklama sırasında kullanılmalıdır. -a
--archive
- Bu, -rlptgD
birlikte paketlenen diğer birkaç seçeneğe ( ) eşdeğerdir . Uzun adından da anlaşılacağı gibi, dosyaları ve dizinleri arşivlemek için birçok yaygın seçenek belirlemenin hızlı bir yoludur. Olacak:-r
--recursive
- rsync'e dizinleri özyineli olarak kopyalamasını söyler. Bu veya daha özel bir -d
--dirs
seçenek olmadan , rsync karşılaştığı tüm dizinleri atlar (ve çıktısında size söyler). -l
--links
- Kaynak bir sembolik bağlantı olduğunda, hedefte bir sembolik bağlantı oluşturun. Diğer seçeneklere bağlı olarak, sembolik bağlantılar atlanabilir veya tam bir ayrı kopyaya (yani, sembolik bağlantı yerine içeriklerin (veya dosyanın başka bir kopyasının) bulunduğu gerçek bir dizine) dönüştürülebilir. -p
--perms
- Hedef dosyaların izinlerini kaynak dosyalarla aynı şekilde ayarlar. -t
--times
- Hedef dosyaların değişiklik zamanlarını kaynak dosyalarla aynı şekilde ayarlar. Bu zamanları senkronize tutmak rsync algoritmasını daha verimli hale getirdiğinden, genellikle her zaman açık veya dolaylı olarak kullanılmasını istersiniz. -g
--group
- Hedefin grup niteliğini kaynak ile aynı olarak ayarlar. Varsayılan olarak ada göre ilişkilendirilir, ancak bazı durumlarda grup kimlik numarasına geri döner. Eğer alıcı rsync süper kullanıcı (veya onu taklit olarak çalıştırmak değildir --fake-super
), rsync çağrılan kullanıcı yalnızca gruplar o alıcı tarafında olabilir kümesinin bir üyesidir. Aksi takdirde, grup daha önce belirtilen aynı kullanıcının varsayılan grubuna ayarlanır. -D
- Seçeneklere eşdeğer --devices
ve --specials
birlikte. Demek istediler:--devices
- Karakter ve blok cihaz dosyaları aktarılır. Alıcı rsync'in süper kullanıcı olarak çalıştırılmaması (veya taklit edilmesi --fake-super
) durumunda etkisi yoktur . --specials
- Özel dosyalar (soketler gibi) aktarılır (aksi takdirde aktarılmazlar). --delete
- rsync'e, hedefte olan ancak kaynakta olmayan dosyaları silmesini söyler. Bu, yukarıda ayarlanan güncelleme seçeneğinden ETKİLENMEZ (aslında, çoğu dosya sistemi hangi eylemin daha yeni olduğunu görmek için gerekli verileri tutmayacağından nasıl olabilir?). Bu seçenek, joker karakter / glob genişletmesinden sonra kaynaklara etki eder , bu nedenle dir / *, dir / ile aynı değildir. Bazı önemli notlar:--dry-run
ilk seçenekle denemelisiniz , bu da istenmeyen değişikliklerin yapılmadığından emin olmanızı sağlayan bir taklit transferi yapar. --ignore-errors
seçenekle geçersiz kılınabilir , ancak muhtemelen bunu yapmak istemezsiniz / istemezsiniz.--delete-during
algoritma kullanılır. Alıcı daha eskiyse --delete-before
kullanılır. Bir hata oluşursa (diğer tüm değişiklikler yapılana kadar hiçbir şeyi silmemek gibi) dosyaların belirli bir tutarlılığı sürdürmesi önemliyse, varsayılandan daha özel bir seçenek kullanmalısınız./srv/bkp01
- Kaynak dosya veya dizin. Dizinin sonunda eğik çizgi olup olmadığı ve diğer dizinin mevcut olup olmadığı hakkında bazı ayrıntılı kurallar vardır. Görebilirsiniz KULLANIM detayları için adam sayfasının bölümünü, ama burada bir sondaki eğik çizgi olmaması bunun anlamı dizin bu dizinin yerine, hedefe kopyalanır içeriği hedefe içine kopyalanan. Bu bir dizin yerine bir dosya ise aynıdır./srv/offbk2/
- Hedef dizin. Genel olarak, komutta başka bir yerde belirtmek için bir seçenek kullanılmazsa, bu her zaman rsync komut bölümünde listelenen son öğe olacaktır.>
- Bu, stdout'u (standart çıktı) soldaki dosyadan sağdaki dosyaya yönlendirir, içeriği haline gelir ve zaten yoksa dosyayı oluşturur (mümkünse). Bazı notlar:2>&1
yukarıda komuta sonuna kadar. Düzen önemlidir, bu yüzden nereye koyacağınızı genelleştirmeye dikkat edin. Sihirli sayı 1
stdout'u, 2
stderr'i ifade eder &
, (esasen) "adresi" dir ve tam komut snippet'i "stderr çıkışını stdout akışına yönlendirir" anlamına gelir. >>
bunun yerine kullanabilirsiniz . Stderr'ı aynı yere yönlendirme yöntemi aynı kalır. 1> stdout_file 2> stderr_file
. Değiştirmek yerine ekleyerek bunu yapmak için bu komutun >>
yerine de kullanabilirsiniz >
.~
- Bu, geçerli kullanıcının giriş dizini için kestirimdir ve sonraki bitin bir parçasını oluşturur.~/offbkp01.log
- geçerli kullanıcının giriş dizinindeki offbkp01.log dosyası. Burada yeniden yönlendirme nedeniyle rsync komutunun çıktısı verilecektir >
.Özetle, bu komut:
/srv/bkp01
, /srv/offbk2/bkp01
, ve içinde /srv/offbk2/
olmayan her şeyi/srv/bkp01
aşağıdaki koşullarla siler :
/srv/offbk2/
o daha yeni üzerindeki modifikasyon zamandan daha /srv/bkp01
, güncellenmesi olmayacak , eğer her iki ürün hala aynı tip ((düzenli dosya, dizin veya symlink? )). Buna ek olarak, rsync kabuğun dosyaya yazacağı (özellikle hangi dosyaların aktarıldığını ve son bir özeti ) hakkında bazı bilgiler yazdıracaktır . Bu günlük dosyası zaten yoksa yeniden oluşturulur ve zaten varsa üzerine yazılır. ~/offbkp01.log
Not: --fake-super
rsync'in süper kullanıcı etkinliklerini simüle etmesine neden olan bir seçenektir. Bunu, daha büyük ayrıcalıklara sahip olmadan ayarlayamadığı öznitelikleri saklamak için dosyaların genişletilmiş özniteliklerini kullanarak yapar. Her özelliğin gerçek sürümü, seçenekler ve ayrıcalıklar göz önüne alındığında anlamlı olan her şeye ayarlanır. Bu, süper kullanıcı ayrıcalıklarına sahip olmasanız bile bazı yedeklemeler yapmayı kolaylaştırsa da, gerçek güvenlik öznitelikleri ayarlanamayabileceğinden, genel olarak rsync kullanımından daha büyük bir güvenlik riski oluşturabileceğini de unutmamak gerekir. onlar hakkındaki bilgiler yedeklenmiş olsa bile
Kaynak: rsync ile çalışmak ve kılavuz sayfasını okumak için çok zaman .
Kılavuzdan:
--delete
Bu, rsync'e alıcı dosyaları (gönderen tarafta olmayanlar), ancak yalnızca senkronize edilen dizinler için yabancı dosyaları silmesini söyler. Joker karakter kabuk tarafından genişletildiğinden rsync bir istek aldığından, dizinin içeriğini (örneğin "dir / *") joker karakter kullanmadan tüm dizini (örneğin "dir" veya "dir /") göndermek için rsync'i kullanmalısınız. dosyaların üst dizinini değil, tek tek dosyaları aktarmak için. --Delete-excluded seçeneğini kullanmazsanız veya kuralları yalnızca gönderen tarafta eşleşiyor olarak işaretlemezseniz, aktarım dışında bırakılan dosyalar da silinemez. (FİLTRE KURALLARI bölümüne ekleme / hariç tutma değiştiricilerine bakın).
Dolayısıyla, joker karakterler kullanmadıysanız, hedef dizinin orijinal parçası olmayan dosyaları siler.
Kaynak dizin:
1.txt
2.txt
3.txt
Hedef dizini:
4.txt
4. txt rsync'den sonra gider ve 1.txt, 2.txt ve 3.txt hedefte olur.
Diğer şeylerle ilgili olarak:
uva
Hayır, yalnızca yabancı dosyaları dizinden siler bkp01
.
Ayrıca:
-u
, --update
- alıcıda daha yeni olan dosyaları atla-v
, --verbose
- ayrıntı düzeyini artırın-a
, --archive
- arşiv modu; -rlptgoD'ye eşittir (-H, -A, -X yok)rsync -uva --delete /srv/bkp01 /srv/offbk2/
Komutun çıktısı, terminalinize yazdırılmak yerine yeniden yönlendirme operatörü ( )~/offbkp01.log
kullanılarak dosyaya gönderilir . Dosya mevcut değilse oluşturulur. Dosya varsa, eski içerik silinir.>
Daha man rsync
fazla bilgi için bakınız .
bkp01
. Sadece yabancı dosyaları (yani kaynakta bulunmayan dosyaları) hedeften siler.
rsync
Uzak dosya kopyalama - Dosya ağaçlarını yerel diskler, dizinler veya ağ üzerinde eşitleyin.
-u update
-v verbose
-a archive
--delete --> delete
Burada offbk2 içindeki dosyaları siler .
Daha sonra sonucun çıktısı (başarı ya da değil) bu günlük dosyasına yönlendirilir.