Tar, переданный по каналу для разделения переданный по каналу к scp

Таким образом, я пытаюсь передать набор файлов через SCP. Некоторые из них являются слишком большими, чтобы быть сохраненными на получателе (телефон на базе Android, предел размера файла на 4 ГБ).

Отправитель почти вне пространства, таким образом, я не могу создать промежуточные файлы локально.

Я хотел бы смолить набор и передать его потоком через разделение так, чтобы я мог получить меньшие сегменты, это будет принято телефоном, т.е. локальной командой:

tar -cvf - ~/batch/ | split --bytes=1024m - batch.tar.seg

Но я не уверен, как я передал бы это по каналу в scp для получения его телефон. Согласно комментарию к этому сообщению, это возможно, но я, в первую очередь, не вполне получаю то, что он говорит, второй из всего, что я не уверен, как выполнить это, поскольку будет несколько выводов файлов от разделения.

Какие-либо идеи?

6
08.02.2013, 09:06
3 ответа

Если получатель имеет split, затем можно сделать:

tar -cvf - ~/batch/ | gzip |
  ssh recipient 'cd /destination &&
    split --bytes=1024m - batch.tar.gz.seg'
4
27.01.2020, 20:26
  • 1
    Это делает! И это работает! Какой отличный способ решить его :) Спасибо! –  DanielSmedegaardBuus 08.02.2013, 10:27

В то время как комментарий, который Вы упоминаете, действительно относится к scp и ssh, читающему из STDIN, это не точно Ваш случай здесь. Причина split: это не пишет в STDOUT. Таким образом, даже если Вы добавите больше каналов, то Вы не получите данные там. Stephane предлагает правильную вещь в своем ответе выше: ничего не храните на источнике, поскольку он имеет недостатка свободного места, просто пакет, gzip, и передайте данные; и затем сделайте разделение на принимающем конце, где размер блока имеет значение.

2
27.01.2020, 20:26
  • 1
    Спасибо за ту дополнительную информацию - я не думал об этом, конечно, Вы - правильный :) –  DanielSmedegaardBuus 08.02.2013, 10:28
  • 2
    Вам рады, DanielSmedegaardBuus! –  Leonid 08.02.2013, 12:11

Ваше сообщение, на которое ссылаются, описывает проблему хорошо: Поскольку Вы используете канал, Вы не копируете файлы, а скорее перенаправляете стандартные потоки. И scp не правильный инструмент для того (это для копирования файлов), ssh правильная программа: Вы перенаправляете поток к ssh стандартный вход и это произведут тот вход на удаленный хост и подадут его к стандартному входу указанной команды:

local$ tar -cvzf - ~/batch/ | ssh target 'split --bytes=1024m - batch.tar.seg'

Обратите внимание, что я добавил, что сжатие отмечает 'z' к опциям tar, возможно, затем разделение не нужно вообще.

2
27.01.2020, 20:26

Теги

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