Як 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.