Bir dizinin tamamını sftp ile nasıl alabilirim?


189

Sadece sftp kullanmayı öğreniyorum ve uzaktaki bilgisayardan yerel bilgisayarıma bir dizin kopyalamak istiyorum. Denersem

get [directory]

bana bu hatayı veriyor:

Cannot download non-regular file: /home/mpirocch/Documents

get -R ya da çalışmıyor.


2
Özyinelemeli put / get, 2010 yılında piyasaya sürülen 5.4'te OpenSSH'e eklendi. Sunucunuzu, birçok hata düzeltmesi ve daha iyi güvenlik özellikleri de eklediği için yükseltmeyi düşünebilirsiniz.
Lèse majesté

Yanıtlar:


266

-r(Özyinelemeli) bayrağını kullanın :

get -r *

16
Soruyu gerçekten cevaplayan bir cevap verdiğiniz için teşekkür ederiz.
jonnyflash

30
Verir:get: Invalid flag -r
ghbarratt

2
Bu da bana geçersiz bayrağı veriyor. Bunun tüm sistemlerde desteklendiğinden emin değilim.
Ben,

@Ben: Bu soruyu 2009'da sorduğumda -rbayrak yoktu. Sisteminiz güncel mi?
Matthew

15
@ silvinci mevcut tüm sistemleri değil . CentOS 6.4 ile yasadışı seçenek openssh-istemcileri-5.3p1-84.1.el6.x86_64
CrackerJack9

52

kullanın:

scp -r mpirocch@my-server:/home/mpirocch/Documents Documents

3
Bu işe yarar, ancak bunu SFTP'den yapabilmek güzel olurdu (bu yüzden kopyalamadan önce ne kopyaladığımı görebiliyorum). Mümkün mü?
Matthew

@Matthew: Sanmıyorum. Kendime bir süredir aynı soruyu soruyorum ve şu an sahip olduğum en iyi cevap scp -r. Veya Filezilla gibi gelişmiş bir SFTP istemcisi kullanabilirsiniz.
Cristian Ciupitu

1
scp -r sembolik takip edecek ...
jsleuth

5
Bazı sistemler erişime izin verebilir sftpancak scperişemez.
Turion

40

Kullanım lftp:

lftp sftp://user@host

Sonra, lftp içinde cdkopyalamak istediğiniz dizine mirrorekleyin ve seçilen dizini tekrarlı bir şekilde indirmek için bu komutu kullanın:

mirror

Bu komut seçenekleri ve argümanları kabul eder:

ayna [ SEÇENEKLER ] [ kaynak [ hedef ]]

Örneğin, -R(veya --reverse) seçeneği yerel dizin ağacını uzak dizine yüklemesine neden olur:

mirror -R

Diğer komutlar ve seçenekler için projenin sitesindeki veya Debian.org'daki kılavuzlftp(1) sayfasına bakın .


4
+1 lftp küçük bir sihir ve neşe demeti gibidir!
WCWedin

16

peki bu küçük rehber uzak bir sunucuyu lftp ile yerel klasöre yansıtmalı

lftp sftp://user:password@server.org:22 -e 'mirror --verbose --use-pget-n=8 -c /remote/path /local/path'

  • sftp:// = SFTP protokolünü kullanır
  • mirror = ayna modu
  • verbose = indirilmekte olan dosyaları gösterir
  • use-pget-n = Segment sayısı, büyük dosyaları hızlandırmak için gerçekten yararlı
  • parallel = aynı anda çarpan dosyalarını indirir

dosyaları paralel olarak indirmek istiyorsanız use-pget-n=8,--parallel=8

umarım bu uzaktaki bir klasörü yerel bir klasöre yansıtmak isteyen herkes için yardımcı olur


Teşekkürler, bu diğer yöntemler başarısız olduktan sonra (özellikle sftp'de "-r" seçeneği yok) çalıştı. Komutumun ilk bölümünün, lftp 'sftp://user:pa$$word@server.org:22' -e 'mirror --verbose --use-pget-n=8 -c /remote/path /local/path'
Jason

15

Daha iyi bir şey bulabilirseniz, sftp programını doğrudan kullanmayın. Linux için, birçok dosya yöneticisi (en azından Nautilus ve Dolphin, GNOME ve KDE yöneticileri) yerel olarak desteklenir ve her zaman sshfs vardır. Pencereler için, WinSCP var ve muhtemelen diğerleri . Tüm bunların amacı, düzenli bir dosya sistemi üzerindeymiş gibi sftp üzerinden dosyalara erişmenize izin vermektir, bu nedenle sftp üzerinden erişmenize dikkat etmeniz gerekmez.


Vay, nautilus SFTP ile çok iyi çalışıyor. Nautilus'ta bir yer imi ekledim ve şimdi hepsi gülünç derecede kolay. Teşekkürler!
Matthew

Nautilus SFTP ile performans sorunu yaşadım. Evet, gerçekten kullanışlı ama düz sftp/sshkomut satırı arayüzü ile ben (cca 100 MB / sn dosya transferleri) iken, Nautilus üzerinden 1 Gbit / s ağ doyuramadım. Demek ki konu GNU / Linux Nane'deki Nautilus idi.
stamster

13

Deneyin mgetyerine get.

Açıklama: mget olur sen kopyalamak istediğiniz dizin içinde ise çalışmak; Eğer böyle bir şey yaparsanız:

sftp> cd dir_to_get
sftp> mget *

bu dizindeki tüm dosyaları alacak. Ancak, olacak değil yinelemeli alt dizinlerindeki içeriği olsun.


1
mget benden daha iyi çalışmıyor.
Matthew

1
düzenli olmayan dosya bununla indirilemiyor
Dchris

1
Bu benim için 'get -r' nin çalışmadığı bir sistemde işe yaradı.
Tchotchke

10
get -r [directory]

alır [directory]ve her şeyin altında, nerede rözyinelemeli kısaltmasıdır. Sadece yazarak buldum helpdan sftp.


1
IMO bu, bu sorunun en iyi cevabı. :)
ramrunner

3
Bu, 29 '10 Kasından (neredeyse bir buçuk yıl önce) gelen bir cevabın kopyası .
Cristian Ciupitu

5

Olduğu gibi cp:

scp -rp user@host:/path/to/dir dir

Yukarıdakiler, orijinal dosya ve alt dizinlerin zamanlarını ve modlarını koruyacaktır. Bu özellikle yedeklerin alınması için kullanışlıdır.


Bu, temel olarak 29 Kasım 2010'da (neredeyse iki yıl önce) gelen bir cevabın kopyası .
Cristian Ciupitu

0

Ağacımın bulunduğu uzak sunucuda Java dist klasörü var:

- dist
--- Audio.jar
--- README
--- lib
----- lib.jar

Hedef: SFTP kullanmak istiyorum? Ve onları / tmp / <> içine koy.

Adım 1. sftp remoteuser @ ip

Adım 2. cd / var / tmp

Adım 2. lmkdir / tmp / dist; lmkdir / tmp / dist / lib

Adım 3. lcd / tmp / dist

4. Adım. Mget *

Adım 5. lcd / tmp / dist / lib

6. Adım. Mget *

7. adım nihayet hedefim var

$ ls
Audio.jar  lib  README.TXT
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.