dwww Home | Manual pages | Find package

bup-get(1)                                                           bup-get(1)

NAME
       bup-get - copy repository items (CAUTION: EXPERIMENTAL)

SYNOPSIS
       bup get [-s source-path] [-r host:path] OPTIONS <(METHOD ref [dest])>...

DESCRIPTION
       bup get copies the indicated refs from the source repository to the des-
       tination repository (respecting --bup-dir and BUP_DIR), according to the
       specified  METHOD, which may be one of --ff, --ff:, --append, --append:,
       --pick, --pick:,  --force-pick,  --force-pick:,  --new-tag,  --new-tag:,
       --replace, --replace:, or --unnamed.  See the EXAMPLES below for a quick
       introduction.

       The  ref is the source repository reference of the object to be fetched,
       and the dest is the optional destination reference.  A dest may only  be
       specified for a METHOD whose name ends in a colon.  For example:

              bup get -s /source/repo --ff foo
              bup get -s /source/repo --ff: foo/latest bar
              bup get -s /source/repo --pick: foo/2010-10-10-101010 .tag/bar

       As a special case, if ref names the “latest” save symlink, then bup will
       act  exactly  as if the save that “latest” points to had been specified,
       rather than the “latest” symlink itself, so bup get foo/latest will  ac-
       tually be interpreted as something like bup get foo/2013-01-01-030405.

       In some situations bup get will evaluate a branch operation according to
       whether  or not it will be a “fast-forward” (which requires that any ex-
       isting destination branch be an ancestor of the source).

       An existing destination tag can only be overwritten by  a  --replace  or
       --force-pick.

       When  a new commit is created (i.e. via --append, --pick, etc.), it will
       have the same author, author date, and message as the  original,  but  a
       committer and committer date corresponding to the current user and time.

       If  requested  by  the  appropriate  options, bup will print the commit,
       tree, or tag hash for each destination reference  updated.   When  rele-
       vant, the tree hash will be printed before the commit hash.

       Local  refs  can  be pushed to a remote repository with the --remote op-
       tion, and remote refs can be pulled into a local repository via “bup  on
       HOST  get ...”.  See bup-on(1) and the EXAMPLES below for further infor-
       mation.

       WARNING: This is one of the  few  bup  commands  that  can  modify  your
       archives  in  intentionally  destructive  ways.  Though if an attempt to
       join or restore the data you still care about succeeds after you’ve  run
       this  command, then that’s a fairly encouraging sign that it worked cor-
       rectly.  (The dev/compare-trees command in the source tree can  be  used
       to help test before/after results.)

METHODS
       --ff ref, --ff: ref dest
              fast-forward dest to match ref.  If dest is not specified and ref
              names  a  save,  set  dest  to the save’s branch.  If dest is not
              specified and ref names a branch or a tag, use the same name  for
              dest.

       --append ref, --append: ref dest
              append  all of the commits represented by ref to dest as new com-
              mits.  If ref names a directory/tree, append  a  new  commit  for
              that  tree.   If  dest  is  not specified and ref names a save or
              branch, set dest to the ref branch name.  If dest is  not  speci-
              fied and ref names a tag, use the same name for dest.

       --pick ref, --pick: ref dest
              append  the  single  commit named by ref to dest as a new commit.
              If dest is not specified and ref names a save, set  dest  to  the
              ref  branch  name.  If dest is not specified and ref names a tag,
              use the same name for dest.

       --force-pick ref, --force-pick: ref dest
              do the same thing as --pick, but don’t refuse to overwrite an ex-
              isting tag.

       --new-tag ref, --new-tag: ref dest
              create a dest tag for ref, but refuse to  overwrite  an  existing
              tag.   If dest is not specified and ref names a tag, use the same
              name for dest.

       --replace ref, --replace: ref dest
              clobber dest with ref, overwriting any existing tag, or replacing
              any existing branch.  If dest is not specified and  ref  names  a
              branch or tag, use the same name for dest.

       --unnamed ref
              copy ref into the destination repository, without any name, leav-
              ing  a  potentially  dangling  reference  until/unless the object
              named by ref is referred to some other way (cf. bup tag).

OPTIONS
       -s, --source=path
              use path as the source repository, instead of the default.

       -r, --remote=host:path
              store the indicated items on the given remote server.  If path is
              omitted, uses the default path on the remote  server  (you  still
              need to include the `:').  The connection to the remote server is
              made with SSH.  If you’d like to specify which port, user or pri-
              vate  key to use for the SSH connection, we recommend you use the
              ~/.ssh/config file.

       -c, --print-commits
              for each updated branch, print the new git commit id.

       -t, --print-trees
              for each updated branch,  print  the  new  git  tree  id  of  the
              filesystem root.

       --print-tags
              for each updated tag, print the new git id.

       -v, --verbose
              increase  verbosity (can be used more than once).  With -v, print
              the name of every item fetched, with -vv add directory names, and
              with -vvv add every filename.

       --bwlimit=bytes/sec
              don’t transmit more  than  bytes/sec  bytes  per  second  to  the
              server.   This  can  help avoid sucking up all your network band-
              width.  Use a suffix like k, M, or  G  to  specify  multiples  of
              1024, 1024*1024, 1024*1024*1024 respectively.

       -#, --compress=#
              set  the compression level to # (a value from 0-9, where 9 is the
              highest and 0 is no compression).  The default is 1 (fast,  loose
              compression)

       --ignore-missing
              ignore  missing objects encountered during a transfer.  Currently
              only supported by --unnamed, and potentially dangerous.

EXAMPLES
              # Update or copy the archives branch in src-repo to the local repository.
              $ bup get -s src-repo --ff archives

              # Append a particular archives save to the pruned-archives branch.
              $ bup get -s src-repo --pick: archives/2013-01-01-030405 pruned-archives

              # Update or copy the archives branch on remotehost to the local
              # repository.
              $ bup on remotehost get --ff archives

              # Update or copy the local branch archives to remotehost.
              $ bup get -r remotehost: --ff archives

              # Update or copy the archives branch in src-repo to remotehost.
              $ bup get -s src-repo -r remotehost: --ff archives

              # Update the archives-2 branch on remotehost to match archives.
              # If archives-2 exists and is not an ancestor of archives, bup
              # will refuse.
              $ bup get -r remotehost: --ff: archives archives-2

              # Replace the contents of branch y with those of x.
              $ bup get --replace: x y

              # Copy the latest local save from the archives branch to the
              # remote tag foo.
              $ bup get -r remotehost: --pick: archives/latest .tag/foo

              # Or if foo already exists:
              $ bup get -r remotehost: --force-pick: archives/latest .tag/foo

              # Append foo (from above) to the local other-archives branch.
              $ bup on remotehost get --append: .tag/foo other-archives

              # Append only the /home directory from archives/latest to only-home.
              $ bup get -s "$BUP_DIR" --append: archives/latest/home only-home

SEE ALSO
       bup-on(1), bup-tag(1), ssh_config(5)

BUP
       Part of the bup(1) suite.

AUTHORS
       Rob Browning ]8;;mailto:rlb@defaultvalue.org\rlb@defaultvalue.org]8;;\

Bup 0.33.7                         2025-01-11                        bup-get(1)

Generated by dwww version 1.16 on Sat Oct 3 07:34:48 CEST 2026.