У меня есть доступ к серверу резервного копирования по rsync протоколу (только rsync, ничто иное). Теперь, я хочу выбрать файл оттуда (который является .tar.gz), и передайте его непосредственно команде tar, не сохраняя архив в локальной файловой системе.
Для визуализации с ssh доступом, я мог:
ssh remote_host cat backup.file.tar.gz | tar xzf -
И я получу несжатое резервное копирование локально, на самом деле не храня .tar.gz на локальной машине.
Действительно ли возможно достигнуть при использовании rsync?
Обычно Вы могли просто использовать именованный канал, как так:
mkfifo mypipe
tar xzf mypipe &
rsync --inplace server:/remote/file.tar.gz mypipe
Однако rsync слишком умен для своей собственной пользы, так как это распознает, что удаленный файл является нормальным файлом, и локальный является каналом. Таким образом, это сначала удаляет канал, затем передает удаленный файл. scp
не имеет этой проблемы и счастливо отправит данные в именованный канал (к сожалению, который не помогает Вам здесь).
Я не думаю так, но Вы смогли использовать scp
:
scp file /dev/stdout
скопирует файл в стандартный вывод. Можно добавить необходимого удаленного пользователя и разместить информацию для источника файла к параметрам командной строки scp
.