сжатие папки tgz, кодирование в base64 и отправка "на лету"

 $ rm_if_link(){ [ ! -L "$1" ] || rm -v "$1"; }

 #test
 $ touch nonlink; ln -s link
 $ rm_if_link nonlink
 $ rm_if_link link
   removed 'link'     
1
15.04.2019, 07:07
1 ответ

Команда выдает ошибку «пустой» архив, потому что вы ничего не передаете в tar для сжатия.

При использовании -fпосле должно идти имя архива для создания и только потом архивы для сжатия (в вашем случае каталог ).

Для отправки на стандартный вывод для подачи в канал следует использовать фиктивную опцию/ярлык "-"

Как в:

tar -czf - Pictures | base64 | nc remote_host 443 

Как также правильно указывает @muru, вывод tar на стандартный вывод по умолчанию, так что другой вариант, если убрать " -f".

tar -cz Pictures | base64 | nc remote_host 443

ncтакже в теории также хорошо способен обрабатывать двоичные файлы, когда они не отправляются на консоль, вы можете обойтись без дополнительного шага кодирования и декодирования base64. Я, конечно, делал это тысячи раз, не используя base64.

Я бы также предпочел использовать ncбез -v для сценариев на удаленной стороне, как в:

tar -czf - Pictures | nc remote_host 443  
nc -lp 443 > secret.tgz # remote host
1
27.01.2020, 23:41

Теги

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