QR-BACKUP(1)

πŸ“¦ version 1.1.4, in nixos 26.05, nixpkgs unstable

πŸ’Ύ qr-backup(1) β€” paper backups, but make it cute πŸ’Ύ

Okay bestie, welcome to the qr-backup(1) manual page. It’s giving printable QR-code backup chaos, and I’m obsessed. πŸ’–

🌸 NAME 🌸

qr-backup β€” back up file(s) to a series of QR codes on paper. Literally paper. πŸŽ€

✨ SYNOPSIS ✨

qr-backup [OPTIONS] FILE [FILE...]
qr-backup --restore [OPTIONS]
qr-backup --restore [OPTIONS] IMAGE [IMAGE...]

πŸ’– DESCRIPTION πŸ’–

Okay so qr-backup takes a binary file and turns it into a backup that’s suitable for printing. The backup is a .pdf file stuffed with several barcodes. Main character energy for paper. πŸ’…

qr-backup --restore restores a paper backup and outputs the original file. Restore happens using a webcam or scanner. No cap.

And plot twist: restore is possible without qr-backup. Yes fr fr. The restore directions are included in the paper backup. 🫢

πŸŽ€ OPTIONS πŸŽ€

  • --help, -h β€” Print a help message.
  • --verbose, -v β€” Print more detailed information during run.
  • --version, -V β€” Print the verison and immediately exit. (That’s the spelling on the page, iykyk 😭)

🌈 BACKUP OPTIONS 🌈

  • --compress, --no-compress β€” This gives a more compact backup, but partial recovery is impossible. Default: compressed.
  • --dpi DPI β€” Sets the print resolution of your printer. Default: 300.
  • --encrypt generate, --encrypt PASSPHRASE β€” Password-protect the backup. If the passphrase is generate, a passphrase is automatically generated for you, which you would need to store securely or you will be unable to unlock the data. Default: disabled.
  • --encrypt-print-passphrase, --no-encrypt-print-passphrase β€” Print the passphrase on a sheet by itself. Default: print if generated by qr-code, don’t print if passed in.
  • --erasure-coding, --no-erasure-coding β€” This allows restoring if some QR codes are lost. Restore with lost codes is only possible using qr-backup. Default: enabled.
  • --error-correction CORRECTION β€” Sets the error correction level. Options are L (7%), M (15%), Q (25%), and H (30%). Default: M (15%).
  • --filename FILENAME β€” Set the restored filename. Max 32 chars. Default: same as FILE.
  • --instructions page|cover|both|none β€” Sets how frequently the instructions are printed. If cover or both is selected, more verbose instructions will be printed on the cover page. Default: page.
  • --note TEXT β€” Add a special note to the printout instructions. Can be anything. Default: no note.
  • --num-copies NUMBER β€” Print multiple copies of each QR code for redundancy. Default: 1.
  • --output FILENAME, -o FILENAME β€” Set the output pdf path (redirecting stdout also works). Default: FILE.qr.pdf.
  • --page WIDTH_POINTS HEIGHT_POINTS β€” Sets the usable size of the paper on your printer. This should NOT be 8.5 x 11 β€” make sure to include margins. Default: 500px x 600px.
  • --qr-version VERSION β€” Uses QR codes, version VERSION. Versions range from 1-40. The bigger the version, the harder to scan but the more data per code. Default: 10.
  • --scale SCALE β€” Scale QR codes so that each small square in the QR code is SCALE x SCALE pixels. Default: 5px.
  • --shuffle, --no-shuffle β€” Spread QR codes across pages. This can help prevent data loss. Default: yes if erasure coding is enabled (default), no otherwise.
  • --skip-checks, --no-skip-checks β€” Skip erasure code checks, self-restore checks. Default: not skipped.

πŸ¦‹ RESTORE OPTIONS πŸ¦‹

  • --code-count-erasure COUNT β€” Specify the number of erasure QR codes. Default: automatic.
  • --code-count-normal COUNT β€” Specify the number of normal QR codes. Default: automatic.
  • --compress, --no-compress β€” Force decompression (on/off). Default: automatic.
  • --display, --no-display β€” For webcam scanning, (display/don’t display) a webcam preview. Default: display.
  • --encrypt PASSPHRASE, --no-encrypt β€” Force decryption (on/off) and give the passphrase if decrypting. Default: automatic.
  • --image-restore β€” Force image-based (scanner) restore. Default: automatic.
  • --output FILENAME, -o FILENAME β€” Set the restore file path. Default: stdout.
  • --sha256 SHA256 β€” Include a sha256sum to check the file. Giving the initial part of the sha256sum does a partial check. Default: no check, prints checksum to stderr.
  • --webcam-restore β€” Force webcam-based restore. Default: automatic.

⭐ EXIT VALUES ⭐

  • 0 β€” Success. This includes certain self-test failures which sometimes fail by chance.
  • 1 β€” Invalid command line option.
  • 2 β€” File missing or access failed.
  • 3 β€” Self-test restore failed.
  • 4 β€” Restore failed.
  • 5 β€” convert subcommand failed.
  • 6 β€” zbarimg or zbarcam subcommand failed.
  • 7 β€” gpg subcommand failed.

πŸ’€ BUGS πŸ’€

Please report any bugs at https://github.com/za3k/qr-backup/issues .

Sometimes scanned images, including the original PDF, cannot be read successfully and the restore self-check fails. This appears to be a bug in zbar. 😭

On Debian, Ubuntu and certain other systems, the default system imagemagick policy prevents reading or writing PDFs. Since qr-backup depends on both, it will fail. qr-backup does its best to report this problem clearly.

It is possible to print barcodes so large or small your webcam or scanner cannot read them. Make sure to test your restore process when using non-default settings. Vibe check your printer, bestie. πŸ–¨οΈβœ¨

qr-backup was written by Zachary Vance, and is released into the public domain and under CC0 https://creativecommons.org/share-your-work/public-domain/cc0/ . The generated PDF includes the DejaVu Sans Mono font, which has a separate license https://dejavu-fonts.github.io/License.html .

The qr-backup source code is available at https://github.com/za3k/qr-backup .

🫢 AUTHORS 🫢

Zachary Vance.


✨ That’s the whole page, bestie! Source/version: qr-backup 1.1.3; date: March 2025; manual: QR-BACKUP(1). Mwah πŸ’‹βœ¨
πŸ“¦ where this page comes from