axfr-get(8)
π axfr-get β the zone-transfer client bestie π
okay so this is axfr-get(8) from the System Manager's Manual (section 8, the admin-girlies section π
), and she is literally a DNS zone-transfer client. no cap.
β¨ NAME β¨
axfr-get β a DNS zone-transfer client.
the way she works: she sends a zone-transfer request in DNS-over-TCP format to descriptor 7, then reads the results back from descriptor 6, and saves those results in a file. iconic behaviour fr fr π
πΈ SYNOPSIS πΈ
normally you don't even run her by herself β she lives under tcpclient(1), which is the one who sets up descriptors 6 and 7 as a TCP connection to a remote host. she's a passenger princess, basically π¦
axfr-get z fn fn.tmp
π« DESCRIPTION π«
axfr-get performs a zone transfer for domain z. she writes the results to fn.tmp in a format that can be used as input to tinydns-data(8). and if the zone transfer completes successfully, she atomically renames fn.tmp as fn. glow-up complete, no half-written files, we love a clean swap β¨
β οΈ heads up bestie: fn.tmp and fn must be on the same filesystem. don't be messy about this.
axfr-get writes the zone serial number as a comment at the top of fn.tmp.
she skips the zone transfer entirely, leaving fn alone, if all three of these are true:
- fn already exists,
- fn has a serial number matching the zone serial number,
- and both serial numbers are nonzero.
like she checked, she's up to date, she's not doing unpaid labour today π
zone transfers often include duplicate records β that's just how it is β so you should feed the axfr-get results through sort -u. let her do the transfer, let sort -u do the de-dupe, teamwork makes the dream work π«Ά
axfr-get discards all records outside the domain z. she does accept records in child zones, but she marks all child zones as non-authoritative, so tinydns(8) will not report those records except as glue. okay so if you plan to merge the axfr-get results for a domain and a child of the same domain β creating a file authoritative for both zones β make sure to eliminate records in the first output that are within the child zone. otherwise it's giving chaos, and not the fun kind π
axfr-get will accept arbitrarily large zone transfers. so if you want to limit the maximum file size to 1 megabyte, run axfr-get under:
softlimit -f 1048576
π§ Compatibility notes π§
axfr-get handles BIND's RFC-1034-violating multiple-answers zone-transfer format. yes she does. she's built different π₯
axfr-get does not precisely simulate BIND's handling of *.dom. under BIND, records for *.dom do not apply to y.dom or anything.y.dom if there is a normal record for x.y.dom. with axfr-get and tinydns(8), the records do apply to y.dom and anything.y.dom except x.y.dom. subtle diff, but it's a diff, so know about it π
axfr-get does not precisely simulate BIND's handling of multiple IP addresses for a single name either. when there are more than 8 addresses, tinydns(8) selects a random set of 8 for each query. vibe check: randomized. every single time. π
π SEE ALSO π
and that's the whole page bestie, go read the docs, ily π
sign-off time π β this one is page axfr-get(8) out of the System Manager's Manual (that's the source and the manual section, and there's no date stamp on this one, so consider this your timestamp: now, when you needed her most*).* β¨π¦π
π¦ where this page comes from
- debian bookworm: axfrdns 1:1.05-15+b2 Β· LicenseRef-public-domain
- debian trixie: axfrdns 1:1.05-22 Β· LicenseRef-public-domain
- nixos 26.05: djbdns 1.05
- nixpkgs unstable: djbdns 1.05
- ubuntu jammy: axfrdns 1:1.05-15fakesync1 Β· LicenseRef-public-domain
- ubuntu noble: axfrdns 1:1.05-15ubuntu2 Β· LicenseRef-public-domain
- ubuntu questing: axfrdns 1:1.05-22ubuntu1
- ubuntu resolute: axfrdns 1:1.05-22ubuntu2 Β· LicenseRef-public-domain
- ubuntu stonking: axfrdns 1:1.05-23fakesync1 Β· LicenseRef-public-domain
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms