То, как скопировать между двумя удаленными хостами с помощью tar, передало по каналу в SSH от удаленного сервера когда позади брандмауэра?

В Вашем/etc/ssh/ssh.conf или если у Вас есть свой собственный ssh.conf в Вашей домашней папке (~/.ssh/...) пытаются изменить версию протокола с 2 до 1 или независимо от того, что протокол работает на Вашей машине окон. Для получения дополнительной информации посмотрите человека ssh и человека ssh.conf

5
12.06.2014, 21:31
3 ответа

Подобный тому, чем jw013, предложенный в комментариях с отдельными шагами сжатия/распаковки, т.е. объединении два ssh, управляет с каналом:

compress=gzip
decompress=gunzip

ssh remote1 "cd srcdir; tar cf - dir | $compress" |
ssh remote2 "cd destdir; $decompress | tar xvf -"

Обратите внимание, что сжатие/распаковка настраивается без в зависимости от версии tar.

Обновление

Вы могли также добавить проверку контрольной суммы в канал:

compress=gzip
decompress=gunzip

ckprg=md5sum
cksum=/tmp/cksum

ssh remote1 "cd srcdir; tar cf - dir | $compress | tee <($ckprg > $cksum)" |
ssh remote2 "cd destdir; tee <($ckprg > $cksum) | $decompress | tar xvf -"

ssh remote1 cat $cksum
ssh remote2 cat $cksum
7
27.01.2020, 20:35
  • 1
    хороший, отделяющий сжатие –  barrymac 16.08.2012, 18:21
  • 2
    ! вычисление контрольной суммы является достойным дополнением –  barrymac 17.08.2012, 12:13

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

mkdir ~/net ~/net/sourcehost ~/net/destinationhost
sshfs sourcehost: ~/net/sourcehost
sshfs destinationhost: ~/net/destinationhost
cp -Rp ~/net/sourcehost/path/to/source ~/net/destinationhost/path/to/destination

Обязательно активируйте сжатие в Вашем ~/.ssh/config:

Host sourcehost
HostName sourcehost.example.com
Compression yes
CompressionLevel 9

Host destinationhost
HostName destinationhost.example.com
Compression yes
CompressionLevel 9
2
27.01.2020, 20:35
  • 1
    хорошо, который не использует сжатие, и я указал, что на самом деле хочу сделать это через локальный хост. Это - также намного больше стычки для установки sshfs, чем один лайнер, я могу выйти из панели инструментов для той от Превосходной ситуации –  barrymac 17.08.2012, 12:12
  • 2
    @barrymac Compression yes гарантирует, что это использует сжатие. SSHFS требует одной строки постоянной установки (mkdir), одна строка установки на сессию на хост (монтируются), и фактическое копирование тривиально (cp) и даже не требует, чтобы Вы помнили, что файлы, которые Вы копируете, являются удаленными. –  Gilles 'SO- stop being evil' 17.08.2012, 12:25
  • 3
    Извините не определил тот флаг сжатия, и я думал о стычке об установке его и что нет. Было бы интересно сравнить того метода. Это - не совсем один лайнер, о котором я думал, но это удобно хорошо –  barrymac 17.08.2012, 12:50

Ваш предложенный ответ:

ssh -n REMOTEHOST 'tar zcvf - DIRTOCOPY' | localZip.tar.gz

не работал на меня - канал в отказавший файл.

Я сделал это вместо этого, и это работало:

ssh -n REMOTEHOST 'tar zcvf - DIRTOCOPY' | cat - > localZip.tar.gz

Передайте его по каналу 'кошке' через стандартный вход и перенаправьте вывод в файл.

другое решение состояло бы в том, чтобы удалить "| кошка -" и просто отправить вывод SSH непосредственно в tarball:

ssh -n REMOTEHOST 'tar zcvf - DIRTOCOPY' > localZip.tar.gz
1
27.01.2020, 20:35

Теги

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