Uzak sunucudan yerel makineye rsync kullanarak dosya kopyalama


319

Uzak sunucuma ssh'd yaptıktan sonra, bir dizindeki tüm dosyaları makinemdeki yerel bir dizine kopyalamak için komut ne olurdu?


4
Çünkü rsyncdoğrudan yerel makinenizden yapabilirsiniz.
Johnsyweb

2
Oh ... evet yapabilirim. Şimdi diğer cevapları görüyorum. Teşekkürler.
markstewie

17
Bu, iyi bir cevapla (web) geliştirme için ortak bir görevdir. Neden hala kapalı olduğunu anlamıyorum.
d.raev

6
D.raev soru gerçeği atıfta bulundu @ Bence konu dışı olarak kapalı (eğer doğru geri çağırmak bu soruyu olman için bayraklı göç yoktu doğrusu bundan daha ben daha iyi uyuyor düşünüyorum süper kullanıcı için) hiçbir kabul cevap . Yine de ... bu kadar zamandan sonra cevabımı kabul ettirmek güzeldi. :-)
Johnsyweb

3
@markstewie hiçbir kötü duygular, bu iyi bir soru ve bana yardımcı oldu (çok diğerleri gibi görünüyor) ama bu "kapalı" o layık güven görünmüyor bu yüzden biraz dikkat getirmek için kazandı.
d.raev

Yanıtlar:


575

Yerel makinenizden:

rsync -chavzP --stats user@remote.host:/path/to/copy /path/to/local/storage

Standart olmayan bir ssh bağlantı noktasına sahip yerel makinenizden:

rsync -chavzP -e "ssh -p $portNumber" user@remote.host:/path/to/copy /local/path

Veya uzaktaki ana bilgisayardan, gerçekten bu şekilde çalışmak istediğinizi ve yerel makinenizin SSH'yi dinlediğini varsayarsak:

rsync -chavzP --stats /path/to/copy user@host.remoted.from:/path/to/local/storage

Genel man rsyncanahtarlarımın açıklaması için bkz .


255
Komutun açıklaması: explainshell.com/…
beefsack

118
Vay canına bu açıklama sitesi harika.
gosukiwi

2
@cmcdragonkai: aslında, yerel ana bilgisayar bir ssh sunucusu çalıştırıyor olmalı ve uzak ana bilgisayar tarafından erişilebilir olmalıdır. İlk çözümü ikincisine tercih etmemin nedenlerinden biri de bu.
Johnsyweb

16
Sondaki eğik çizgilerle tekrar senkronize ederken dikkatli olun. Johnnysweb tarafından verilen komut içeride kopya adı verilen bir dizin oluşturur /path/to/local/storage. Böyle /path/to/local/storage/copy. Eğer harika bir şey istiyorsan. Ancak, daha yaygın bir senaryo, uzak dizinin içeriğini yerel bir dizine kopyalamak istemenizdir. Ardından , yerel bir kopya dizini oluşturmadan /path/to/copy/içeriği dizinin içine yerleştirirsiniz /path/to/local/storage.
chap

16
Buraya rsync komutu için geldim ve explainshell.com ile birlikte geldim . Teşekkürler @beefsack!
Cyphase

49

SSH erişiminiz varsa, önce SSH'ye ve sonra kopyalamanıza gerek yoktur, sadece hedeften Güvenli Kopyalama (SCP) kullanın .

scp user@host:/path/file /localpath/file

Joker karakterler desteklenir, bu nedenle

scp user@host:/path/folder/* /localpath/folder

Bu klasördeki tüm uzak dosyaları kopyalar. Birden fazla dizini kopyalarsanız.

note -r tüm alt klasörleri ve içeriği de kopyalar.


6
Neden kullanmak scpyerine rsync? Ayrıca, kabuğunuzun user@host:/path/folder/*belki de tek tırnak ( ') kullanarak genişlemeye çalışmadığını izleyin .
Johnsyweb

Ben scp hedeften kullanımı daha kolay buluyorum .... Aslında ssh üzerinden dosya kopyalama, ama dışarı ssh bağlantısı kurmak zorunda.
Tezyn

8
Ne olduğunu biliyorum scp, bu benim sorum değildi. Neden kullanmadın rsync? Sorunun istediği budur, yerleşik bir SSH oturumu gerektirmez ve genellikle daha hızlı ve daha verimlidir scp.
Johnsyweb

26
Unutmayın, scp kopyalamak yerine simgeleri takip eder. Bu, beklediğinizden daha fazla ve sembolik bağlantı kaybına yol açabilir (normal klasörler / dosyalar haline gelir).
Mondane

2
Mondane'ın yanıtı bu yazıyı bulmamın nedeni. Normalde, her şey için scp kullanıyorum, ancak sunucudan sunucuya izinleri ve symlink'i korumam gerekiyordu. Ayrıca, hız farkı (bc benim acemi kendini kesinlikle scped ilk) geniş.
kyle
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.