bup-meta(1)

πŸ’– bup-meta πŸ’–

okay bestie, welcome to bup-meta from the General Commands Manual section β€” she's the metadata archivist of the bup(1) fam and she is so underrated. let's get into it ✨


🌸 NAME 🌸

bup-meta β€” create or extract a metadata archive. that's it, that's the job, and she eats every time πŸ’…


πŸŽ€ SYNOPSIS πŸŽ€

bup meta --create
       [-R] [-v] [-q] [--no-symlinks] [--no-paths] [-f file] <paths...>

bup meta --list
       [-v] [-q] [-f file]

bup meta --extract
       [-v] [-q] [--numeric-ids] [--no-symlinks] [-f file]

bup meta --start-extract
       [-v] [-q] [--numeric-ids] [--no-symlinks] [-f file]

bup meta --finish-extract
       [-v] [-q] [--numeric-ids] [-f file]

bup meta --edit
       [--set-uid uid | --set-gid gid | --set-user user | --set-group
       group | ...]  <paths...>

look at her. six whole modes. main character energy fr fr πŸ‘‘


✨ DESCRIPTION ✨

so like, bup meta creates, extracts, or otherwise manipulates metadata archives. and a metadata archive? it's literally just the metadata info β€” timestamps, ownership, access permissions, etc. β€” for a set of filesystem paths. no file contents, just the ✨vibes✨ of the files. periodt.

ngl if you wanna know how ownership metadata gets put back where it belongs, go read bup-restore(1) β€” that's the whole description of it, bestie, I'm not gonna make stuff up 🫢


πŸ’… OPTIONS πŸ’…

  • -c, --create β€” make a metadata archive for the paths you named. writes it to standard output unless you pass --file. πŸŽ€
  • -t, --list β€” show you what metadata is inside an archive. reads from standard input unless you pass --file. πŸ”
  • -x, --extract β€” extract a metadata archive. conceptually it's --start-extract and then --finish-extract, one after the other. reads from standard input unless --file is specified. πŸ’–
  • --start-extract β€” build a filesystem tree that matches the paths stored in the metadata archive. heads up: on its own this does not give you a full metadata restoration β€” for that you gotta follow it up with a --finish-extract call. once this command finishes, all the normal files described by the metadata will exist and be empty. then you restore the data in those files, then call --finish-extract, and boom, original tree is back. archive gets read from standard input unless --file is specified. 🌱
  • --finish-extract β€” finish applying the metadata from an archive onto the filesystem. normally this comes right after a --start-extract call. archive reads from standard input unless --file is specified. πŸ¦‹
  • --edit β€” edit metadata archives. result goes to standard output unless --file is specified. ✏️
  • -f, --file=filename β€” read the metadata archive from filename, or write it to filename, whichever is the appropriate direction. and if filename is -, then it reads from standard input or writes to standard output. πŸ“
  • -R, --recurse β€” recursively descend into subdirectories during --create. 🌈
  • --xdev, --one-file-system β€” don't cross filesystem boundaries β€” though, same as with tar and rsync, the mount points themselves will still be handled. 🚧
  • --numeric-ids β€” apply numeric IDs (user, group, etc.) rather than names during --extract or --finish-extract. πŸ”’
  • --symlinks β€” record symbolic link targets when creating an archive, or restore symbolic links when extracting one (during --extract or --start-extract). this one is enabled by default. specify --no-symlinks to turn it off. πŸ”—
  • --paths β€” record pathnames when creating an archive. also enabled by default. specify --no-paths to turn it off. πŸ“
  • --set-uid=uid β€” set the metadata uid to the integer uid during --edit. πŸ‘€
  • --set-gid=gid β€” set the metadata gid to the integer gid during --edit. πŸ‘₯
  • --set-user=user β€” set the metadata user to user during --edit. πŸ’«
  • --unset-user β€” remove the metadata user during --edit. πŸ™ˆ
  • --set-group=group β€” set the metadata user to group during --edit. (yes bestie, the original says "user", I'm just the messenger πŸ’€) 🌟
  • --unset-group β€” remove the metadata group during --edit. 🧹
  • -v, --verbose β€” be more verbose (can be used more than once). πŸ—£οΈ
  • -q, --quiet β€” be quiet. 🀫

πŸ”₯ EXAMPLES πŸ”₯

# Create a metadata archive for /etc.
$ bup meta -cRf etc.meta /etc
bup: removing leading "/" from "/etc"

# Extract the etc.meta archive (files will be empty).
$ mkdir tmp && cd tmp
$ bup meta -xf ../etc.meta
$ ls
etc

# Restore /etc completely.
$ mkdir tmp && cd tmp
$ bup meta --start-extract -f ../etc.meta
...fill in all regular file contents using some other tool...
$ bup meta --finish-extract -f ../etc.meta

# Change user/uid to root.
$ bup meta --edit --set-uid 0 --set-user root \
    src.meta > dest.meta

go off, honestly. the last one is giving glow-up makeover for your metadata πŸ’…βœ¨


πŸ’€ BUGS πŸ’€

hard links are not handled yet. we're waiting, bestie 😭


πŸ‘‘ BUP πŸ‘‘

part of the bup(1) suite. iconic family, no notes. 🫢


🌟 AUTHORS 🌟

Rob Browning rlb@defaultvalue.org πŸ’Œ


okay that's the whole page, bestie β€” and just so you know exactly which era of slay this is: it's from Bup 0.34, dated 2026-09-01, <rainbow>bup-meta(1)</rainbow> and all. now go archive something responsibly πŸ’–βœ¨πŸŽ€

πŸ“¦ where this page comes from