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

sftp: przesyłanie wszystkich plików, katalogów i podkatalogów znajdujących się w folderze

Na maszynie A mam folder

/home/a/

Na maszynie B mam folder

/home/b/

Chciałbym przenieść wszystkie pliki, katalogi i podkatalogi z /home/a do /home/b za pomocą sftp Na maszynie A próbowałem komendy:

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

ale to nie działa, dostaję komunikat o błędzie: “skipping non-regular file /home/a/a1”… [a1 jest podkatalogiem a] Jak mógłbym zmodyfikować instrukcję put?

Dzięki! :)

EDIT:

Rozwiązałem używając scp:

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

Odpowiedzi (6)

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

W sftp to polecenie rekursywnie przesyła zawartość bieżącego katalogu do zdalnego bieżącego katalogu:

put -r .

Patrz man sftp .

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

Chociaż nie jest to odpowiednik sftp, rsync jest bardzo potężną alternatywą dla scp i sftp, szczególnie przy aktualizowaniu kopii z maszyny A na maszynę B, ponieważ nie kopiuje plików, które nie zostały zmienione; jest również w stanie usunąć pliki z maszyny B, które zostały usunięte z maszyny A (oczywiście tylko wtedy, gdy mu się to powie).

W twoim przypadku składnia byłaby następująca:

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

Opcja -r służy do rekursywnego kopiowania plików, -z włącza kompresję podczas transferu, a -p zachowuje uprawnienia do plików (tworzenie, edycja, itp.) podczas kopiowania, co jest czymś, czego scp nie robi AFAIK. Możliwych jest wiele innych opcji; jak zwykle, przeczytaj strony man.

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

scp (secure copy) jest linuksowym de facto sposobem na przesyłanie plików przez bezpieczny tunel. W twoim przypadku chciałbyś użyć przełącznika rekursywnego, np:

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

Spróbuj użyć

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

po więcej informacji sprawdź: to

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

Właściwie, put -r powinno zadziałać. Ale folder docelowy musi być obecny na twoim zdalnym hoście:

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

W moim przypadku rsync nie było możliwe, więc użyłem:

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