Base64 디코딩 및 파일 덮어쓰기

Base64 디코딩 및 파일 덮어쓰기

base64로 인코딩된 이미지 데이터가 포함된 파일이 있습니다: ~/dog/1.jpg

SSH를 통해 거기에 넣었고 Base 64로 데이터를 인코딩하여 터미널에서 안전하게 전송할 수 있었습니다. Base64 이미지 데이터는 손상되지 않은 것으로 가정됩니다.

이제 이미지 데이터를 다른 서버에 전달했으므로 파일 내용을 디코딩한 다음 인코딩된 파일을 디코딩된 파일로 덮어써야 합니다.

원격 서버에서 base64 명령을 사용할 수 없기 때문에 사용할 수 없습니다.

Base64로 파일 콘텐츠를 디코딩한 다음 인코딩된 파일 콘텐츠를 가급적이면 Perl을 사용하여 디코딩된 콘텐츠로 덮어쓰려면 어떻게 해야 합니까?

이것이 내가 지금 가지고 있는 것입니다...

# 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

파일을 덮어쓰지만 이미지를 올바르게 디코딩하지 못합니다.

답변1

perl -MMIME::Base64 -i -0777ne 'print decode_base64($_)' ~/dog/1.jpg

중개자(변수 또는 임시 파일)를 사용하지 않고 디코딩된 파일을 원래 jpeg 파일에 다시 저장합니다.

관련 정보