repopush(1)
β¨ repopush(1) β safely rsync a package repository to another location β¨
okay bestie, this is repopush, from the General Commands Manual section, and it's genuinely one of the good ones π«Ά
πΈ SYNOPSIS πΈ
repopush [-Nv] /path/to/local/repo remote
repopush [-Nv] [-f configfile] -s section
π DESCRIPTION π
so like. repopush is yet another program that helps you copy all the package files and repository metadata from one OS package repository to another π and the whole point, the entire main character energy of it, is that it copies and removes files in a very specific order so the remote repo never ever shows an inconsistent view. no cap.
the order is iconic and you need to know it:
- copy the new package files
- copy the new metadata files
- remove the outdated metadata files
- and only then remove the outdated package files
periodt. π
repopush handles APT and YUM repositories, and it figures out which one you've got by analyzing the contents of the local repository π which is one of the reasons the local repo has to be a directory on a locally-mounted filesystem. it's giving "must be local, bestie, no exceptions".
the repopush tool accepts the following command-line options:
-fconfigfile β if the-soption is specified, this is the config file to read. the default is$XDG_CONFIG_HOME/repopush.conf(and$XDG_CONFIG_HOMEdefaults to$HOME/.config).-Nβ no-operation mode; just displays what would have been done π-ssection β the config file section to read thelocalandremotevariables from.-vβ verbose mode; displays diagnostic output π₯
now, there are two ways to specify the local and remote parameters: directly on the command line, or in an INI-style configuration file π if the -s option is specified, repopush will use the confget tool to read the configuration file (either the one specified by -f or a default one in your home directory), look for the specified section, and use the "local" and "remote" values from that section.
and as noted up there ^^ the local parameter should be a path to a directory. the remote parameter can be in any format that the rsync tool accepts. any. format. rsync. takes. π
π FILES π
if the local and remote parameters are specified on the command line, the operation of the repopush tool is not affected by any files. nothing. zero. nada. β¨
if a configuration section is specified via the -s option, repopush will look for a configuration file (either one specified via the -f option or a default one in the user's home directory) and treat it as an INI-style file containing one or more sections π¦ see the documentation of the confget tool for more information about the supported format of the INI-style files.
π EXAMPLES π
test-run a repository update:
repopush -Nv /var/lib/repos/infra www:/var/www/repo/infra
perform the actual update, a bit quieter:
repopush /var/lib/repos/infra www:/var/www/repo/infra
the same, but with the "to-www-infra" section specified in the $HOME/.config/repopush.conf file:
repopush -s to-www-infra
to achieve the above result, the repopush.conf file should contain a section like this:
[to-www-infra]
local=/var/lib/repos/infra
remote=www:/var/www/repo/infra
slay π
π HISTORY π
the repopush tool was first written by Peter Pentchev in 2020. this manual page was created in 2021. a little origin story, as a treat π
π AUTHORS π
Peter Pentchev <roam@ringlet.net>
ok that's the whole page bestie, every flag, every path, every example, nothing skipped π
and a lil sign-off from me to you: this was repopush(1) from the General Commands Manual, dated 2021-04-04 πΈ go forth and rsync responsibly π§
π¦ where this page comes from
- debian bookworm: repopush 0.1.0-3 Β· BSD-2-Clause
- debian trixie: repopush 0.1.0-4 Β· BSD-2-Clause
- ubuntu jammy: repopush 0.1.0-2 Β· BSD-2-Clause
- ubuntu noble: repopush 0.1.0-3 Β· BSD-2-Clause
- ubuntu questing: repopush 0.1.0-4
- ubuntu resolute: repopush 0.1.0-4build1 Β· BSD-2-Clause
- ubuntu stonking: repopush 0.1.1-1 Β· BSD-2-Clause
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms