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 파일에 다시 저장합니다.

관련 정보