Задать вопрос
zooks
@zooks
Frontend

Как передать множество файлов с разархивированием на лету?

Всем привет.

Возникла необходимость передать множество файлов (>10 ГБ в сжатом виде) в условиях когда на сервере есть место только под файлы, не включая размер самого архива.

Иными словами сейчас есть архив tar.gz, как сделать так чтобы он разжался в определенную папку на сервере, не сохраняя его на сервер, т.е. на лету? Через SSH или SCP.
  • Вопрос задан
  • 1410 просмотров
Подписаться 6 Оценить 2 комментария
Решения вопроса 2
leahch
@leahch Куратор тега Linux
3D специалист. Dолго, Dорого, Dерьмово.
Через nc (netcat)!
На стороне клиента
cat mytarfile.tag.gz | nc 192.168.199.1 5432
На стороне сервера
nc -l 5432 | tar -C /var/www -xz
Да, только ключики команды посмотрите перед использованием, в разных операционках они отличаются - man nc и man netcat
Ответ написан
zooks
@zooks Автор вопроса
Frontend
1. Работает и архивирование (спасибо Saenara ) и способ с netcat.
cat perekos.tar.gz | ssh user@example.com "tar -xzf - -C /path"
Времени занимает 20-30 минут на 10 ГБ архив.

2. В случае передачи папки с архивированием на лету желательно убрать ключик -z, т.е. архивировать без сжатия:
tar -cf - /path/to/dir | ssh user@example.com "tar -xvf - -C /path"

3. Также рекомендуют rsync:
rsync -az /path/to/dir user@example.com:/path
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
dimonchik2013
@dimonchik2013
non progredi est regredi
никак

2V в 1V вы никак не всунете, но если исходный архив можно разбить на несколько, то через nc действительно самый быстрый способ передачи

www.screenage.de/blog/2007/12/30/using-netcat-and-...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы