Jak przesłać wiele folderów na inny serwer za pomocą mput w Uniksie?


18

Jestem zalogowany na serwerze (za pomocą Putty). stamtąd łączę się za pomocą FTP z innym serwerem. Chcę skopiować kilka folderów z pierwszego serwera na drugi serwer za pomocą mput.

Lubić:

ftp> mput folder1 folder2 folder3

Ale dostaję „folder1: nie zwykły plik.” ... i tak dalej. Każdy z tych folderów ma podfoldery, pliki (niektóre binarne, inne nie).

Jak mogę osiągnąć to, czego chcę, bez spakowywania plików i przesyłania?

Odpowiedzi:


19

Wiersz poleceń FTP jest dość prymitywny.

Nie można rekurencyjnie wysyłać plików / folderów do zdalnej witryny.

Jeśli chcesz odtworzyć strukturę katalogów po stronie zdalnej tak samo jak lokalną, musisz ręcznie mkdirkażdą ścieżkę i użyć, mput *aby wysłać wszystko w tym katalogu do strony zdalnej.

Dwie opcje, aby to ułatwić:

  1. Przestań używać pierwotnej komendy FTP (ncftp jest dobrą alternatywą)

  2. Użyj tar, aby uporządkować foldery, wysłać plik i rozpakować go z drugiej strony.


1
+1 dla tar-> put-> untar
dave

1
-1 Ponieważ pytanie brzmi: „Jak mogę osiągnąć to, co chcę, bez spakowania plików i przesłania?”, Co oznacza, że ​​dana osoba nie ma dostępu do powłoki na zdalnym komputerze.
Steen Schütt

11

Nie jest to możliwe w przypadku zwykłego programu ftp, ponieważ mput nie używa rekurencji. Możesz użyć ncftp, a następnie wywołać „folder mput -r”.

Najlepsze życzenia, Fabian


To właśnie zrobiłem ostatnio na pudełku RHEL 5. W pakiecie EPEL plik wykonywalny nosi nazwę ncftpput.
Suppressingfire,

Nie można nic zmienić w konfiguracji serwera. Jestem tylko użytkownikiem ...

To zależy od twojego klienta. Nie na serwerze.
halfdan

Wolę to robić w ten sposób. Dziękuję Ci.
Mojtaba Rezaeian

11

Zrobiłem skrypt bash:

#!/bin/bash
ftp_site=ftp.yoursite.net
username=my_user_name
passwd=my_password
remote=/path/to/remote/folder
folder=$1
cd /path/to/local/folder/$folder
pwd
ftp -in <<EOF
open $ftp_site
user $username $passwd
mkdir $remote/$folder
cd $remote/$folder
mput *
close
bye

i nazwał to z

find . -type d -exec ./recursive-ftp.sh {} \;

wydaje się działać.


0

Bezpieczne kopiowanie scp ma flagę rekurencyjną -r, która może okazać się przydatna.


Pytanie dotyczy prostego dostępu do ftp ... nie scp / sftp!
Mojtaba Rezaeian

-1

otwórz cd programu PowerShell w katalogu, który chcesz załadować, uruchom następujące polecenia:

1. gci -r | % {if ($_.PSIsContainer) {$t = $((($_.fullname -split "\\")[$(((pwd) -split "\\").length)..200]) -join "/"); "mkdir ""$t""`r`nmput ""$t/*"" ""$t"""}} | sc .\mput_all
2. notepad .\mput_all

Wklej wyniki do okna ftp. Cieszyć się. Nie zapomnij również dodać mput *, aby przenieść wszystkie pliki z katalogu podstawowego.


6
Od kiedy PowerShell działa w systemie Unix?
Michael Hampton
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.