DAR_MANAGER(1)

๐Ÿ’พ dar_manager โ€” the manual, but make it make sense ๐Ÿ’…

okay bestie, listen โ€” this is the manual page for dar_manager from the General Commands Manual section. It's giving "backup database wrangler" energy and honestly? It's iconic. Let's get into it. ๐Ÿซถ


โœจ NAME โœจ

dar_manager โ€” compiles several backup contents into a database to ease file restoration ๐ŸŽ€

Like, it literally takes a bunch of backups and smooshes their content info into one little database so restoring stuff isn't a whole saga. No cap.


๐ŸŒˆ SYNOPSIS ๐ŸŒˆ

Okay so here's every single way you can call this thing. Don't skip, bestie, they all matter:

dar_manager [-v] -C [<path>/]<database> [-z <algo>]
dar_manager [-v] -B [<path>/]<database> -A [<path>/]<basename> [-9 <min-digits>] [[<path>/]<archive_basename>]
dar_manager [-v] -B [<path>/]<database> -l
dar_manager [-v] -B [<path>/]<database> -D <number>[-<number>]
dar_manager [-v] -B [<path>/]<database> -b <number> <new_archive_basename>
dar_manager [-v] -B [<path>/]<database> -p <number> <path>
dar_manager [-v] -B [<path>/]<database> -o [list of options to pass to dar]
dar_manager [-v] -B [<path>/]<database> -d [<path to dar command>]
dar_manager [-v] -B [<path>/]<database> [-N] [-k] [-w <date>] [-e "<extra options to dar>"] -r [list of files to restore]
dar_manager [-v] -B [<path>/]<database> -u <number>
dar_manager [-v] -B [<path>/]<database> -f file [-x]
dar_manager [-v] -B [<path>/]<database> -s
dar_manager [-v] -B [<path>/]<database> -m <number> <number>
dar_manager [-v] -B [<path>/]<database> -c
dar_manager [-v] -B [<path>/]<database> -i
dar_manager [-v] -B [<path>/]<database> -@ { <filename> | "-" }
dar_manager -h
dar_manager -V
lowkey that's a LOT of flags but don't panic, we're going through every single one. Deep breaths. ๐Ÿงš

๐Ÿ’– DESCRIPTION ๐Ÿ’–

So. dar_manager is part of the Disk Archive suite โ€” yes, the same family as dar itself, iykyk. โœจ

Its whole thing, its main character purpose, is to build and manage a database that holds the content information of many full, differential and incremental backups. Like, all of them. Together. Holding hands. ๐Ÿซถ

Then โ€” and this is the slay part โ€” you can hand that database to dar (see its -aefd option) instead of a single backup, and dar will restore:

  • a single file ๐Ÿ“
  • a directory tree ๐ŸŒธ
  • or a whole filesystem ๐Ÿ‘‘

โ€ฆin its latest state, or in the state it had before a given date (see dar's -af with -A option). ๐ŸŒˆ

And the way this saves you?? Bestie. You do not have to bother figuring out where each particular file's data lives when you're restoring. Not even a little.

Especially not when you're out here mixing full, differential and incremental backups โ€” and even worse, when you're also using binary delta. ๐Ÿ’€

You also don't have to stress about files that weren't present at the target date โ€” whether they got deleted, or straight up didn't exist yet. They're just... not your problem. Periodt. ๐Ÿ’…

tl;dr โ€” one database, all your backups, and dar figures out the rest so you don't have to. Obsessed, honestly.

โœจ COMMANDS โœจ

okay bestie, this is the whole menu of stuff you can actually do. every flag, every argument, no skips ๐Ÿ’…

  • -C, --create [<path>/]<database> โ€” makes you a brand new, completely empty database that'll go on to collect info about a bunch of archives. the <database> is a filename, and it's required for the -B option later. wanna destroy a <database>? just remove the file. that's it, that's the whole ritual ๐Ÿ—‘๏ธ
  • -B, --base [<path>/]<database> โ€” tells dar_manager which database to read or modify. the <database> file has to already exist, and it has to actually have a database structure (aka, make it with -C first, bestie).
  • -i, --interactive โ€” opens up a keyboard interactive text menu so you can do your operations on the given database. so like, if you want, you can completely dodge reading every other option on this page and just vibe with the interactive menu ๐ŸŽ€. but โ€” and this is the catch โ€” you'll always still have to create an empty database (-C) and restore files manually (-r). no shortcuts on those two, sorry.
  • -A, --add [<path>/]<basename> [ [<path>/]<archive_basename>] โ€” adds an archive to the database. an isolated catalogue works here too, but only if it was produced by dar version 1.2.0 or above. why? because an isolated catalogue made by an older version will always claim that no files are saved in the archive of reference ๐Ÿ˜ญ โ€” and in that case the fix is to hand over the archive itself as the argument. there's an optional second argument: the basename of the archive, for when it's different from the first argument (needed for extraction of files). for example, you could have an isolated catalogue as the first argument and the basename of the original archive (the one where the data actually lives) as the second. By default,
  • -l, --list โ€” shows you the info about all the archives compiled into the database. specifically, each archive gets a number, and some other options need that number to point at a particular archive inside the database. and listen โ€” nothing is stopping you from feeding the database several archives with the same basename! you'll just have to guess which one is being asked for under that name. :-) iconic chaos, honestly.
  • -D, --delete <number>[-<number>] โ€” removes an archive (or a whole range of archives) from the database. the number โ€” or the min and max number of the range โ€” matches whatever -l gave you. heads up: every archive number greater than the one(s) you delete gets decremented, so the numbering inside the database stays continuous. if you give a single number (not a range), it can also be negative, which means you're counting from the end. so -1 is the last archive in the base, -2 is the penultimate, etc. ๐Ÿฆ‹
  • -b, --basename <number> <new_archive_basename> โ€” lets you rename the archive basename (the one used when restoring files from it). here too, the number can be negative.
  • -p, --path <number> <path> โ€” lets you change the location of a given archive (used when restoring files from it). negative number allowed here too, bestie.
  • -o, --options [list of option to pass to dar] โ€” sets the option(s) to use when dar gets called. every call erases the previous setting, so no hoarding. the possible dar options are all the available ones except -x and simple arguments (the [list of path]) โ€” those get added by dar_manager itself.
  • -d, --dar [<path>] โ€” sets the path to dar. if you give it no argument, dar is expected to be chilling in the PATH.
  • -r, --restore [list of files or directories to restore] โ€” dar_manager restores all (and only) the files or directories you name, in their latest recorded status, or from before the date given by the -w option. if you name a directory, everything inside it โ€” subfiles and subdirectories โ€” gets restored recursively. you can filter some files out of that recursion using dar's usual filtering option (peep the dar man page ๐Ÿ‘€), which you can hand over next to -r via the -e option (below). if a file was recorded as having been removed at the date you're restoring to, it just... doesn't get restored. so if you restore into an empty directory, you'll get exactly the expected status of files and directories at that time โ€” existing files carry their content from that date, deleted or not-yet-existing files simply aren't there, and files filtered out of the backup aren't there either. because of all that, you can also restore over an existing filesystem: dar will warn you before overwriting files (see -w and -n options for dar), but it still won't remove files that were recorded as removed if they were present before the restoration started, and it won't touch existing files that live outside the backup โ€” whether that's because they were filtered out or because they were never part of any backup at all. one more thing: files listed after -r must never have an absolute path. they get restored under the directory set by dar's -R option (passed to dar through -o or -e), or by default, under the current directory.
โš ๏ธ this option is deprecated in favor of dar's -aefd option, which lets dar read a dar_manager database directly and restore data way more efficiently. still works, but like, iykyk ๐Ÿซถ
  • -u, --used <number> โ€” lists the files that the given archive owns as the last version available. so when nothing gets listed, that archive is no longer useful in the database and can be removed safely (-D option). if <number> is zero, all available files are listed, and the status given for each file in the database is the most recent one. negative numbers are allowed here too (see -D for the deets).
  • -f, --file <file> โ€” shows you which archive the given file is saved in, plus its modification date (mtime) and change date (ctime).
  • -x โ€” with the -f option, displays dates with subsecond information โฑ๏ธ
  • -s, --stats โ€” shows the number of most recent files per archive. this is the vibe check that helps you figure out which archive can be safely removed from the database.
  • -m, --move <number> <number> โ€” changes the order of archives in the database. first number = the archive to move, second number = the place it gets shifted to.

archive order matters, bestie: an old archive must have a smaller index than a recent archive. if you add archives in the order they were created, everything should be fine. but if a file has a more recent version in an archive with a smaller index, a warning gets issued (unless the -ai option is used). this can happen if you accidentally added an archive in the wrong order (old archive added after a recent one) โ€” in that case just using -m lets you fix the mistake. but if the problem is about a single file (or a tiny set of files), you should be asking yourself why that file has its modification date altered in a way that makes it pretend to be older than it really is. checking for signs of a rootkit might be a good idea ๐Ÿ’€

  • -c, --check โ€” checks the database consistency. specifically, the date ordering gets verified, and warnings are issued for each file that has a more recent version sitting in an archive with a smaller index inside the database. heads up: the -ai option makes -c useless.
  • -@, --batch <filename> โ€” lets you run several operations on a given database. all the operations are defined in the provided <filename>, and they all refer to the same database as defined by the -B switch on the command line. so this batch file must not contain -B, -C, -i or -ai (the -ai ones are global to the batch operation). the batch file layout is one command per line, so several arguments (like -l -v, for example) can sit together on a single line of the file โ€” and yes, -v works both on the command line, for verbose output about the batch operation steps, and inside the batch file, for verbose output of a particular batched command ๐ŸŒธ. arguments are separated by spaces or tabs, and any other characters get passed as-is. consequently, you should only need quotes (" or ') if you're using an argument that contains a space. last thing: comments can go on any line that begins with a hash character (#).
  • -h, --help โ€” displays help usage ๐Ÿฅฐ
  • -V, --version โ€” displays the software version โญ

โœจ OPTIONS โœจ (the rest of them, bestie, we're almost there ๐Ÿซถ)

  • -9, --min-digits <num> โ€” this sets the zeroed padding for the slice number, so like how many digits the slice filename gets padded out to (peep the dar man page at this exact same option for the deets, iykyk). Also: dar_manager will go hunting for the archive of reference in the command line that was used to create each archive โ€” but sometimes you gotta spell the archive name out yourself, for example if you went and renamed it. ๐Ÿ’…
  • -w, --when <date> โ€” okay so first, a lil sidebar: if you're using dar instead of dar_manager to restore from a dar_manager database, the behavior of this -w option is what you get with dar through the -af -A <date> syntax, where <date> has the exact same structure as described right here. Got it? Good. ๐ŸŽ€

Now the actual thing: this alters how the -r option behaves. It still restores the files in the most recent version available, but only before the given date โ€” any version with a more recent date just gets ignored, sorry bestie. ๐Ÿ’€

The <date> has to follow this format:

[ [ [year/]month/]day-]hour:minute[:second]

For example "22:10" means 10 PM past 10 of the current day, "7-22:10" means 10 PM past 10 on the 7th of the current month, "3/07-22:10" means the 7th of march at 22:10 of the current year, and "2002/03/31-14:00:00" is the date of the first dar's release ;-). Iconic. ๐ŸŒธ

The given date must be in the past, obviously โ€” no time travelling, bestie. ๐Ÿ˜ญ And here's the important part: it gets compared to the status of the saved files, NOT to the date at which the archives were made. So if a file was changed long ago but got saved in a recent (full) archive, it will still be elected for restoration even for dates older than when that archive was created. Flip side: a file saved a long time ago with an mtime that was set to a date in the future will not be elected for restoration when you give the date at which the archive was done. Same energy for metadata: if the ctime is in the future and only a metadata change has been recorded since a very old state, that future metadata change (permission, ownership...) will not be applied to the restored file โ€” though the data (and the previous metadata state) will be restored if it's older than the target date. periodt.

Note that the provided date is relative to the system timezone, which gets overridden if the TZ environment variable is set (see tzselect(1) for more details).
  • -e, --extra <options> โ€” passes some more options to dar. Here's the difference, bestie, pay attention ๐Ÿซถ: the -o option takes everything that follows on the command line as the argument to pass to dar and writes these in the database, whereas the -e option does not alter the database and takes only one argument. In other words, if you need to pass several options to dar via -e, you gotta wrap them in quotes (simple quotes ' or double quotes "). Example:
dar_manager -B database.dmd -e "-w -v -p -b -r -H 1" -r
some/files

while using the -o option you must not use quotes:

dar_manager -B database.dmd -o -w -v -p -b -r -H 1
  • -N, --ignore-options-in-base โ€” do not use the options stored in the database when calling dar for restoration. This one is only useful while restoring files from dar_manager, either directly (the -r option) or by using a batch file (the -@ option). โœจ
  • -k, --ignore-when-removed โ€” so by default, dar_manager does not ask dar to restore a file that has been removed at the requested date (or in the latest state available). That default is genuinely useful, for example to restore a directory in the state it had at a given date โ€” only the files that existed at that time get restored. ๐ŸŽ€ However, when you want to restore a file that got destroyed by accident, you need the -k option, so you don't have to figure out at which date that file existed just to be able to ask dar_manager to restore it in the state it had before that date. In other words, -k gives dar_manager a behavior that's backward compatible with the dar_manager released beside version 2.3.x of dar. slay. ๐Ÿ’…
  • -ai, --alter=ignore-order โ€” stops dar_manager from issuing a warning for every file that doesn't follow a chronological order of modification date when the archive number in the database is growing. bye warnings ๐Ÿ‘‹
  • -z, --compression <algo>[:<level>] โ€” available when creating or modifying a database content (the -C, -A, -D, -m, -i, -L options), this lets you set the compression algorithm and eventually the compression level to use when the database gets written to file. By default gzip:9 is used, but you can also use "none" for no compression, "bzip2", "xz" and "lzo" and other compression algorithms (see the -z option in dar's man page for an up to date list of available algorithms). Note: this option is only needed if you want to change the compression algorithm or level. Once it's defined โ€” either at database creation time using the -C option, or modified afterward โ€” the compression scheme is stored in the database header and used for writing the database back down to file. ๐ŸŒˆ
  • -Q โ€” do not display any message on stderr when not launched from a terminal (for example when launched from an at job or a crontab). But heads up bestie: any question to the user will be assumed to be a 'no' answer, which most of the time will abort the program. ๐Ÿ˜ญ
  • -v, --verbose โ€” displays additional information about what it's doing. she's chatty and we love that for her ๐Ÿ’–

๐Ÿšช EXIT CODES

dar_manager exits with the following code:

  • 0 โ€” Operation successful. ๐Ÿ’–
  • 1 โ€” see dar manual page for signification
  • 2 โ€” see dar manual page for signification
  • 3 โ€” see dar manual page for signification
  • 5 โ€” see dar manual page for signification
  • 7 โ€” see dar manual page for signification
  • 8 โ€” see dar manual page for signification
  • 11 and above โ€” dar called from dar_manager has exited with non zero status. Subtract 10 to this exit code to get dar's exit code. ๐Ÿงฎ

๐Ÿ“ก SIGNALS

dar_manager acts like dar (see the dar man page for the list of signals), and upon certain signal reception dar aborts cleanly. no messy exits in this house ๐Ÿ™ˆ


๐Ÿ‘€ SEE ALSO

dar(1), dar_xform(1), dar_slave(1), dar_cp(1), dar_split(1)


โš ๏ธ LIMITATIONS

At most 65534 archives can be compiled in a given database, which should be enough for most users, ngl. Dar_manager does not support encrypted archives for now, and an archive cannot be encrypted either. See the FAQ for a workaround. ๐Ÿซถ


๐Ÿ’€ KNOWN BUGS

https://github.com/Edrusb/DAR/issues


๐Ÿ‘‘ AUTHOR


and that's the whole page, bestie!! ๐ŸŽ€ the icon herself lives in the 3rd Berkeley Distribution, dated May 1st, 2026, and the page is literally called DAR_MANAGER(1) โ€” go forth and manage those databases, main character ๐Ÿ’…โœจ๐ŸŒธ

๐Ÿ“ฆ where this page comes from