Eu tenho um arquivo que contém dados de imagem codificados em base64: ~/dog/1.jpg
Coloquei lá via SSH e codifiquei os dados em base 64 para que fosse seguro transferir no terminal. Suponha que os dados da imagem base64 não estejam corrompidos.
Agora que os dados da imagem foram passados para o outro servidor, preciso decodificar o conteúdo do arquivo e, em seguida, substituir o arquivo codificado pelo arquivo decodificado.
E não posso usar o comando base64 porque não está disponível no servidor remoto.
Como posso decodificar o conteúdo do arquivo em base64 e, em seguida, substituir o conteúdo do arquivo codificado pelo conteúdo decodificado, de preferência usando perl?
Isso é o que eu tenho agora...
# Decode image data
poo=$(cat ~/dog/1.jpg | perl -MMIME::Base64 -ne 'printf "%s\n",decode_base64($_)');
# Write decoded data to file
echo $poo >| ~/dog/1.jpg
Isso substitui o arquivo, mas não decodifica a imagem corretamente.
Responder1
perl -MMIME::Base64 -i -0777ne 'print decode_base64($_)' ~/dog/1.jpg
Evitará ter que usar qualquer intermediário (seja uma variável ou um arquivo temporário) e armazenará o arquivo decodificado de volta no arquivo jpeg original.