We know from myths and fairy tales that there are many different kinds of powers in this world. One child is given a light saber, another a wizard’s education. The trick is not to amass all the different kinds of available power, but to use well the kind you’ve been granted.

— Susan Cain, Quiet


This package is orphaned. Although I believe it is still useful, I no longer use AFS and am no longer maintaining this collection of tools. If you would like to pick up maintenance of this package, please feel free. Contact me if you would like this page to redirect to its new home.


This is a collection of the additional scripts and utilities that various people at Stanford University developed to ease administration of AFS. It's a bit of a grab-bag of utilities that we wrote and tweaked over time. All of them are built around the idea of providing a more powerful command-line interface and are written as wrappers around the regular AFS commands.

frak compares a read/write AFS volume with its read-only replica and reports on all of the differences. We used this as a sanity check before releasing volumes to ensure we know what's changed. If you have bundle available, it can optionally create bundles to revert and reapply the changes.

fsr is a wrapper around the AFS fs command that turns all commands that act on files or directories into recursive commands. It can be configured to cross or not cross mount points. It's primarily useful with setacl but is occasionally useful with other commands.

lsmounts recursively searches through an AFS volume and finds and reports on mount points. It can optionally traverse mount points as well to find mount points in volumes mounted under a particular directory.

mvto is a smart vos move that automatically detects where the volume is currently located so that one doesn't have to provide the source location. It also supports other features handy for automating volume moves, including taking the list of volumes and optionally the list of destinations from a file, automatically handling read/write volumes with read-only replicas on the same server, moving read-only replica volumes, distributing the moved volumes across a set of servers and partitions, and double-checking that there's enough space on a destination partition before moving a volume to it.

partinfo is a wrapper around vos partinfo that provides more readable output and optionally colorizes it, making it easier to tell at a glance which partitions have free space and which are dangerously full.

volcreate is a smart vos create that takes a configuration file specifying where to put volumes of a particular type. It can spread volumes of a particular type across multiple server partitions to balance space usage, can create replicated volumes and ensure that a replica is present in each configured data center, can clone an existing volume when creating a new one, and handles setting ACLs at the same time as creating the volume. volcreate-logs is a specialized version of volcreate that handles automatically creating date-based log volumes for archiving of system logs.

volnuke is a smart vos remove that can determine the volume to remove from its mount point, can remove any replicas along with the read/write volume, can check whether the volume is still being accessed before removing it, and automatically removes the mount point as well as the volume if run on a mount point.

These scripts were originally written by various people at Stanford University over the years, most notably Neil Crellin, Carol Oliver, and Russ Allbery. They were originally maintained and distributed independently, but then were combined into the afs-admin-tools distribution so that they can more easily reuse common code. Much more work along those lines could be done.


All scripts are written in Perl and should work with Perl 5.006 or later. They require the AFS client binaries be available in either some standard locations (in /usr or /usr/local) or on the PATH.

frak requires Stat::lsMode, available from CPAN, and prefers to have a diff program that supports -u (such as GNU diff). mvto and volnuke require Date::Parse, available as part of the TimeDate distribution on CPAN. volcreate-logs can use AFS::Utils (part of the AFS Perl module suite), an aklog binary if run with a ticket cache specified on the command line, and a local sendmail command if told to mail reports.


The distribution:

afs-admin-tools 2.0 2013-01-16 Download PGP signature

An archive of older releases is also available.

A Debian package is available from my personal repository.

afs-admin-tools is maintained using the Git version control system. To check out the current development tree, clone:


You can also browse the current development source.


User documentation:

Developer documentation:


Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2010, 2011, 2013 The Board of Trustees of the Leland Stanford Junior University

These programs are free software; you may redistribute them and/or modify them under the same terms as Perl itself. This means that you may choose between the two licenses that Perl is released under: the GNU GPL and the Artistic License. Please see your Perl distribution for the details and copies of the licenses.

Last modified and spun 2014-08-10