DAR_SPLIT(1)
β¨ NAME β¨
dar_split β the dar helper that splits an archive over several tapes π
okay so picture this: your archive is huge, your tape is tiny, and you need them to be besties. that's literally dar_split's whole job. it's the sidekick you run alongside dar when you're reading or writing one giant archive across a bunch of tapes. π
πΈ SYNOPSIS πΈ
dar_split [-b <bytes>] [-r <rate>] { [-c <count>] split_input | [-s]
split_output } <filename>
dar_split -V
dar_split -h
π¦ DESCRIPTION π¦
dar_split is meant to be used with dar β it's the little helper that lets you read or write a big ol' archive from or to several tapes. no cap, that's the entire vibe. β¨
π COMMANDS π
dar_split has exactly two modes of operation, and they are: split_input and split_output. two moods. pick one. π
split_inputβ in this mode,dar_splitcopies <filename> over to its standard output. and like, <filename> can totally be a special device such as/dev/tape, or honestly any other inode that has the ability to access removable volumes. here's the cute part: whendar_splithits the end of <filename>, it doesn't just quit β it suspends and waits for you to press the return key before it continues. meanwhile you get to rewind and swap the tape, main character behavior. oncedar_splitis awake again, it reopens <filename> and sends its content to its standard output as if it were the continuation of everything it read before reaching the end of file. seamless. iconic. π«split_outputβ in this mode,dar_splitcopies its standard input to <filename>. but if <filename> is full? same deal:dar_splitsuspends and waits for you to press the return key to continue, and while it's napping you can rewind and change the tape. when it wakes up it reopens <filename> and keeps copying whatever hadn't been written yet. π«Ά
β οΈ pay attention bestie: if you don't change the destination media, the continuation of the data copy may erase what was written so far, depending on the type of media. so like... actually swap the tape, okay? π
π OPTIONS π
-sβ this option is only available insplit_outputmode, and it makesdar_splitdo sync writes instead of normal writes. the tradeoff? it drastically reduces performance. but sometimes it's genuinely necessary, like in those situations where your operating system cache reports a write operation as successful while the cache's underlying medium is already full. rude of it, honestly. π-b <bytes>β this one stops the read and write system calls from exceeding the given amount of bytes, instead of (by default) using the maximum amount the system permits. yes it may reduce performance sincedar_splithas to make more system calls to achieve the same operation, but it can cope this way with some devices that accept only a limited buffer size per system call. sometimes you gotta go slow to go fast. π-r <rate>β this limits the transfer rate to the given value, measured in bytes per second. throttling, but make it fashion. π-c <count>β this limits the number of tapesdar_splitwill read data from. if you already know that number ahead of time, this saves you from having to stopdar_splitby hand once the archive has been fully read β it'll just stop on its own once the end of file of the *<count>*th last file is reached. obviously this option is only available insplit_inputmode. π
π EXAMPLES OF USE π
creating an archive over several tapes π
dar -c - ...possibily other dar options... | dar_split split_output /dev/tape
here, dar generates the archive to its standard output, which gets read by dar_split and copied to /dev/tape. and when the tape reaches its end, dar_split asks you to hit return to continue. so polite of it. π₯Ή
reading an archive splitted over several tapes π¦
dar_split split_input /dev/tape | dar -t - --sequential-read
...possibily other dar options...
here, dar_split reads /dev/tape and sends its content to dar, which must be used in --senquential-read mode in order to read an archive from its standard input without the help of dar_slave. and when the tape reaches its end, dar_split asks you to hit return to continue. again. very consistent. π
note that dar_split can also be used with tar for the same purpose as with dar:
tar -cz ... | dar_split split_output /dev/tape
without the -f option and without the TAPE environment variable, tar sends the tar archive to stdout, which gets fed to dar_split for slicing. π
dar_split split_input /dev/tape | tar -tz
without the -f option and without the TAPE environment variable, tar reads the tar archive from stdin β however, you must specify the correct option corresponding to the compression used at archive creation time. don't forget that part, bestie. π
the advantage here is being able to save a huge dar or tar archive onto several tapes that could be either partially filled or have different sizes, without having to calculate the size of slices in advance to specify. the drawback is that this implies sequential reading for dar (and for tar too, but like, tar cannot do anything else anyway π).
With or without filesystem π
you can use dar_split with floppies, zip/jazz disks, or a usb key too β but ngl, it has many disadvantages compared to the normal way of using this media. doing it that way means you're not relying on a filesystem, so you can't have direct access to file contents, which dar totally knows how to take advantage of. instead you're stuck with sequential read access, which is long because it requires reading the whole archive (same way as tar does). π
when you instead use dar alone in normal mode (non-sequential reading mode, using filenames instead of standard input/output), you get the opportunity to create redundancy data beside dar slices thanks to par2 β which is not possible without a filesystem. and at restoration time, thanks to dar's archive catalog, dar can directly seek to the file's data you want to restore, which is very quick compared to reading/unciphering/uncompressing the whole archive... β¨
π note that copying tape contents generated bydar_splitto different files whose names would correspond to dar slices does not make a valid multi-sliced archive, because the slice header is missing in slices (except in the first one). you can, however, concatenate all the pieces of data generated bydar_splitand have a valid single-sliced dar archive that you can use in direct access mode. however β attention must be paid not to add any extra data after the data generated by dar throughdar_split(in particular if the last tape was not full). if you do that, you can only read the archive with--sequential-readmode. no take-backs. π¨
π₯ EXIT CODES π₯
dar_split exits with the following codes:
0β upon normal execution π1β syntax error on command-line π¬2β could not open source or destination files π
π SIGNALS π
any signal sent to dar_split except SIG_PIPE will abort the program immediately. so like, don't send it signals unless you mean it. π€
π SEE ALSO π
dar(1), dar_xform(1), dar_manager(1), dar_slave(1), dar_cp(1)
π KNOWN BUGS π
https://github.com/Edrusb/DAR/issues β go yell there, the devs are lovely about it. π«Ά
π AUTHOR π
Denis Corbin France Europe
and that's the whole page, bestie!! π this one shipped as part of the 3rd Berkeley Distribution, dated August 2nd, 2025. go split some tapes, you absolute icon. πβ¨π
π¦ where this page comes from
- alpine 3.24: dar-doc 2.8.5-r0 Β· GPL-2.0-or-later
- fedora 43: dar 2.8.6-1.fc43 Β· GPL-2.0-or-later
- fedora 44: dar 2.8.4-1.fc44 Β· GPL-2.0-or-later
- fedora 44: dar 2.8.6-1.fc44 Β· GPL-2.0-or-later
- nixos 26.05: dar 2.8.2
- nixpkgs unstable: dar 2.8.6
- ubuntu resolute: dar 2.8.3-1build1 Β· GPL-2.0-only
- ubuntu stonking: dar 2.8.5-1 Β· GPL-2.0-only
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms