Таким образом, я пытаюсь передать набор файлов через SCP. Некоторые из них являются слишком большими, чтобы быть сохраненными на получателе (телефон на базе Android, предел размера файла на 4 ГБ).
Отправитель почти вне пространства, таким образом, я не могу создать промежуточные файлы локально.
Я хотел бы смолить набор и передать его потоком через разделение так, чтобы я мог получить меньшие сегменты, это будет принято телефоном, т.е. локальной командой:
tar -cvf - ~/batch/ | split --bytes=1024m - batch.tar.seg
Но я не уверен, как я передал бы это по каналу в scp для получения его телефон. Согласно комментарию к этому сообщению, это возможно, но я, в первую очередь, не вполне получаю то, что он говорит, второй из всего, что я не уверен, как выполнить это, поскольку будет несколько выводов файлов от разделения.
Какие-либо идеи?
Если получатель имеет split
, затем можно сделать:
tar -cvf - ~/batch/ | gzip |
ssh recipient 'cd /destination &&
split --bytes=1024m - batch.tar.gz.seg'
В то время как комментарий, который Вы упоминаете, действительно относится к scp и ssh, читающему из STDIN, это не точно Ваш случай здесь. Причина split
: это не пишет в STDOUT. Таким образом, даже если Вы добавите больше каналов, то Вы не получите данные там. Stephane предлагает правильную вещь в своем ответе выше: ничего не храните на источнике, поскольку он имеет недостатка свободного места, просто пакет, gzip, и передайте данные; и затем сделайте разделение на принимающем конце, где размер блока имеет значение.
Ваше сообщение, на которое ссылаются, описывает проблему хорошо: Поскольку Вы используете канал, Вы не копируете файлы, а скорее перенаправляете стандартные потоки. И scp
не правильный инструмент для того (это для копирования файлов), ssh
правильная программа: Вы перенаправляете поток к ssh
стандартный вход и это произведут тот вход на удаленный хост и подадут его к стандартному входу указанной команды:
local$ tar -cvzf - ~/batch/ | ssh target 'split --bytes=1024m - batch.tar.seg'
Обратите внимание, что я добавил, что сжатие отмечает 'z' к опциям tar, возможно, затем разделение не нужно вообще.