2012-02-08 13:15:37 +0000 2012-02-08 13:15:37 +0000
29
29

sftp: upload alle bestanden, mappen en submappen in een map

Op machine A heb ik de map

/home/a/

Op machine B heb ik de map

/home/b/

Ik wil alle bestanden, directories en sub-directories van /home/a overzetten in /home/b met sftp Op machine A heb ik de commando’s geprobeerd:

sftp fibon82@machineB.com
put /home/a/* /home/b/

maar het werkt niet, ik krijg de foutmelding: “overslaan van niet-regulier bestand /home/a/a1”… [a1 is een sub-directory van a] Hoe zou ik de put instructie kunnen aanpassen?

Bedankt! :)

EDIT:

Ik heb het opgelost met scp:

scp -r /home/a/ fibon82@machineB.com:/home/b/

Antwoorden (6)

21
21
21
2014-10-02 20:33:25 +0000

In sftp uploadt dit commando recursief de inhoud van de huidige directory naar de externe huidige directory:

put -r .

Zie man sftp .

21
21
21
2012-02-08 22:41:19 +0000

Hoewel niet strikt gelijk aan sftp, is rsync een zeer krachtig alternatief voor scp en sftp, vooral bij het bijwerken van de kopieën van machine A naar machine B, omdat het de bestanden die niet gewijzigd zijn niet kopieert; het is ook in staat om bestanden van machine B te verwijderen die verwijderd zijn van machine A (alleen wanneer het daartoe opdracht krijgt natuurlijk).

In jouw geval zou de syntax

rsync -zrp /home/a/ user@remote.host.com:/home/b/

zijn De -r optie is voor het recursief kopiëren van bestanden, -z zet compressie aan tijdens de overdracht, en -p behoudt de bestandspermissies (aanmaken, bewerken, etc.) tijdens het kopiëren, iets wat scp niet doet AFAIK. Er zijn nog veel meer opties mogelijk; zoals gewoonlijk, lees de man pagina’s.

10
10
10
2012-02-08 16:04:32 +0000

scp (secure copy) is de Linux de facto voor het overzetten van bestanden over een beveiligde tunnel. In jouw geval zou je de recursieve switch willen gebruiken, bijv:

scp -r /home/a/ user@remote.host.com:/home/b/
4
4
4
2014-01-04 14:02:14 +0000

Probeer het met

put -r /home/a/ /home/b/

voor meer info kijk op: dit

0
0
0
2017-10-05 13:53:58 +0000

Eigenlijk zou put -r moeten werken. Maar de bestemmingsfolder moet aanwezig zijn op je remote host:

sftp> put -r sourcefolder
 Uploading sourcefolder/ to /user/folder
 Couldn't canonicalize: No such file or directory
 ....
sftp> mkdir sourcefolder
sftp> put -r sourcefolder
 Uploading sourcefolder/ to /user/folder/sourcefolder
 Entering sourcefolder/
 sourcefolder/file1
 sourcefolder/file2
-1
-1
-1
2014-02-14 10:10:51 +0000

In mijn geval was rsync niet mogelijk dus gebruikte ik:

mput -rp /home/a/ /home/b/