@vitalysokolov

Как передать большой файл по ssh без промежуточного хранения?

Задача: на сервере 1 заархивировать директорию в tar.gz и передать её на сервер 2 без промежуточного хранния на сервере 1, поскольку недостаточно дискового пространства.

Пробовал какие-то такие решения, где tar направляет вывод не в файл, а в stdout и этот поток перенаправляется через ssh. Что-то делаю не так, поскольку, во-первых, в терминале в stdout я всё равно вижу вывод после tar, а во-вторых, тестировал на файле в несколько десятков Гб и на сервер 2 пришел файл размером в несколько Мб.
tar -czf - /home/target | sshpass -p 'pwd' ssh -p 23 username@server.com 'cat > /home/backups/destination.tar.gz'

Подскажите, как это реализовать.
Оба сервера на linux, нужен скрипт на bash, и чтобы содержимое tar не выводилось в терминал.
Пароль от ssh передавать нужно через sshpass. Можно использовать rsync вместо ssh. Либо scp.
  • Вопрос задан
  • 142 просмотра
Пригласить эксперта
Ответы на вопрос 5
ValdikSS
@ValdikSS
tar -cz /home/target | sshpass -p 'pwd' ssh -p 23 username@server.com 'cd /unpack/me/here && tar -zx'
Ответ написан
saboteur_kiev
@saboteur_kiev Куратор тега Linux
software engineer
tar -cz /home/target | sshpass -p 'pwd' ssh -p 23 username@server.com 'cat > /home/backups/destination.tar.gz'


Все должно так работать. Если у вас ошибка от tar, то может это не stdout а stderr?
Приведите текст что там не так. Файл в конечно счете правильный выходит?
Ответ написан
Комментировать
Vindicar
@Vindicar
RTFM!
А как насчёт scp -C? Там, правда, gzip-сжатие.
Ответ написан
shambler81
@shambler81 Куратор тега Linux
tar cvfz - --ignore-failed-read  --directory /var/www/3dpaneli.ru/web . |ssh root@89.207.93.148 cd /tmp/test/aa;tar xvfz -"
Ответ написан
@AlexVWill
подключить том сервера 2 на сервере 1 как локальный через sshfs и скопировать все обычным rsync'ом...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы