Bagaimana cara beberapa folder FTP ke server lain menggunakan mput di Unix?

18

Saya masuk di server (menggunakan Putty). dari sana saya terhubung menggunakan FTP ke server lain. Saya ingin menyalin beberapa folder dari server pertama ke server kedua menggunakan mput.

Suka:

ftp> mput folder1 folder2 folder3

Tapi saya mendapatkan "folder1: bukan file biasa." ... dan seterusnya. Masing-masing folder ini memiliki subfolder, file (beberapa biner, beberapa tidak).

Bagaimana saya bisa mencapai apa yang saya inginkan tanpa zip barang dan kemudian mentransfer?

7ochem
sumber

Jawaban:

19

Baris perintah FTP sangat primitif.

Anda tidak dapat secara rekursif mengirim file / folder ke situs jarak jauh.

Jika Anda ingin membuat kembali struktur direktori di sisi yang jauh sama dengan lokal, Anda perlu secara manual mkdirsetiap jalur dan gunakan mput *untuk mengirim semua yang ada di direktori itu ke sisi yang jauh.

Dua opsi untuk mempermudah ini:

  1. Berhenti menggunakan perintah FTP primitif (ncftp adalah alternatif yang baik)

  2. Gunakan tar untuk membuka folder, mengirim file dan mengekstrak di sisi yang jauh.

Philip Reynolds
sumber
1
+1 untuk tar-> put-> untar
dave
1
-1 Karena pertanyaan bertanya "Bagaimana saya bisa mencapai apa yang saya inginkan tanpa zip barang-barang dan kemudian mentransfer?", Menyiratkan bahwa orang itu tidak memiliki akses shell ke mesin jarak jauh.
Steen Schütt
11

Ini tidak mungkin dengan program ftp normal karena mput tidak menggunakan rekursi. Anda dapat menggunakan ncftp dan kemudian memanggil 'folder mput -r'.

Salam hangat, Fabian

halfdan
sumber
Itulah yang saya lakukan baru-baru ini di kotak RHEL 5. Dalam paket EPEL, yang dapat dieksekusi bernama ncftpput.
Suppressingfire
Tidak dapat mengubah apa pun di konfigurasi server. Saya hanya pengguna ...
Itu tergantung pada klien Anda. Bukan di server.
halfdan
Saya lebih suka melakukannya dengan cara ini. Terima kasih.
Mojtaba Rezaeian
11

Saya membuat skrip 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

dan menyebutnya dengan

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

sepertinya berhasil.

Stein Åsmul
sumber
0

Secure Copy scp memiliki flag rekursif -r yang mungkin berguna bagi Anda.

Michael
sumber
Pertanyaannya adalah tentang akses ftp sederhana .. bukan scp / sftp!
Mojtaba Rezaeian
-1

buka cd powershell ke direktori yang ingin Anda unggah jalankan perintah berikut:

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

Rekatkan hasilnya ke jendela ftp Anda. Nikmati. Juga jangan lupa menambahkan mput * untuk mentransfer semua file dari direktori dasar.

Pelajari Powershell
sumber
6
Sejak kapan PowerShell berjalan pada sistem Unix?
Michael Hampton