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.