Rsync yerine scp kullanmak için bir neden var mı?


62

Kullanmak için bir neden var mı scpyerine rsync? Ben kullanmak için hiçbir neden görebilirsiniz scp, asla rsyncher şey yok scpdaha güvenli olan, yaptığı (vb sembolik koruyabilir).


6
Kısa cevap: Hayır. Scp asla zararlı değildir.
Shadur

2
@Shadur scp, var olan hedef dosyalarının üzerine varsayılan olarak yazar. Yani, rsync, ama en azından olası hasarın sınırlandırılmasına izin veriyor -u.
Gilles 'SO- kötülük olmayı'

3
@Gilles Her araçta olduğu gibi, ne yaptığını ve onu güvenle kullanmak için nasıl yaptığını anlamalısınız.
Alex Chamberlain,

8
Bu bağlamda, düzenli cpve rm"zararlı" olarak kabul edilir - ve eğer "aptalca bir şey yaparsam beni mahvedebilir" olarak tanımlarsanız, rsyncdaha az zararlı olmaz.
Shadur

1
rsyncYüklü olmayan sistemlerde , rsynckullanımı (tabii ki) bile mümkün değildir.
Kusalananda

Yanıtlar:


46

scp, dosyaları güvenli bir SSH bağlantısı üzerinden bir makineden uzak makineye kopyalamak için cp benzeri bir yöntem sunar.

rsync uzak klasörleri senkronize etmenizi sağlar.

Bunlar farklı programlardır ve her ikisinin de kullanımları vardır. scp her zaman güvenlidir, oysa, rsync güvenli olması için SSH üzerinden seyahat etmelidir.


9
Ayrıca, rsync'in diğer ucuna kurulması gerektiğinden emin olun.
ckhan

3
@ckhan, hayır, diğer tarafta yüklü bir şey olmadan kopyalayamaz, sadece daha az verimli olur.
mikebloch

2
Scp'nin sadeliğini seviyorum.
Alex Chamberlain

2
@mikebloch Bunu nasıl yapıyorsun? Yeni bir özellik mi? 3.0.9 sürümünü kullanarak bunu denedim. ve rsyncuzaktan bulamadı şikayet etti .
Alexios

1
@mikebloch, sunucuya çok fazla cpu yükü ekleyebilecek sağlama toplamı hesaplamaları yapmak için sunucuya kurulmalıdır. Bu nedenle çoğu büyük site bunu desteklemiyor ve neden zsyncalternatif olarak oluşturuldu.
psusi

19

Ana şeylerden biri (kimsenin bahsetmediğini düşünüyorum) büyük miktarda veri veya dosya aktarıyorsanız ve herhangi bir nedenle tamamlamadan önce aktarımın kesilmesi durumunda, rsync'in kaldığı yerden alacağıdır. Oysa scp yok.

Bir veya birkaç dosya veya dizini aktarmak istersem scp kullanıyorum. Çoklu GB boyutlu veriler için rsync'e gidiyorum.


3
--partialBüyük dosyaları aktarırken bayrağın faydalı olduğunu eklemeye değebilir . rsyncdosyayı yeniden başlatmak yerine dosyanın içinde bıraktığı yeri seçer.
Flup

@Flup'ın belirttiği gibi, --partial seçeneğini kullanmazsanız, rsync herhangi bir aktarma dosyasını etrafınızda bırakmayacaktır. Bu dosyalar varsayılan olarak hedef dizinde gizlidir. Bu dosyaların tümünü tek bir dizine koymak için --partial-dir kullanabilirsiniz.
Lester Cheung

Bunu rsync -vP username@host:/path/to/file .da yapacağım. Bu Bkz cevabı üzerine Stackoverflow
Devesh Saini

9

rsync : Deltaları aktarır ( Delta Transfer Algoritmasını kullanarak ):

  1. yerel ve uzak ana bilgisayarlar

scp : Tüm dosyaları aktarır :

  1. yerel ve uzak ana bilgisayarlar
  2. uzak ve uzak ana bilgisayarlar

Özet: scpdosyaları rsyncdesteklemese de iki uzak ana bilgisayar arasında aktarabilir .


rsync, iki uzak ana bilgisayar arasında dosya aktarabilir. Aslında, rsync a host:beşittir scp a host:b.
brandizzi

Ben yazdım, rsync yerel ve uzak ana bilgisayarlar arasında deltaları aktarabilir, ancak scp sadece bununla sınırlı değildir, iki uzak ana bilgisayar arasında deltaları aktarabilir. @brandizzi
Saini

2

Kullanıcı Webhosting Talk'taki Chris yazıyor:

rsyncDosyaları her bir uçta karşılaştırır ve yalnızca değiştirilen dosyaların değişen kısımlarını aktarır. İlk timeo'yu transfer ettiğinizde oldukça benzer davranır scp, ancak çoğu dosyanın değişmediği ikinci bir transfer için, çok daha az veriyi zorlar scp. Ayrıca başarısız transferleri yeniden başlatmanın uygun bir yoludur - sadece aynı komutu yeniden gönderirsiniz ve bir süre önce kaldığı yerden devam eder, oysa scpsıfırdan baştan başlar.


0

scpdaha az argüman alır gibi kullanımı daha kolaydır. rsyncEğer sadece bir dosyayı transfer edersem, selp'mi scp kullanarak yakalarım . Muhtemelen rsync için bir takma ad tanımlamak için tembelim ... ;-)


1
Hmmm, neden böyle? rsync a host:beşittir scp a host:b, aynı sayıda argüman.
mikebloch

1
@mikebloch Yazmak için iki harf daha ... ;-) Geçmişte uygun sonucu elde etmek için "-e ssh -a" vermem gerekiyordu. Şimdi bu "-e ssh" varsayılandır, bu farklı bir oyun olabilir.
Nils,

0

Https://gist.github.com/KartikTalwar/4393116 adresinden @tomrunia'ya Krediler

rsync -aHAXxv --numeric-ids --delete --progress \
  -e "ssh -T -c aes128-gcm@openssh.com -o Compression=no -x" \
  [source_directory] user@hostname:[target_directory]/

Dikkat et --delete, yabancı dosyaları dest dizinlerinde tutmak istiyorsan kullan.

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.