Acemi Olmayanların Verilerini Rsync ile Senkronize Etme Rehberi
Rsync protokolü sıradan yedekleme / senkronizasyon işleri için kullanımı oldukça basit olabilir, ancak daha gelişmiş özelliklerinden bazıları sizi şaşırtabilir. Bu yazıda, en büyük veri istifçilerinin ve yedekleme meraklılarının bile rsync'i tüm veri yedekleme ihtiyaçları için tek bir çözüm olarak nasıl kullanabileceğini göstereceğiz..
Uyarı: Yalnızca Gelişmiş Geeks
Orada otururken “halt nedir?” Veya “rsync'i gerçekten basit işler için kullanırım” diye düşünürseniz, verilerinizi Linux'ta yedeklemek için rsync'i kullanmayla ilgili önceki makalemize göz atmak isteyebilirsiniz. rsync'e giriş, kurulumda size rehberlik eder ve daha temel fonksiyonlarını gösterir. Rsync'nin (dürüst olmak gerekirse, o kadar da karmaşık değil) nasıl kullanılacağına ve Linux terminalinde rahat olduğuna dair sağlam bir kavrayışınız olduğunda, bu gelişmiş kılavuza geçmeye hazırsınız.
Windows'ta rsync çalıştırma
Öncelikle Windows okurlarımızı Linux gurularımızla aynı sayfada bulalım. Rsync, Unix benzeri sistemlerde çalışacak şekilde yapılandırılmış olmasına rağmen, Windows'ta bu kadar kolay kullanmamanız için hiçbir neden yoktur. Cygwin, rsync'i çalıştırmak için kullanabileceğimiz harika bir Linux API'si üretiyor, bu yüzden kendi web sitesine gidin ve bilgisayarınıza bağlı olarak 32-bit veya 64-bit sürümünü indirin.
Kurulum basittir; “Paketleri Seç” ekranına gelinceye kadar tüm seçenekleri varsayılan değerlerinde tutabilirsiniz..
Şimdi Vim ve SSH için de aynı adımları uygulamanız gerekiyor, ancak paketleri seçtiğinizde paketler biraz farklı görünecek, işte bazı ekran görüntüleri:
Vim'in Kurulumu:
SSH'yi yükleme:
Bu üç paketi seçtikten sonra, kurulumu tamamlayana kadar bir sonraki tıklamaya devam edin. Ardından, yükleyicinin masaüstüne yerleştirdiği simgeye tıklayarak Cygwin'i açabilirsiniz..
rsync Komutları: Basit ila Gelişmiş
Artık Windows kullanıcıları aynı sayfada, basit bir rsync komutuna bir göz atalım ve bazı gelişmiş anahtarların kullanımının onu nasıl karmaşık hale getirebileceğini gösterelim..
Diyelim ki yedeklenmesi gereken bir sürü dosyanız var - bugünlerde kim yok? Taşınabilir sabit sürücünüzü taktığınızda, bilgisayar dosyalarınızı yedekleyebilir ve aşağıdaki komutu verebilirsiniz:
rsync -a / ev / inek / dosyalar / / mnt / usb / dosyalar /
Veya, bir Windows bilgisayarında Cygwin ile görünme şekli:
rsync -a / cygdrive / c / dosyalar / / cygdrive / e / dosyalar /
Oldukça basit ve bu noktada dosyaları sürükleyip bırakabildiğiniz için gerçekten rsync kullanmaya gerek yok. Bununla birlikte, diğer sabit sürücünüzde zaten bir miktar dosya varsa ve yalnızca güncellenmiş sürümlere ve son senkronizasyondan bu yana oluşturulan dosyalara ihtiyaç duyuyorsa, bu komut kullanışlıdır, çünkü yalnızca yeni verileri yalnızca sabit sürücüye gönderir. Büyük dosyalar ve özellikle internet üzerinden dosya aktarımı yapmak büyük önem taşır..
Dosyalarınızı harici bir sabit sürücüye yedeklemek ve ardından sabit sürücüyü bilgisayarınızla aynı konumda tutmak çok kötü bir fikirdir, bu nedenle dosyalarınızı internet üzerinden başka bir bilgisayara göndermeye başlamak için neye ihtiyaç duyacağına bir göz atalım ( kiraladığınız biri, bir aile üyesi vb..
rsync -av --delete -e 'ssh -p 12345' / ana sayfa / geek / dosya / [email protected]: / ana sayfa / geek2 / dosya /
Yukarıdaki komut, dosyalarınızı 10.1.1.1 IP adresine sahip başka bir bilgisayara gönderir. Artık kaynak dizinde olmayan hedef dosyalardan silinecek, aktarılan dosya adlarının çıktısını alacak, böylece neler olup bittiğine dair bir fikriniz olacak ve 12345 numaralı bağlantı noktasında SSH üzerinden tünel.
-a -v -e --delete
anahtarlar en temel ve en yaygın kullanılanlardan bazılarıdır; Bu öğreticiyi okuyorsanız, onlar hakkında çok şey bilmelisiniz. Bazen göz ardı edilen ancak inanılmaz derecede yararlı olan bazı diğer anahtarları gözden geçirelim:
--ilerleme
- Bu anahtar, her bir dosyanın aktarma ilerlemesini görmemizi sağlar. İnternet üzerinden büyük dosyaları aktarırken özellikle kullanışlıdır, ancak küçük dosyaları sadece hızlı bir ağ üzerinden aktarırken anlamsız miktarda bilgi verebilir..
İle bir rsync komutu --ilerleme
yedekleme devam ederken:
--kısmi
- Bu, büyük dosyaları internet üzerinden aktarırken özellikle yararlı olan başka bir anahtardır. Bir dosya transferinin ortasında herhangi bir sebeple rsync kesintiye uğrarsa, kısmen transfer edilen dosya hedef dizinde tutulur ve rsync komutu tekrar çalıştırıldığında transfer bırakıldığı yerden devam ettirilir. İnternet üzerinden büyük dosyaları aktarırken (örneğin, birkaç gigabayt), birkaç saniye internet kesintisi, mavi ekran veya insan hatası ile dosya aktarımınızı arttırıp yeniden baştan başlamaktan daha kötü bir şey yoktur..
-P
- bu anahtar birleştirir --ilerleme
ve --kısmi
, öyleyse yerine kullanın ve rsync komutunuzu biraz daha düzenli hale getirin.
-z
veya --kompres
- Bu anahtar, rsync'in dosya verilerini aktarılırken sıkıştırmasını sağlayarak, hedefe gönderilmesi gereken veri miktarını azaltır. Aslında oldukça yaygın bir anahtar ama çok önemli değil, sadece yavaş bağlantılar arasında transferlerde size gerçekten fayda sağlıyor ve aşağıdaki dosya türleri için hiçbir şey yapmıyor: 7z, avi, bz2, deb, g, z iso, jpeg, jpg, mov, mp3, mp4, ogg, rpm, tbz, tgz, z, zip.
-h
veya --insan tarafından okunabilir
- Kullanıyorsanız --ilerleme
geçiş, kesinlikle bunu da kullanmak isteyeceksiniz. Diğer bir deyişle, anında bayt megabayt dönüştürmek istemiyorsanız. -h
switch, basılan tüm numaraları insan tarafından okunabilir formata dönüştürür, böylece gerçekten aktarılmakta olan veri miktarını anlayabilirsiniz..
-n
veya --prova
- Bu anahtar, rsync betiğinizi ilk yazdığınızda ve test ederken bilmek önemlidir. Deneme çalıştırması gerçekleştirir ancak aslında herhangi bir değişiklik yapmaz - olası değişiklikler yine de normal olarak verilir, böylece her şeyi okuyabilir ve komut dosyanızı prodüksiyona getirmeden önce tamam göründüğünden emin olabilirsiniz..
-R,
veya --bağıl
- Hedef dizin henüz mevcut değilse, bu anahtar kullanılmalıdır. Bu kılavuzun ilerleyen bölümlerinde bu seçeneği kullanacağız, böylece hedef makinede klasör adlarında zaman damgası bulunan dizinler oluşturabiliriz..
--Hariç tutmak
- Bu anahtar, yedeklemek istemediğiniz dizin yollarını içeren bir hariç tutma listesine bağlanmak için kullanılır. Sadece her satırda bir dizin veya dosya yolu ile düz bir metin dosyasına ihtiyaç duyar.
--içerir-dan
- Benzer --Hariç tutmak
, ancak, dizinleri ve yedeklemek istediğiniz verilerin dosya yollarını içeren bir dosyaya bağlanır..
--istatistikler
- Herhangi bir yöntemle gerçekten önemli bir anahtar değil, ancak bir sysadmin iseniz, her bir yedeklemenin ayrıntılı istatistiklerini bilmek kullanışlı olabilir, böylece ağınız ve benzeri ağ üzerinden gönderilen trafik miktarını izleyebilirsiniz..
--log dosyası
- Bu, rsync çıkışını bir günlük dosyasına göndermenizi sağlar. Bunu, çıktıyı okumak için orada olmadığınız otomatik yedeklemeler için kesinlikle öneririz. Her şeyin doğru çalıştığından emin olmak için günlük dosyalarınızı her zaman boş zamanlarınızda bir kez kullanın. Ayrıca, bir sysadmin'in kullanması için çok önemli bir anahtardır, bu yüzden stajyerleri görevli bırakırken yedeklemelerinizin nasıl başarısız olduğunu merak etmediniz.
Şimdi birkaç tane daha anahtar eklenmiş olan rsync komutumuza bir göz atalım:
rsync -avzhP --delete --stats --log-file = / home / geek / rsynclogs / backup.log --exclude-from '/home/geek/exclude.txt' -e 'ssh -p 12345' / ana sayfadan / geek / files / [email protected]: / home / geek2 / dosyalar /
Komut hala oldukça basit, ama hala düzgün bir yedekleme çözümü oluşturmadık. Dosyalarımız şu anda iki farklı fiziksel konumda olsa da, bu yedekleme bizi veri kaybının temel nedenlerinden birinden koruyacak hiçbir şey yapmaz: insan hatası.
Anlık Görüntü Yedeklemeleri
Bir dosyayı yanlışlıkla silerseniz, virüs dosyalarınızın herhangi birini bozar veya dosyalarınızın istenmeyen şekilde değiştirildiği başka bir şey olur ve ardından rsync yedekleme komut dosyanızı çalıştırırsanız, yedeklenen verileriniz istenmeyen değişikliklerin üzerine yazılır. Böyle bir şey gerçekleştiğinde (eğer olmasa da), yedekleme çözümünüz sizi veri kaybınızdan koruyacak hiçbir şey yapmadı.
Rsync'in yaratıcısı bunu gerçekleştirdi ve --yedek
ve --yedekleme-dir
Argümanlar böylece kullanıcılar diferansiyel yedekleme yapabilirler. Rsync'in web sitesindeki ilk örnek, her yedi günde bir tam yedeklemenin yapıldığı bir komut dosyasını gösterir ve daha sonra bu dosyalardaki değişiklikler günlük olarak ayrı dizinlerde yedeklenir. Bu yöntemle ilgili sorun, dosyalarınızı kurtarmak için bunları yedi farklı kez etkin şekilde kurtarmanız gerekmesidir. Dahası, çoğu inek yedeklerini günde birkaç kez çalıştırır, böylece herhangi bir zamanda 20'den fazla farklı yedekleme dizinine kolayca sahip olabilirsiniz. Yalnızca dosyalarınızı kurtarmak artık bir acı değil, aynı zamanda sadece yedeklenmiş verilerinize bakmak bile son derece zaman alabilir - en son yedek kopyasını bulmak için bir dosyanın en son ne zaman değiştirildiğini bilmeniz gerekir. Her şeyden öte, yalnızca haftalık (veya bazı durumlarda daha az sıklıkta) artımlı yedeklemeler yapmak yetersizdir.
Anlık görüntü kurtarma yedekler! Anlık görüntü yedeklemeleri, artımlı yedeklemelerden başka bir şey değildir, ancak orijinal kaynağın dosya yapısını korumak için sabit bağlantılar kullanırlar. Kafanızı ilk başta dolaştırmak zor olabilir, o yüzden bir örneğe bakalım.
Verilerimizi her iki saatte bir otomatik olarak yedekleyen bir yedekleme betiğimiz varmış gibi yapın. Ne zaman rsync bunu yaparsa, her yedeklemeyi aşağıdaki biçimde adlandırır: Yedekleme-ay-gün-yıl-saat.
Böylece, tipik bir günde, hedef dizinde şu şekilde bir klasör listesi olurdu:
Bu dizinlerden herhangi birini geçerken, kaynak dizindeki her dosyayı tam olarak o sırada olduğu gibi görürsünüz. Yine de, iki dizinde de hiçbir kopya olmayacaktı. rsync bunu, üzerinden geçen bağlantıların kullanımıyla gerçekleştirir. --Bağlantı varış = DIR
tartışma.
Elbette, bu güzel ve özenle düzenlenmiş dizin adlarına sahip olmak için, rsync betiğimizi biraz güçlendirmek zorunda kalacağız. Bunun gibi bir yedekleme çözümünü başarmanın ne yapacağına bir göz atalım ve sonra betiği daha ayrıntılı olarak açıklayacağız:
#! / Bin / bash
#copy old time.txt - time2.txt
evet | cp ~ / backup / time.txt ~ / backup / time2.txt
#overwrite old time.txt dosyasını yeni saatle
echo 'date + ”% F-% I% p”'> ~ / backup / time.txt
# günlük dosyasını oluştur
echo “”> ~ / backup / rsync-'date + ”% F-% I% p” 'günlüğü
#rsync komutu
rsync -avzhPR - chmod = Du = rwx, Dgo = rx, Fu = rw, Fgo = r --delete --stats --log-file = ~ / backup / rsync-'date + ”% F-% I% p ”'.log --exclude-from' ~ / exclude.txt '- link-dest = / home / geek2 / files /' cat ~ / yedekleme / time2.txt '-e' ssh -p 12345 '/ home / geek / files / [email protected]: / home / geek2 / files / 'tarih + ”% F-% I% p”' /
# log dosyasını kopyalamayı ve yedeklemeye koymayı unutma
scp -P 12345 ~ / yedekleme / rsync-'cat ~ / backup / time.txt'.log [email protected]: / home / geek2 / dosyalar / 'cat ~ / yedekleme / time.txt' / rsync-'cat ~ / yedekleme / time.txt'.log
Bu tipik bir anlık görüntü rsync betiği olurdu. Seni bir yerde kaybettikten sonra, parça parça parçalayalım:
Komut dizimizin ilk satırı, time.txt içeriğini time2.txt dosyasına kopyalar. Yes borusu dosyanın üzerine yazmak istediğimizi onaylamak içindir. Daha sonra, şimdiki zamanı alıp time.txt içine koyarız. Bu dosyalar daha sonra kullanışlı olacak.
Bir sonraki satır rsync-log.log dosyasını rsync-date.log olarak adlandırır (burada tarih gerçek tarih ve saattir).
Şimdi, sizi uyaran karmaşık rsync komutu:
-avzhPR, -e, --delete, --stats, --log dosyası, --exclude-from, --link-dest
- Sadece daha önce bahsettiğimiz anahtarlar; tazeleme ihtiyacınız varsa yukarı kaydırın.
--chmod = Du = rwx, Dgo = RX, Fu RW, FGO = r =
- Bunlar hedef dizinin izinleridir. Bu dizini rsync betiğimizin ortasında yaptığımızdan, kullanıcılarımızın dosya yazabilmesi için izinleri belirtmemiz gerekiyor..
Tarih ve kedi komutlarının kullanımı
Rsync komutunun içindeki date ve cat komutlarının her kullanımında, ortaya çıktıkları sırayla geçeceğiz. Not: Bu işlevi yerine getirmenin, özellikle de değişkenleri bildirmenin kullanılmasının başka yollarının olduğunu biliyoruz, ancak bu kılavuzun amacı için bu yöntemi kullanmaya karar verdik..
Günlük dosyası şöyle belirtilir:
~ / backup / rsync-'date + ”% F-% I% p” 'günlüğü
Alternatif olarak, bunu şöyle belirtebilirdik:
~ / backup / rsync-'cat ~ / backup / time.txt'.log
Her iki durumda da --log dosyası
komutu önceden oluşturulmuş tarihli günlük dosyasını bulabilmeli ve ona yazabilmelidir..
Bağlantı hedef dosyası şöyle belirtilir:
--link-dest = / home / geek2 / files / 'cat ~ / backup / time2.txt'
Bu demektir ki --Bağlantı dest
komut önceki yedeklemenin dizini verilir. İki saatte bir yedekleme yapıyorsak ve bu betiği çalıştırdığımız sırada saat 16: 00’dır. --Bağlantı dest
komut, saat 14: 00’de oluşturulan dizini arar ve yalnızca o zamandan beri değişen verileri (varsa) aktarır..
Yinelemek için, bu yüzden time.txt betiğin başında time2.txt dosyasına kopyalanır. --Bağlantı dest
komut o zaman sonra başvurabilir.
Hedef dizin şöyle belirtilir:
[email protected]: / home / geek2 / files / 'date + ”% F-% I% p”'
Bu komut, kaynak dosyaları geçerli tarih ve saatin başlığına sahip bir dizine koyar.
Son olarak, günlük dosyasının bir kopyasının yedeğin içine yerleştirildiğinden emin oluruz..
scp -P 12345 ~ / yedekleme / rsync-'cat ~ / backup / time.txt'.log [email protected]: / home / geek2 / dosyalar / 'cat ~ / yedekleme / time.txt' / rsync-'cat ~ / yedekleme / time.txt'.log
Rsync günlüğünü almak ve uygun dizine yerleştirmek için 12345 numaralı bağlantı noktasında güvenli kopyayı kullanırız. Doğru günlük dosyasını seçmek ve doğru noktada sona erdiğinden emin olmak için, time.txt dosyasına cat komutu aracılığıyla başvurulması gerekir. Sadece date komutunu kullanmak yerine neden time.txt komutunu seçtiğimizi merak ediyorsanız, bunun nedeni, rsync komutu çalışırken çok zaman harcanması olabilirdi, bu yüzden doğru zamana sahip olduğumuzdan emin olmak için daha önce yarattığımız metin belgesi.
Otomasyon
RSync betiğinizi otomatikleştirmek için Linux'ta Cron'u veya Windows'ta Görev Zamanlayıcı'yı kullanın. Dikkat etmeniz gereken bir şey, yeni bir işleme devam etmeden önce çalışan tüm rsync işlemlerini sonlandırdığınızdan emin olmaktır. Görev Zamanlayıcı zaten çalışan tüm örnekleri otomatik olarak kapatır, ancak Linux için biraz daha yaratıcı olmanız gerekir.
Çoğu Linux dağıtımı pkill komutunu kullanabilir, bu nedenle aşağıdakileri rsync betiğinizin başına eklediğinizden emin olun:
pkill -9 rsync
Şifreleme
Hayır, henüz bitmedi. Sonunda yerinde harika (ve ücretsiz!) Bir yedekleme çözümümüz var, ancak tüm dosyalarımız hala hırsızlığa açık. Umarım, dosyalarınızı yüzlerce mil uzaklıktaki bir yere yedeklersiniz. Uzak yer ne kadar güvenli olursa olsun, hırsızlık ve saldırı her zaman sorun olabilir.
Örneklerimizde tüm rsync trafiğimizi SSH üzerinden tünelledik, böylece tüm dosyalarımız hedeflerine taşınırken şifrelenmiş oluyorlar. Ancak, varış yerinin güvenli olduğundan emin olmalıyız. Rsync'in yalnızca verilerinizi aktarılırken şifrelendiğini, ancak hedeflerine ulaştıktan sonra dosyaların tamamen açık olduğunu unutmayın..
Rsync'in en iyi özelliklerinden biri, sadece her dosyadaki değişiklikleri aktarmasıdır. Tüm dosyalarınız şifrelenmişse ve küçük bir değişiklik yaparsanız, tüm değişikliklerden sonra tüm verileri tamamen rastgele şifrelemenin bir sonucu olarak tüm dosyanın yeniden iletilmesi gerekir..
Bu nedenle, Windows için BitLocker veya Linux için dm-crypt gibi bir tür disk şifrelemesi kullanmak en iyisidir. Bu şekilde, verileriniz hırsızlık durumunda korunur, ancak dosyalar rsync ile aktarılabilir ve şifrelemeniz performansını engellemez. Rsync'e benzer şekilde çalışan veya Duplicity gibi bir biçimini uygulayan başka seçenekler de var, ancak rsync'in sunduğu bazı özelliklerden yoksunlar..
Anlık görüntü yedeklemenizi şirket dışı bir yere ayarladıktan ve kaynak ve hedef sabit disklerinizi şifreledikten sonra, rsync'te uzmanlaşmak ve mümkün olan en kusursuz veri yedekleme çözümünü uygulamak için kendinize sırt üstü bir pat verin.