Linux rsync Komutunun 10 Yararlı Örneği
Yayınlanan: 2022-10-28 Linux rsync
komutu, güçlü bir dosya kopyalama ve klasör eşitleme aracıdır. İşte kendi sistemlerinizde iyi bir şekilde kullanabileceğiniz on yaygın kullanım durumu.
rsync Aracı
rsync
aracı, iki bilgisayar arasında dosya ve dizinleri kopyalar. Hedef bilgisayarda var olmayan dosyaları kaynak bilgisayarda bulmak için dizin ağaçlarını tarayan karmaşık bir algoritma kullanır. Bu dosyalar hedef bilgisayara iletilir. rync
bu kadar akıllı yapan şey, mevcut dosyaların hangi parçalarının değiştirildiğini bulabilmesi ve yalnızca değiştirilen kısımları göndermesidir.
Dosyaları sabit sürücünüzdeki farklı bir konuma, aynı bilgisayardaki farklı bir sabit sürücüye, harici olarak bağlı bir USB sürücüsüne veya ağdan erişilebilen başka bir konuma kopyalamak için rsync
kullanabilirsiniz.
Bunun da ötesinde, rsync
isteğe bağlı olarak sembolik bağlantıları, sabit bağlantıları ve dosya sahipliği, izinler ve erişim süreleri gibi dosya meta verilerini koruyabilir. Tüm bu işlevleri desteklemek için, rsync
birçok seçeneği vardır ve hepsini çözmek zaman alır. Başlamanıza yardımcı olmak için bu 10 örneği topladık. rsync
ile yedekleme yapmak hakkında zaten yazdık, bu yüzden burada diğer kullanımlara odaklanıyoruz.
Pek çok seçeneğinin tümü için, bir rsync
komutunun yapısı basittir. Kaynağı, hedefi ve kullanmak istediğimiz seçenekleri sağlamamız gerekiyor. Muhtemelen rsync
Linux bilgisayarınızda zaten kurulu olduğunu göreceksiniz - tüm test makinelerimizde öyleydi - ama değilse, kesinlikle dağıtımınızın depolarında olacaktır.
1. Dosyaları Farklı Bir Dizine Kopyalayın
İşte bizi harekete geçirmek için basit bir örnek. Dosyaları “project-files” dizininden “Documents” dizinine kopyalayacağız. -a
(arşiv) seçeneği ve -v
(ayrıntılı) seçeneği olmak üzere iki seçenek kullanıyoruz. Ayrıntılı seçenek, rsync
, yaptığı gibi ne yaptığını açıklamasını söyler. archive
seçeneği, dosya sahipliğini ve birazdan inceleyeceğimiz diğer bazı öğeleri korur.
Komutun biçimi, options source-location destination-location
şeklindedir.
rsync -av /home/dave/project-files/ /home/dave/Documents/
“Belgeler” klasöründe ls
kullanılması, dosyaların kopyalandığını gösterir.
rsync
çalışırken dosyalar kopyalandıkça listelenir. Bize söylendi:
- Gönderilen bayt sayısı.
- Alınan bayt sayısı. Dosya aktarımı gerçekleşmeden önce,
rsync
hangi dosyaların aktarılması gerektiğini belirlemesi gerekir. Bunu yapmak için, hedefteki dosyalar hakkında bazı bilgilerinrsync
tarafından alınması gerekir. Bu bilgi alınan baytlarda bulunur. - Aktarımın hızı.
- Kopyalanan dosyaların toplam boyutu.
- "Hızlanma". Bu, toplam boyutun gönderilen ve alınan baytların toplamına oranıdır. Bu sayı ne kadar yüksek olursa, aktarım o kadar verimli olur.
Kaynak dizindeki metin dosyasını değiştirdik ve rsync
komutunu tekrarladık.
rsync -av /home/dave/project-files/ /home/dave/Documents/
Bu sefer güncellenmesi gereken tek dosya, değiştirdiğimiz metin dosyasıdır. Hızlanma rakamı şimdi 30.850'dir. Bu, tüm dosyaları kopyalamaktansa, o tek dosyanın değiştirilmiş kısmını kopyalamanın ne kadar verimli olduğudur.
-a
(arşiv) seçeneği aslında diğer seçeneklerin bir koleksiyonunu temsil eder. Bu seçeneklerin tümünü kullanmakla aynıdır:
- r : Kaynak dizindeki dizin ağaçları arasında yinelemeli olarak çalışın ve zaten mevcut değilse onları oluşturarak hedef dizine kopyalayın.
- l : Sembolik bağlantıları sembolik bağlantılar olarak kopyalayın.
- p : Dosya izinlerini koruyun.
- t : Dosya değiştirme sürelerini koru.
- g : Grup izinlerini koruyun.
- o : Dosya sahipliğini koruyun.
- D : Özel dosyaları ve cihaz dosyalarını kopyalayın. Özel dosyalar, soketler ve ilk giren ilk çıkar boruları (fifos) gibi dosyalar gibi işlem gören iletişim merkezli öğeler olabilir. Cihaz dosyaları, cihazlara ve sözde cihazlara erişim sağlayan özel dosyalardır.
Bu, o kadar sık kullanılan bir kombinasyondur ki, rsync
, hepsini çağırmanın kısa bir yolu olarak -a
(arşiv) seçeneğini sunar.
2. Bir Dizini Farklı Bir Dizine Kopyalayın
Önceki rsync
komutuna bakarsanız, kaynak dizinin dosya yolunda bir eğik çizgi “/” görürsünüz. Bu önemli. rsync
dizinin içeriğini kopyalamasını söyler. Sondaki eğik çizgiyi sağlamazsanız, rsync
dizini ve içeriğini kopyalayacaktır.
rsync -av /home/dave/project-files /home/dave/Documents/
Bu sefer dizin adı, listelendiği gibi dosya adına eklenir. Hedef dizinin içine bakarsak, kaynak klasörün içindeki dosyalarla birlikte kopyalandığını görürüz.
ls Belgeler/
ls Belgeler/proje dosyaları/
3. Bir Dizini Farklı Bir Sürücüye Kopyalayın
Dosyaları aynı sabit sürücüdeki başka bir konuma kopyalamak, sürücü arızasına karşı size koruma sağlamaz. Bu sürücü hayaletten vazgeçerse, bu dosyaların kaynak ve hedef kopyalarını kaybettiniz. Bunları başka bir sabit sürücüye kopyalamak, verilerinizi korumanın çok daha sağlam bir yoludur. Tek yapmamız gereken, hedef sürücüye doğru yolu sağlamaktır.
rsync -av /home/dave/project-files /run/mount/drive2
Diğer sabit sürücüye baktığımızda bize dizini ve dosyaların üzerine kopyalandığını gösteriyor.
ls run/mount/drive2/project-files/
İLGİLİ: Sabit Diskiniz Arızalandığında Ne Yapmalısınız?
4. Önce Kuru Çalıştırma Yapmak
rsync
dosyaları bizim için nasıl faydalı bir şekilde sileceğine bakmadan önce, rsync
nasıl kuru bir çalıştırma gerçekleştirebileceğimize bakalım.
Kuru çalıştırmada, rsync
istediğimiz eylemleri gerçekleştirme hareketlerinden geçer, ancak gerçekte bunları yapmaz. Komut yürütülseydi ne olacağını bildirir. Bu şekilde, komutun tam olarak beklediğimiz şeyi yaptığından emin olabiliriz.
Kuru çalıştırmayı zorlamak için --dry-run
seçeneğini kullanırız.
rsync -av --dry-run /home/dave/geocoder /run/mount/drive2
Kopyalanacak dosyalar bizim için listelenir ve normal istatistikleri alırız, ardından mesaj (DRY RUN)
gelir, böylece gerçekte hiçbir şey olmadığını bilebiliriz.
5. Hedef Dizindeki Dosyaları Silme
--delete
seçeneği, rsync
kaynak dizinde olmayan hedef dizindeki dosyaları ve dizinleri silmesini söyler. Bu, hedef dizinin kaynak dizinin tam bir kopyası olacağı anlamına gelir. İhtiyatlı olacağız ve önce --dry-run
seçeneğini kullanacağız.
rsync -av --delete --dry-run /home/dave/geocoder /run/mount/drive2
İki dosyanın silineceği konusunda bilgilendirildik. Silineceklerini --dry-run
seçeneğini kaldırabilir ve komutu gerçekten uygulayabiliriz.
rsync -av --delete /home/dave/geocoder /run/mount/drive2
Bu sefer dizinlerin içeriği senkronize edilir ve fazladan iki dosya silinir.
6. Kaynak Dosyaları Silme
Başarılı bir aktarımdan sonra kaynak dosyaları silmeyi seçerek rsync
bir kopyadan çok bir hareket gibi çalışmasını sağlayabilirsiniz. Aktarım başarılı olmazsa, kaynak dosyalar silinmez. Kullanmamız gereken seçenek --remove-source-files
.
rsync -av --remove-source-files /home/dave/geocoder /run/mount/drive2
Hiçbir dosya aktarılmasa bile dosyaların silinebileceğini unutmayın. Bunun nedeni, rsync
kontrol ederse ve tüm dosyalar zaten hedef dizindeyse ve rsync
yapacağı bir şey yoksa, rsync
bunu başarılı bir aktarım olarak kabul eder.
Ayrıca, rsync
dosyaları yalnızca kaynak dizinden siler. Kaynak dizini veya herhangi bir alt dizini silmez, sadece içindeki dosyaları silmez. Bunu kaynak dizinde ls
ile -R
(recursive) seçeneğini kullanarak görebiliriz.
ls -R coğrafi kodlayıcı
7. Dosyaları Uzak Bir Bilgisayara Kopyalayın
Klasörleri uzak bir bilgisayarla senkronize etmek için her iki bilgisayarda da rsync
kurulu olmalıdır. Uzak bilgisayara rsync
kullanmayı denemeden önce iki bilgisayar arasında SSH iletişimini kurun.
rsync
çalışması için uzak bilgisayarda normal bir kullanıcı olarak uzaktan oturum açabilmeniz gerekir. Oturum açmak için bir kimlik ve parola kullanmanız veya parolasız güvenli erişim için SSH anahtarları ayarlamanız önemli değildir, ancak kullanıcı olarak oturum açamıyorsanız, rsync
çalışmayacaktır. herhangi biri.
Bir parola ile oturum açarsanız, rsync
sizden parola isteyecektir. Oturum açmak için SSH anahtarlarını kullanırsanız, işlem sorunsuzdur.
Yapmanız gereken ekstra tek şey, kullanıcı hesabı adını ve uzak bilgisayarın IP adresini hedef dosya yolunun başına eklemektir. Kullanıcı adını bilgisayar adından veya IP adresinden ayırmak için “ @
” işaretini ve bilgisayar adını veya IP adresini dizin yolundan ayırmak için iki nokta üst üste “ :
” kullanın.
Test ağımızda bu iki komut eşdeğerdir.
rsync -av /home/dave/geocoder [email protected]:/home/dave/Downloads
rsync -av /home/dave/geocoder [email protected]:/home/dave/Downloads
Dosyaları yerel olarak kopyalarken bize bildirilen bilgilerin aynısını alırız.
8. Dosyaları veya Dizinleri Dahil Etme veya Hariç Tutma
Kaynak dizinde hedef bilgisayara kopyalamak istemediğiniz dosya ve dizinleriniz olabilir. --exclude
seçeneğini kullanarak bunları hariç tutabilirsiniz. Benzer şekilde, --include
seçeneğiyle belirli dosyaları ve dizinleri dahil etmeyi seçebilirsiniz.
İşin tuhaf yanı, --include
seçeneğini tek başına kullanırsanız, özel olarak dahil edilen dosyalarınız da dahil olmak üzere tüm dosyalar normal şekilde kopyalanır. Yalnızca dahil ettiğiniz dosyaları kopyalamak için -- diğer her şeyi --exclude
tutmanız gerekir.
Komutunuzda istediğiniz kadar --include
ve --exclude
seçeneklerini kullanabilirsiniz, ancak --include
seçeneklerinizi --exclude
seçeneklerinizden önce koyduğunuzdan emin olun. Ayrıca, kaynak dosya yolunuzun sonunda bir eğik çizgi olduğundan emin olun.
Bu komut, yalnızca C kaynak kodu dosyalarını ve CSV veri dosyalarını hedef bilgisayara kopyalar.
rsync -av --include="*.c" --include="*.csv" --exclude="*" /home/dave/geocoder/ /run/mount/drive2/geocoder
Kopyalanan dosyalar yalnızca bizim özellikle dahil ettiğimiz dosyalardır.
9. Aktarımdaki Dosyaları Sıkıştırın
-z
(sıkıştır) seçeneği, rsync
aktarılan dosyaları sıkıştırmasına neden olur. Ancak hedef bilgisayarda sıkıştırılmış dosyalar olarak depolanmazlar, yalnızca aktarım sırasında sıkıştırılırlar. Bu, uzun aktarımları hızlandırabilir.
rsync -avz /home/dave/geocoder /run/mount/drive2
10. İlerlemeyi İzleme
Uzun transferlerden bahsetmişken, transferin ilerlemesini görebilmemiz için bazı istatistikler ekleyebiliriz.
-P
(kısmi, ilerleme) seçeneği aslında --partial
ve --progress
iki seçenek ekler. --partial
seçeneği, bir aktarım başarısız olursa rsync
kısmen aktarılan dosyaları tutmasını söyler. Bu, aktarım yeniden başlatıldığında zaman kazandırır.
--progress
seçeneği, her dosya için, aktarılan verileri bayt olarak ve yüzde olarak, aktarım hızını, geçen süreyi, aktarılan dosyanın sayısını ve kalan dosyaların sayısını yazdırır.
rsync -aP /home/dave/geocoder /run/mount/drive2
Çıktı oldukça hızlı bir şekilde kayar ve okunması zordur. -v
(ayrıntılı) seçeneğini kaldırarak işleri biraz iyileştirebilirsiniz. O zaman bile, hızla geçerken okumak hala zor.
Genel transferin ilerlemesini izlemek genellikle daha yararlıdır. Bunu –info seçeneği ile ve parametre olarak “progress2” ileterek yapabilirsiniz.
sync -a --info=progress2 /home/dave/geocoder /run/mount/drive2
Bu, gerçekten yararlı olan bir ilerleme raporu verir.
Steroidlerdeki cp gibi
rsync
komutu hızlı, esnektir ve alışmanız için harcadığınız zamana değer. -av
seçenekleri, kaynak dizini ve hedef dizini içeren bir rsync
komutunun temel biçimini hatırlamak hiç de zor değildir.
Birçok kullanım durumu için tek ihtiyacınız olan bu. Bununla rahat olun, gerisi kolayca gelecektir.
İLGİLİ: Verileri Rsync ile Senkronize Etmeye Yeni Başlayanlar İçin Kılavuz