Rsync к stdout?

У меня есть доступ к серверу резервного копирования по rsync протоколу (только rsync, ничто иное). Теперь, я хочу выбрать файл оттуда (который является .tar.gz), и передайте его непосредственно команде tar, не сохраняя архив в локальной файловой системе.

Для визуализации с ssh доступом, я мог:

ssh remote_host cat backup.file.tar.gz | tar xzf -

И я получу несжатое резервное копирование локально, на самом деле не храня .tar.gz на локальной машине.

Действительно ли возможно достигнуть при использовании rsync?

6
задан 29.06.2010, 15:37

4 ответа

Обычно Вы могли просто использовать именованный канал, как так:

mkfifo mypipe
tar xzf mypipe &
rsync --inplace server:/remote/file.tar.gz mypipe

Однако rsync слишком умен для своей собственной пользы, так как это распознает, что удаленный файл является нормальным файлом, и локальный является каналом. Таким образом, это сначала удаляет канал, затем передает удаленный файл. scp не имеет этой проблемы и счастливо отправит данные в именованный канал (к сожалению, который не помогает Вам здесь).

4
ответ дан 07.12.2019, 16:16

сделать это коротким: Вы не можете. rsync работает путем разговора между 2 экземплярами rsync (сторона клиента и сервера), для обнаружения различий. tar не может говорить 'rsyncish'.

1
ответ дан 07.12.2019, 16:16

Я не думаю так, но Вы смогли использовать scp:

scp file /dev/stdout

скопирует файл в стандартный вывод. Можно добавить необходимого удаленного пользователя и разместить информацию для источника файла к параметрам командной строки scp.

0
ответ дан 07.12.2019, 16:16

rsync может только rsh или ssh протокол. Если Вы не используете ssh, Он должен использовать rsh. Просто замените ssh с командой rsh:

rsh remote_host кошка backup.file.tar.gz | tar xzf -

0
ответ дан 07.12.2019, 16:16

Теги

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