GNU/Linux >> Belajar Linux >  >> Linux

Ubah mode biner ke mode teks dan opsi sebaliknya

od -An -vtx1 Check.tar > Check.txt

Anda membutuhkan -v atau od akan memadatkan urutan byte identik.

Sebaliknya:

LC_ALL=C tr -cd 0-9a-fA-F < Check.txt | xxd -r -p > Check.tar

Atau:

perl -ape '$_=pack "(H2)*", @F' Check.txt > Check.tar

Jika tujuan Anda adalah mentransfer file melalui saluran yang hanya mendukung teks ASCII, maka ada alat khusus untuk itu seperti uuencode :

tar cf - myfiles.* | xz | uuencode myfiles.tar.xz | that-channel 

Dan untuk memulihkan file-file itu di ujung lain:

uudecode < file.uu

akan membuat ulang myfiles.tar.xz .

Atau:

uudecode -o - < file.uu | xz -d | tar xf -

Untuk mengekstrak file.


Menjawab bagian X dari masalah XY ini, sebaiknya Anda menyelidiki alasan transfer file biner Anda tidak tertransfer dengan benar.

Jika ternyata alasannya adalah karena Anda tidak memiliki jalur data bersih 8-bit, Anda dapat menggunakan alat yang sudah ada yang dibuat untuk menangani situasi ini, seperti base64 atau bahkan uuencode . Tua tapi masih sangat efektif.

tar czvf - /etc/h* | base64 >/tmp/tar.tgz.b64
ls -l /tmp/tar.tgz.b64
-rw-r--r-- 1 root root 7364 May 26 11:52 /tmp/tar.tgz.b64
...
base64 -d /tmp/tar.tgz.b64 | tar tzvf -

atau

tar czvf - /etc/h* | uuencode - >/tmp/tar.tgz.uue
ls -l /tmp/tar.tgz.uue
-rw-r--r-- 1 root root 7530 May 26 11:51 /tmp/tar.tgz.uue
...
uudecode /tmp/tar.tgz.uue | tar xzvf -

Dalam kasus saya, saya tidak memiliki xxd atau uudecode pada perangkat jarak jauh tetapi saya memiliki bash. Saya berakhir dengan yang berikut:

Konversikan dari biner ke txt dengan:

od -An -vtx1 myfile.bin > myfile.txt

Kemudian konversikan kembali dari txt ke biner dengan:

while read p; do
    IFS=' ' read -r -a array <<< "$p" 
    for index in "${!array[@]}" 
    do
        echo -en "\x${array[index]}" 
    done
done < myfile.txt > myfile.bin

Linux
  1. Hasil Ls * , Ls ** Dan Ls ***?

  2. Perbedaan Antara [[ $a ==Z* ]] Dan [ $a ==Z* ]?

  3. Konversi Semua Teks Dari Huruf Besar Ke Huruf Kecil Dan Sebaliknya?

  1. Menggunakan find dan tar dengan file dengan karakter khusus pada namanya

  2. Cara mengonversi file teks dari Shift JIS ke UTF-8 dan kembali dari terminal

  3. Cara yang benar menggunakan opsi --remove-files dengan TAR

  1. Mengapa (dan Bagaimana) Apakah Menggunakan Cat Pada File Biner Merusak Terminal?

  2. Perintah Biner Dan Mode Teks Md5sum?

  3. Bagaimana Cara Mengompres dan Mengekstrak File Menggunakan Perintah tar di Linux?