Tar в конвейере на Windows (tar -czf - somefile.txt | ncftpput -u user -p password -c somehost.ru)

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС для молодых и начинающих системных администраторов.

Модератор: SLEDopit

Novascriptum
Сообщения: 40

Tar в конвейере на Windows

Сообщение Novascriptum »

Всем доброго времени!
Где-то нашёл в инете любопытный способ создания архивов и их отправки по FTP на лету без создания промежуточных файлов - идея очень понравилась. Делается примерно так:

Код: Выделить всё

tar -czf - somefile.txt | ncftpput -u user -p password -c somehost.ru /somefile.txt


Проверял в CentOS 6.5, всё работает. Захотел повторить трюк в Windows, скачал tar 1.21 отсюда, а NcFTP Client 3.2.5 for Microsoft Windows отсюда.

И вроде бы всё хорошо, по отдельности обе утилиты работают, но подружить их вместе не получается ни в какую. Это именно в Windows:

Код: Выделить всё

D:\utils>tar -cf - "D:\_temp\\video.mp4" | "C:\Windows\ncftpput" -u user -p password -c somehost.ru /v.mp4
tar: Removing leading `D:\' from member names
tar: -: Cannot write: Broken pipe
tar: Error is not recoverable: exiting now

Уже начитался в интернете, что при указании путей нужно экранировать слэши, чтобы не возникало спец. символов (именно по этой причине указано два \ перед video.mp4).
Причём в паре со split'ом тот же самый tar прекрасно работает:

Код: Выделить всё

D:\utils>tar -cf - "D:\_temp\\video.mp4" | split -b 10m - "D:\_temp\video.tar"
tar: Removing leading `D:\' from member names

D:\utils>

В результате получаем распиленный на части архив, всё отлично.
Что же не так в первом случае? Уже всю голову сломал. Буду признателен за любые идеи.
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 17911
Статус: grammatikführer
ОС: Debian GNU/Linux

Re: Tar в конвейере на Windows

Сообщение Bizdelnick »

Видимо под виндой ncftpput ведёт себя как-то по-другому. И путь вообще правильный указан?
Novascriptum писал(а):
06.10.2016 21:22

Код: Выделить всё

"C:\Windows\ncftpput"

Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8255
Статус: Маньяк
ОС: Arch, CentOS, Ubuntu

Re: Tar в конвейере на Windows

Сообщение serzh-z »

Novascriptum
Я бы добавил `-d debug.log' к ncftpput, уверен, что проблема, скорее, в нём, чем в tar и это он закрывает stdin.
Спасибо сказали:

Novascriptum
Сообщения: 40

Re: Tar в конвейере на Windows

Сообщение Novascriptum »

Novascriptum писал(а):
08.10.2016 10:29
Novascriptum
Я бы добавил `-d debug.log' к ncftpput, уверен, что проблема, скорее, в нём, чем в tar и это он закрывает stdin.



Запустил ncftpput в этом конвйере с ключом -d для отладки, такой получил ответ:

Код: Выделить всё

2016-10-07 23:06:40  LibNcFTP 3.2.5 (January 17, 2011) compiled for Windows
2016-10-07 23:06:40  220: --------- Welcome to Pure-FTPd [privsep] ----------
2016-10-07 23:06:40       You are user number 29 of 1000 allowed.
2016-10-07 23:06:40       Local time is now 20:06. Server port: 21.
2016-10-07 23:06:40       This is a private system - No anonymous login
2016-10-07 23:06:40       IPv6 connections are also welcome on this server.
2016-10-07 23:06:40       You will be disconnected after 15 minutes of inactivity.
2016-10-07 23:06:40  Connected to somehost.ru.
2016-10-07 23:06:40  Cmd: USER someuser
2016-10-07 23:06:40  331: User someuser OK. Password required
2016-10-07 23:06:40  Cmd: PASS xxxxxxxx
2016-10-07 23:06:40  230: This server supports FXP transfers
2016-10-07 23:06:40       OK. Current restricted directory is /
2016-10-07 23:06:40  Cmd: PWD
2016-10-07 23:06:40  257: "/" is your current location
2016-10-07 23:06:40  Logged in to somehost.ru as someuser.
2016-10-07 23:06:40  Cmd: FEAT
2016-10-07 23:06:40  211: Extensions supported:
2016-10-07 23:06:40        EPRT
2016-10-07 23:06:40        IDLE
2016-10-07 23:06:40        MDTM
2016-10-07 23:06:40        SIZE
2016-10-07 23:06:40        REST STREAM
2016-10-07 23:06:40        MLST type*;size*;sizd*;modify*;UNIX.mode*;UNIX.uid*;UNIX.gid*;unique*;
2016-10-07 23:06:40        MLSD
2016-10-07 23:06:40        TVFS
2016-10-07 23:06:40        ESTA
2016-10-07 23:06:40        PASV
2016-10-07 23:06:40        EPSV
2016-10-07 23:06:40        SPSV
2016-10-07 23:06:40        ESTP
2016-10-07 23:06:40       End.
2016-10-07 23:06:40  Cmd: HELP SITE
2016-10-07 23:06:41  214: The following SITE commands are recognized
2016-10-07 23:06:41        ALIAS
2016-10-07 23:06:41        CHMOD
2016-10-07 23:06:41        IDLE
2016-10-07 23:06:41        UTIME
2016-10-07 23:06:41       Pure-FTPd - http://pureftpd.org/
2016-10-07 23:06:41  Cmd: CLNT NcFTPPut 3.2.5 Windows
2016-10-07 23:06:41  500: Unknown command
2016-10-07 23:06:41  Cmd: TYPE I
2016-10-07 23:06:41  200: TYPE is now 8-bit binary
2016-10-07 23:06:41  Cmd: PASV
2016-10-07 23:06:41  227: Entering Passive Mode (94,242,236,87,135,201)
2016-10-07 23:06:41  Cmd: STOR /v2.mp4
2016-10-07 23:06:41  150: Accepted data connection
2016-10-07 23:06:41  226: File successfully transferred
2016-10-07 23:06:41       0.071 seconds (measured here), 23.18 Kbytes per second
2016-10-07 23:06:41  Cmd: MDTM 20161007180641 /v2.mp4
2016-10-07 23:06:41  550: Can't check for file existence
2016-10-07 23:06:41  Cmd: QUIT
2016-10-07 23:06:41  221: Goodbye. You uploaded 2 and downloaded 0 kbytes.
2016-10-07 23:06:41       Logout.


Вот эта часть

Код: Выделить всё

2016-10-07 23:06:41  Cmd: CLNT NcFTPPut 3.2.5 Windows
2016-10-07 23:06:41  500: Unknown command

выглядит как-то подозрительно...

Проблема действительно где-то на стороне ncftpput:

Код: Выделить всё

D:\utils>type img.jpg | "C:\Windows\ncftpput" -u user -p pass -c somehost.ru /img.jpg
Попытка записи в несуществующий канал.


Только вот установить, в чём дело, до сих пор не получается. Может быть есть какая-то альтернатива ncftpput, позволяющая так же использовать отправку по FTP в контейнере? Желательно под Windows, конечно. Хотя рассмотрю все варианты, конечно.

Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 17911
Статус: grammatikführer
ОС: Debian GNU/Linux

Re: Tar в конвейере на Windows

Сообщение Bizdelnick »

Novascriptum писал(а):
08.10.2016 10:29
Может быть есть какая-то альтернатива ncftpput, позволяющая так же использовать отправку по FTP в контейнере?

tar -cz yourfiles | ssh user@host cat \> archive.tar.gz
А FTP закопайте.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

Novascriptum
Сообщения: 40

Re: Tar в конвейере на Windows

Сообщение Novascriptum »

Bizdelnick писал(а):
08.10.2016 10:50
tar -cz yourfiles | ssh user@host cat \> archive.tar.gz
А FTP закопайте.


Так работает, спасибо. Но, к сожалению, далеко не каждый файловый сервер разрешает к нему SSH-подключения. Я бы хотел использовать dfiles.ru (хранят файлы 90 дней - для бэкапов идеально), а они позволяют закачку файлов только по FTP. Так что вопрос остаётся актуальным.
Спасибо сказали:

Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8255
Статус: Маньяк
ОС: Arch, CentOS, Ubuntu

Re: Tar в конвейере на Windows

Сообщение serzh-z »

Novascriptum
Проблема в
QUOTE писал(а):2016-10-07 23:06:41 Cmd: MDTM 20161007180641 /v2.mp4
2016-10-07 23:06:41 550: Can't check for file existence
Возможно, что для виндовой версии ncftpput нужно заменить "/" на "\" или добавить какой-нибудь префикс. А может это просто баг.

Novascriptum писал(а):
08.10.2016 11:17
Так что вопрос остаётся актуальным.
В конце концов - проблема решается просто: Windows + Docker + настоящий ncftpput. К тому же сейчас подсистему Linux встроили в Windows 10.
Спасибо сказали: