2009-10-20 14 views
14

implementieren Befehlszeile sftp in meinem Ubuntu hat keine rekursive setzen implementiert. Ich habe 2004 eine Debatte über die Implementierung eines solchen Features mit -R Optionsschalter gefunden. Ich sehe also eine Art selbstgemachte Rekursion als einzige Option.Wie rekursive in sftp

Ie.

  • Iterierte durch Verzeichnisliste
  • cd in Verzeichnisse
  • mkdir sie, wenn nicht vorhandene
  • Put-Dateien

Ich plane dies mit bash auf tun, aber jede andere Sprache würde genügen, .

Rsync oder scp ist keine Option, da ich keinen Shell-Zugriff auf den Server habe. Nur sftp.

+1

Blick auf meine Antwort auf die Lösung mit lftp –

+0

warum für scp notwendig Shell-Zugang ist? – user102008

Antwort

16

Betrachten Sie lftp. Es ist ein leistungsfähiger Dateiübertragungsclient, der ftp, ftps, http, https, hftp, Fisch (Dateiübertragung über ssh shell Sitzung) und sftp unterstützt. Es hat eine ftp-ähnliche interaktive Schnittstelle, ermöglicht aber auch die Angabe aller Befehle in der Befehlszeile. Schauen Sie sich mput (nicht rekursive aber Griffe glob Muster) und mirror (armer Mann rsync) Befehle.

Ich benutze es mit einem Server, der nur SFTP Uploads wie folgt behandelt:

lftp -c "open -u $MYUSER,$MYPASSWORD sftp://$TARGET ; mirror -R $SOME_DIRECTORY" 
+0

Danke, lftp scheint den Job zu machen. Zum Glück habe ich nicht die gleichen Einschränkungen, die ich in '09 hatte :) – aarreoskari

0

Ich denke, Sie können dies mit Bash tun, aber es wird eine Menge Arbeit sein. Stattdessen schlage ich vor, einen Blick auf Python and the Chilkat library zu werfen.

0

In Java können Sie edtFTPj/PRO, unser kommerzielles Produkt, rekursiv über SFTP übertragen. Alternativ können Sie SCP in Erwägung ziehen, das im Allgemeinen Rekursion unterstützt und SSH ausführt.

0

Wie wäre es mit sshfs?

Kombiniert natürlich mit cp -r.

Oder, wenn das nicht funktioniert, rsync -r an sich.

+0

Zitat von der Frage: "Rsync oder scp ist keine Option, weil ich Shell-Zugriff auf den Server nicht habe. Nur sftp." Sshfs erfordert SSH-Zugriff und ich habe nur sftp. – aarreoskari

+0

Huh. Ich habe noch nie gehört, dass ich ohne ssh-Zugang sftp-Zugang habe, also denke ich, dass mein Gehirn diesen Teil ignoriert hat. Du könntest immer noch sshfs ausprobieren. Ich weiß eigentlich nicht, ob es von ssh oder sftp funktioniert. Wenn Sie GNOME oder KDE verwenden, können Sie einfach sftp-Pfade in ihre jeweiligen Dateibrowser eingeben. –

0

Nach vielen googeln und guten Antworten habe ich Transmit Synchronisierung für den Job verwendet. Keine gute Lösung, aber macht den Job.

2

Die GUI FTP-Client FileZilla unterstützt auch SFTP und unterstützt auch das Hochladen und Herunterladen während Verzeichnisse.

1

In der Befehlszeile können Sie das mit dem putty-tools Paket tun. Es kommt mit einem sftp Ersatz namens psftp.

Es unterstützt mput -r, die ein lokales Verzeichnis rekursiv auf die Remote kopiert.

2

Während ich denke, dass Lftp die beste Option ist, wenn es verfügbar ist, steckte ich auf einer alten Installation von Cent OS und musste eine rekursive setzen nur via SFTP.Hier ist, was ich getan habe:

find dir -type d -exec echo 'mkdir {}' \; | sftp [email protected] 
find dir -type f -exec echo 'put {} {}' \; | sftp [email protected] 

Also im Grunde stellen Sie sicher, dass alle Verzeichnisse vorhanden sind und dann senden Sie die Dateien über.

1

mein ubuntu 12.04 kommt mit put -r in SFTP