"Scp" nin rsync'ten farkı nedir?


241

Ghost blogging kurulumuyla ilgili bir makale scp, yerel makinemden uzak bir sunucuya kopyalamak için kullanıldığını söylüyor :

scp -r ghost-0.3 root@*your-server-ip*:~/

Bununla birlikte, Railscast 339: Chef Solo Basicsscp ters yönde kopyalamak için kullanır (uzak sunucudan yerel makineye):

scp -r root@178.xxx.xxx.xxx:/var/chef .

Aynı Railscast'te, yazar dosyaları uzak sunucuya kopyalamak istediğinde (ilk örnekle aynı yönde) şunları kullanır rsync:

rsync -r . root@178.xxx.xxx.xxx:/var/chef

Her iki yönde de kopyalanacaksa neden rsynckomutu kullanasınız scp? Nasıl mu scpfarklı rsync?


daha basit ve her zaman şifreli olmak dışında, hiç kimse scp "rsync -aA" daha iyi yapabileceği bir şey işaret etmedi. i tercih "rsync -aAX --delete kaynak dest". iki yönlü senkronizasyon için ödeme bsync.
Tomachi

Yanıtlar:


345

Bu araçlar arasındaki en büyük fark dosyaları nasıl kopyaladıklarıdır.

scptemelde kaynak dosyayı okur ve hedefe yazar. Yerel olarak veya bir ağ üzerinden düz doğrusal bir kopya gerçekleştirir.

rsyncayrıca dosyaları yerel olarak veya bir ağ üzerinden kopyalar. Ancak , işlemi çok daha hızlı hale getirmek için özel bir delta aktarım algoritması ve birkaç optimizasyon kullanır. Aramayı düşünün.

rsync A host:B
  • rsyncdosya boyutları ve her iki modifikasyonu damgalarını kontrol edecek A ve B , ve eğer eşleşirse sonraki işlemler atlayın.

  • Hedef dosya B zaten mevcutsa, delta aktarım algoritması kablo üzerinden sadece A ve B arasındaki farkların gönderildiğinden emin olur .

  • rsyncverileri geçici bir T dosyasına yazar ve güncellemenin B kullanıyor olabilen işlemlere "atomik" görünmesini sağlamak için hedef dosya B'yi T ile değiştirir .

Aralarındaki bir diğer fark, istila ile ilgilidir. rsynckullanıcının davranışlarına ince ayar yapmasına izin veren çok sayıda komut satırı seçeneği vardır. Karmaşık filtre kurallarını destekler, toplu modda, daemon modunda çalışır, vb. scpSadece birkaç anahtar vardır.

Özet scpolarak günlük işleriniz için kullanın . İnteraktif kabuğunuzda arada bir yazdığınız komutlar. Kullanımı daha basittir ve bu durumlarda rsyncoptimizasyonlar pek yardımcı olmaz.

cronİşler gibi yinelenen görevler için kullanın rsync. Daha önce de belirtildiği gibi, birden çok çağrıda aktarılan verilerden faydalanacak, çok hızlı performans gösterecek ve kaynaklardan tasarruf edecektir. İki dizini bir ağ üzerinden senkronize tutmak için mükemmel bir araçtır.

Ayrıca, büyük dosyalarla uğraşırken rsync, -Pseçenekle birlikte kullanın. Aktarım yarıda kesilirse, komutu yeniden vererek aktarımın durduğu yerden devam edebilirsiniz. Sid Kshatriya'nın cevabına bakınız .


14
Günlük görevleriniz için scp kullanmayı söylüyorsunuz. Açıklamanızdan ve OP'den, seçeneksiz kullanıldığında iki aracın arayüzünün aynı olduğu anlaşılıyor. Rsync'in üstün uygulaması varsa ve arayüzler aynı ise, neden her zaman rsync kullanmıyorsunuz?
Alex

5
Arabirimleri seçenekler olmadan bile aynı değildir. Rsync, kaynak bağımsız değişkeni üzerindeki bir eğik çizginin özel bir yorumuna sahiptir (dizinin kendisini içerikleriyle senkronize eder). Başka yakaları olabilir, emin değilim.
Rafa

2
Ayrıca, scpUnix benzeri bir sistemde mevcut olma ihtimalinin daha yüksek olduğunu tahmin ediyorum .
Rafa

2
@ erikb85 rsync, bir ilerleme çubuğu görüntüleyecek ve kısmen tamamlanmış bir aktarımdan devam etmeyi sağlayan -P bayrağına sahiptir. digitalocean.com/community/tutorials/…
Ben

1
Değiştirme sürelerini ve izinlerini korumak için scpve rsync: rsync -aile arasındaki diğer bir arayüz farkı scp -rp
Rafa

71

rysnc, yavaş ve güvenilir olmayan bağlantılarda çalışmak için yararlı olabilir. Yani indirme işleminiz büyük bir dosyanın ortasında durursa rysnc tekrar çağrıldığında kaldığı yerden devam edebilecektir.

kullanım rsync -vP username@host:/path/to/file .

-P seçeneği kısmen indirilen dosyaları korur ve ayrıca ilerleme gösterir.

Her zamanki gibi kontrol man rsync


32

Farklı parametrelerde b / w scp ve rsync farkı

1. Gecikme süresi üzerindeki performans

  • scp : scp nispeten daha az optimizasyon ve hız

  • rsync : rsync nispeten daha optimize ve hızlıdır

https://www.disk91.com/2014/technology/networks/compare-performance-of-different-file-transfer-protocol-over-latency/

2. Kesinti işleme

  • scp : scp komut satırı aracı, kayıp ağ bağlantılarından durdurulmuş indirme işlemlerine devam edemiyor

  • rsync: Yukarıdaki rsync oturumunun kendisi kesintiye uğrarsa, aynı komutu yazarak oturuma istediğiniz kadar devam edebilirsiniz. rsync aktarımı kaldığı yerden otomatik olarak yeniden başlatır.

http://ask.xmodulo.com/resume-large-scp-file-transfer-linux.html

3. Komut Örneği

scp

$ scp source_file_path destination_file_path

rsync

$ cd /path/to/directory/of/partially_downloaded_file
$ rsync -P --rsh=ssh userid@remotehost.com:bigdata.tgz ./bigdata.tgz 

-PSeçenek aynıdır --partial --progresskısmen indirilen dosyalarla çalışmaya rsync'i izin. --rsh=sshSeçenek uzak kabuk olarak kullanımı ssh rsync'e.

4. Güvenlik:

scp daha güvenlidir. Bunu rsync --rsh=sshscp kadar güvenli hale getirmek için kullanmalısınız .

daha fazla bilgi için adam belgesi:

performans tablosu


Bu yeni yanıt için, özellikle güvenlik bölümü için teşekkürler.
zhihong

birçok sistemde ssh varsayılan olarak kullanılır. serverfault.com/questions/378939/do-you-need-e-ssh-for-rsync
qwr

2
Güvenlik hakkında, openSSH 8.0 sürüm notlarından : The scp protocol is outdated, inflexible and not readily fixed. We recommend the use of more modern protocols like sftp and rsync for file transfer instead.
downtheroad

6

Bir büyük özelliği rsyncüzerinde scp(yanında delta algoritması ve şifreleme w / ssh kullanılırsa) otomatik olmasıdır doğrular transfer dosyası doğru havale edilmiş ise. Scp bunu yapmaz, bu da zaman zaman daha büyük dosyaları aktarırken bozulmaya neden olabilir. Yani rsync genel olarak garantili bir kopyadır .

Centos manajlarında bu --checksumseçenek açıklamasının sonu belirtilmektedir :

Rsync'in her zaman, aktarılan her dosyanın, dosya aktarılırken oluşturulan bir tam dosya sağlama toplamını kontrol ederek alıcı tarafında doğru bir şekilde yeniden yapılandırıldığını doğruladığını, ancak otomatik aktarım sonrası doğrulamanın bu seçeneğin öncesiyle ilgisi olmadığını unutmayın. the-transfer “Bu dosyanın güncellenmesi gerekiyor mu?” Kontrol.


5

Her scpzaman ssh (güvenli kabuk) ile rsyncşifrelenmiş, ancak mutlaka şifrelenmemiş bir ayrım var . Daha spesifik olarak, rsynckendi başına herhangi bir şifreleme gerçekleştirmez; hala şifreleme yapmak için diğer mekanizmaları (örneğin ssh) kullanabilir.

Güvenliğe ek olarak, şifrelemenin CPU'nun ek yükünün yanı sıra aktarım hızınız üzerinde de büyük bir etkisi vardır. (Deneyimlerim, bundan rsyncdaha hızlı olabileceğidir scp.)

Şifreleme açık olduğunda bu gönderiye göz atın rsync.


1

scp bir dosya için en iyisidir .
VEYAtar küçük kaynaklara sahip kaynak kodu ağaçları gibi küçük veri kümeleri için bir sıkıştırma ve sıkıştırma kombinasyonu ( örn : görüntüler, sqlite vb. ).


Ancak , daha büyük hacimlerle uğraşmaya başladığınızda şunları söyleyin:

  • ortam klasörleri (40 GB)
  • veritabanı yedekleri (28 GB)
  • mp3 kitaplıkları (100 GB)

Barındırılan sunucunun fiziksel sınırlarına bu noktada scp ile aktarmak için bir zip / tar.gz dosyası oluşturmak pratik olmaz .

Bir egzersiz olarak, bazı yapabilirsiniz jimnastik boru gibi tariçine sshve içine sonuçlarını yönlendirme uzaktan dosyası. (bir takas veya geçici klon inşa edilmesi gereğinin tasarruf aka zip veya tar.gz)

Ancak ,

rsync bu işlemi basitleştirir ve ek disk alanı kullanmadan veri aktarmanıza olanak tanır .

Ayrıca ,

Sürekli (cron?) Güncellemeler, tam klonlanmış kopyalara karşı asgari değişiklikler kullanır ve zaman içinde büyük veri geçişlerini hızlandırır.

tl; dr
scp == küçük ölçek (aynı sürücüde sıkıştırılmış dosyalar oluşturmak için yer ile)
rsync== büyük ölçek (büyük verileri yedekleme ihtiyacı ve boş yer olmaması)


-1

pratik bir bağlamda düşünmek daha iyidir. Ekibimizde, rsync -aPkümemizdeki kötü bir cassandra sunucusunu değiştirmek için kullanıyoruz . Bunu scp (yavaş ve ilerleme koruması yok) ile yapamayız.


Diğer cevaplarda henüz bahsedilmeyen bir şey getirmemek. Ayrıca konu dışı soruları bile yanıtlamamalıyız.
Dan Cornilescu

1
@DanCornilescu bu gerçek bir senaryoda bir kullanım durumunu açıklar, bu da başkalarının farkı anlamasını kolaylaştırır. Başka benzer cevap görmüyorum
del bao

2
Sid ve Rafa'nın cevaplarında -P açıklamaları ve yavaşlık / hız ile ilgili notlara bakınız.
Dan Cornilescu
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.