Harici bir sürücüye yedekleme yapmak için Rsync kullanma


17

Evimdeki bilgisayarları yedeklemek için harici bir sabit disk alıyorum (sonunda !!). Rsync kullanmayı umuyorum. Tam olarak istediğimi yapan (ya da yaptığı gibi) bir örnek gördüm. Bunun gibi bir şey:

rsync -aE --delete /path/to/what/I/want/to/backup /Volumes/FW200/Backups

Ancak, rsync belgelerine ve örneklerine ve benzerlerine baktığımızda, işler bundan çok daha karmaşık görünmeye başladı. Ağ ve cinler ve jargon, oh benim!

Ben sadece bir bilgisayardan firewire bağlı harici bir sürücüye yeniden senkronize olduğum sürece, bunların hiçbirinin gerekli olmadığını varsayıyorum. Bunu varsaymakta yanıldım? İşler gerçekten bu zararsız emirden daha mı karmaşık olacak?


Yanıtlar:


10

Rsync, yerel sürücülerde iyi çalışır. Ancak, yerel yolları algılarsa, otomatik olarak --whole-dosya moduna geçer; bu da diffs'yi kopyalamaz, ancak kaynak dosyayı hedef dosya üzerine kopyalar. Rsync yine de hiç değişmemiş dosyaları görmezden gelir. Kaynak ve hedef arasındaki bant genişliği yüksek olduğunda (iki yerel disk gibi) bu, her iki dosyayı okumaktan ve yalnızca değiştirilen bitleri kopyalamaktan çok daha hızlıdır.


2
s / Bununla birlikte / Neyse ki / dosyalar yerel olduğunda, her ikisini de okumak ve her ikisinin de bir kısmını yazmak için tüm farklı sihirleri yapmak (tekrar okumak) sadece kaynak okumaktan, hedef yazmaktan çok daha fazla iştir.
Javier

cevabımda buna girip girmeyeceğimi bilmiyordum. Şimdi ekleyeceğim.
kbyrd

31

Ben rsync'i 'glop', 'trunc' ve 'v' olarak unutulmaz bayraklarla kullanıyorum.

rsync -gloptrunc $srcdir $dstdir

Kısa bir rehber:

  • g - grup sahipliği bilgilerini koru
  • l - sembolik bağlantıları sembolik olarak kopyala
  • o - sahip bilgisini koru
  • p - izinleri koru
  • t - zaman damgalarını koru
  • r - dizinler aracılığıyla geri alma
  • u - güncelleyin, yeni dosyaları atlayın
  • [n] - hayır, bunu yapma, onun yerine kuru bir koşu yap
  • c - sağlama toplamı, mümkünse dosya bloklarında sağlama toplamı deneyin (*)
    not: yerel dosya sistemlerinde bu geçersiz kılınır ve bunun yerine tüm dosyalar kopyalanır.
  • v - ayrıntılı

Çalıştığından emin olmak için her zaman yukarıdakileri çalıştırırım, ardından sonuçlardan memnun kaldığımda 'n' bayrağını kaldırırım.

Yukarıdaki kombinasyonların temel özellikleri:

  • İki (veya daha fazla) sunucu arasında İKİ yönde çalıştırın, böylece İKİ yönde senkronizasyon. O zaman efendinin hangisi olduğunu hissederseniz güncelleyin.
  • Ya birlikte, usta olmasını sağlar anlamlı geri geliyor, başka bir şey silmek istiyorsanız, emin gerçekten gitti olmak için her ikisinde de silin gerektiği uyarısıyla.

Bunu, iki makineyi senkronize tutmak veya senkronize edilmiş alt dizinlere tutmak için kullanıyorum (USB sürücüye yedekleme gibi).

Daha önce belirtilen diğer gönderilerden biri olarak, yerel sürücülerle uğraşıyorsanız, 'sağlama toplamı' aslında KAPALI duruma getirilebilir.

Bazı nadir durumlarda, uzak makinelerdeki oturum açma hesaplarındaki değişiklikleri, bağlantı noktalarını değiştiren ve hatta 'rsync'in uzak ana bilgisayarda nerede yaşadığını belirten ek parametreler eklemek zorunda kaldım ... ancak bunlar doğrudan sizin için geçerli değil soru.


3
Rsync için -a bayrağı yukarıdakilerin hepsini yapmıyor mu?
Rory

2
Ne yaptýklarýný bilmediđimde 'meta' bayraklarýný kullanmak için büyük bir hayran deđilim. Rsync için kullanılan mantık, '-a' harfinin aslında -rlptgoD olduğunu, 'u' ve 'v' yi atlayan ancak 'D' yi içerdiğini gösterir. bunlardan, benim için, 'u' ilavesi tek temel fark gibi görünüyor.
ericslaw

İki yönlü kopyalamak yerine onu kaynaktan hedefe yansıtmaya nasıl zorlarım (hedefte kaynakta olmayan herhangi bir şeyi silme)?
Gabriel Staples

1
Kullanmanız gerekecek gibi görünüyor rsync -gloptrunc --delete --delete-excluded $srcdir $dstdir. Bu --delete, hedefte kaynakta olmayan her şeyi --delete-excludedsilmeyi ve hedefte normalde izlenmeyecek veya kopyalanmayacak hariç tutulan dosyaları silmeyi söyler. Kullanırsanız --delete-excluded, teknik olarak da kullanmanız gerekmez --delete, ancak her ikisini de yine de kullanmakta sorun yoktur. Detaylar buradaki sayfalarda: linux.die.net/man/1/rsync .
Gabriel Staples

Not: Genel rsync kullanımı için bu öğreticiyi şimdi de kendim için yazdım, bu yüzden gerektiği gibi başvurabilirim: rsync nasıl kullanılır
Gabriel Staples

4

Hiçbirine gerek yok, rsync'i herhangi bir daemons veya başka bir yapılandırma olmadan kullanabilirsiniz JUST FINE!

Sadece rsync komutunu kullanın ve hazırsınız.


2

Rsync komutunuzdaki yola bakarak, Mac OS X kullandığınızı düşünmek doğru olur mu?

Şahsen, Time Machine (Leopard kullanıyorsanız) veya rsync kullanan Karbon Kopya Cloner'ı ( http://www.bombich.com/software/ccc.html ) kullanmayı tercih ederim .

Kendi betiğinizi düzeltmeye çalışmaktan çok daha kolay. Bir avantajı Time Machine ve CCC'nin size artımlı yedeklemeler vermesidir.


2

Kullandığınız örnek, yedeklemeler için iyi çalışacak gibi görünüyor.

Ancak rsync kullanırken göz önünde bulundurmak isteyebileceğiniz bir şey --link-dest seçeneğini kullanmaktır. Bu, birden fazla yedek tutmanıza izin verir, ancak değişmeyen dosyalar için sabit bağlantılar kullanır ve tüm yedeklemeleri etkili bir şekilde artımlı bir alan haline getirir. Örnek bir kullanım:

rsync -aE --link-dest=/mnt/external_disk/backup_20090612 dir_to_backup \
    /mnt/external_disk/backup_20090613

Bu, 12 Haziran için tarihli bir yedeğiniz olduğunu ve 13 Haziran'da yeni bir tane oluşturmak istediğinizi varsayar. Her dosyanın çıktısını almak istemiyorsanız -v seçeneğini atlamak isteyebilirsiniz.


1
rsnapshot, tam sürüm yedeklemeleri alan etkili bir şekilde tutmak için link-dest kullanan bir yedekleme sistemidir.
Rory

1

Gerçekten de veritabanları çalıştırıp çalıştırmamanıza bağlıdır. Rsync her dosyanın anlık görüntüsünü alır ve araya giren tüm yazmaları yok sayar. Bir veritabanını yedeklemek istiyorsanız, rsync'ten önce yoksayma filtresi oluşturmaya ve DB döküm araçlarını çalıştırmaya bakmalısınız.


1

Komutunuz yazılı olarak çalışmalıdır, ancak rsync üzerine kurulmuş ve dosyaların birden çok sürümünü tutan rsnapshot adlı bir programa bakmak isteyebilirsiniz, böylece geri dönüp geçen hafta veya geçen ay olduğu gibi şeylere bakabilirsiniz. Yapılandırma oldukça kolaydır ve alan optimizasyonunda gerçekten iyidir, bu yüzden çok fazla karmaşa yoksa tek bir yedeklemeden çok daha fazla yer kaplamaz.


1

İşletim sisteminizden bahsetmediniz. * Nix tabanlı işletim sistemi olduğu varsayımıyla, komutunuz iyi.

Ancak, bir veya her iki sürücünün NTFS olarak biçimlendirilmesi, * nix'ten veya hatta Mobaxterm / cygwin kullanılarak Windows içinden erişilmesi durumunda, rsync artımlı işlevselliği aşağıdakilerle iyi çalışmaz rsync -a (archive flag)

NTFS sürücüleri dahil edilmişse, aşağıdakileri kullanabilirsiniz:

rsync -rvh --size-only --delete /path/to/what/I/want/to/backup /Volumes/FW200/Backups

Windows'ta rsync işlevselliğine sahip olmak için Mobaxterm ssh istemcisini indirin.

İşte fazla bilgi NTFS sürücüler ile rsync kullanımıyla ilgili


0

Yedekleme için rsync kullanmayı denedim ama bir karışıklık oldu. rsync yedekleme yerine 'senkronize etmek' için daha uygundur. Ve büyük dosyaları karşılaştırmak sonsuza dek sürer.

Biraz araştırdım ve birkaçını denedim (temelde ubuntu'daki apt-cache search backup'dan herkes test ediyor).

Sonunda ' backup2l - az bakım gerektiren yedekleme / geri yükleme aracı' ile sonuçlandım , çok kolay. Planlama ve dönüşü yönetme şeklini seviyorum (seviye olarak). USB harici sürücümü komut satırından bağladığımda çalıştırıyorum, ancak otomatikleştirebilirsiniz.


0

Yedeklemeyi yapmak için dirvish'i deneyin. http://www.dirvish.org/
Sözde tonozlarda rsync'in hardlinklerini kullanır. USB diskinin alabileceği kadar eski dökümlerinizi tutabilirsiniz. Veya otomatik olarak ayarlayın.

Dirvish fikrini anladıktan sonra, tüm seçenekleriyle kendi kendine rsync'den daha uygun.


rsnapshot dirvish benzer
Rory

0

Windows tabanlı bilgisayar için bir çözüm buldum: http://www.itefix.no/i2/node/10650

D: \ bölümünü harici bir K sürücüsüne kopyalamak için: \

rsync -aE --delete --progress /cygdrive/d/* /cygdrive/k

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.