GNU/Linux >> Linux Esercitazione >  >> Linux

Converti la modalità binaria in modalità testo e l'opzione inversa

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

Hai bisogno di -v o od condenserà sequenze di byte identici.

Per il rovescio:

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

Oppure:

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

Se il tuo scopo è trasferire file su un canale che supporta solo il testo ASCII, allora ci sono strumenti dedicati come uuencode :

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

E per recuperare quei file dall'altra parte:

uudecode < file.uu

creerebbe myfiles.tar.xz .

Oppure:

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

Per estrarre i file.


Rispondendo alla parte X di questo problema XY, ti consiglierei di indagare sul motivo per cui i tuoi trasferimenti di file binari non vengono trasferiti correttamente.

Se si scopre che il motivo è perché non si dispone di un percorso dati pulito a 8 bit, è possibile utilizzare gli strumenti esistenti creati per gestire questa situazione, come base64 o anche uuencode . Vecchio ma ancora molto efficace.

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 -

o

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 -

Nel mio caso non avevo xxd o uudecode sul dispositivo remoto ma avevo bash. Ho finito con quanto segue:

Converti da binario a txt con:

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

Quindi riconverti da txt a binario con:

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. Il risultato di Ls * , Ls ** e Ls ***?

  2. Perché (e come) l'uso di Cat su file binari ha rovinato il terminale?

  3. Md5sum comando binario e modalità testo?

  4. Tar.gz e tgz sono la stessa cosa?

  5. Utilizzo di find e tar con file con caratteri speciali nel nome

Copia e incolla il testo nel terminale su Ubuntu 20.04

Copia e incolla il testo nel terminale su Ubuntu 22.04

Esegui il ping di più server e mostra l'output nell'interfaccia utente di testo simile a quella superiore

I migliori editor di testo Linux:i 20 editor di testo e HTML recensiti

Come convertire le interruzioni di riga in un file di testo tra i formati Windows e Unix/Linux?

Modo corretto di usare l'opzione --remove-files con TAR