Як FTP кілька папок на інший сервер за допомогою mput в Unix?


18

Я входив на сервер (за допомогою Putty). звідти я підключаюсь за допомогою FTP до іншого сервера. Я хочу скопіювати кілька папок з першого сервера на другий сервер за допомогою mput.

Подобається:

ftp> mput folder1 folder2 folder3

Але я отримую "папку1: не простий файл." ... і так далі. Кожна з цих папок має підпапки, файли (деякі бінарні, деякі ні).

Як я можу виконати те, що хочу, не перекладаючи речі, а потім передати?

Відповіді:


19

Командний рядок FTP досить примітивний.

Ви не можете рекурсивно надсилати файли / папки на віддалений сайт.

Якщо ви хочете відтворити структуру каталогів на віддаленій стороні такою ж, як і в локальній, вам потрібно вручну здійснити mkdirкожен шлях і використовувати, mput *щоб надіслати все, що знаходиться в цьому каталозі, на віддалену сторону.

Два варіанти, щоб полегшити це:

  1. Перестаньте використовувати примітивну команду FTP (ncftp - хороша альтернатива)

  2. Використовуйте дьоготь, щоб обмацати папки, надіслати файл та витягнути з іншого боку.


1
+1 для tar-> put-> untar
— Дейв

1
-1 Оскільки запитання задає "Як я можу виконати те, що хочу, не перекладаючи речі, а потім перенести?", Маючи на увазі, що людина не має доступу до оболонки до віддаленої машини.
— Стівен Шютт

11

Це неможливо при звичайній програмі ftp, оскільки mput не використовує рекурсії. Ви можете використовувати ncftp, а потім викликати "mput -r папку".

Найкращі побажання, Фабіан


Саме це я нещодавно зробив на коробці RHEL 5. У пакеті EPEL виконуваний файл називається ncftpput.
— Придушення

Неможливо змінити нічого в конфігурації сервера. Я просто користувач ...

Це залежить від вашого клієнта. Не на сервері.
— полудан

Я вважаю за краще це робити так. Дякую.
— Мойтаба Резайан

11

Я зробив баш сценарій:

#!/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

і назвав це с

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

здається, працює.


0

Безпечна копія scp має -r рекурсивний прапор, який може бути корисним.


Питання про простий доступ до ftp .. не scp / sftp!
— Mojtaba Rezaeian

-1

відкрийте паттер повноважень CD у каталог, який ви хочете завантажити, виконайте такі команди:

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

Вставте результати у своє вікно ftp. Насолоджуйтесь. Також не забудьте додати mput * для передачі всіх файлів із базового каталогу.


6
З якого часу PowerShell працює в системі Unix?
— Майкл Хемптон
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.