I chuckled at the "TRAILER!!!". I wonder what other file formats have silly things like this.
From `man 5 cpio`:
> The end of the archive is indicated by a special record with the pathname “TRAILER!!!”.
This makes me wonder if this means that the cpio format can't reliably be used for files with the path "TRAILER!!!". Why would the format even need a special record to indicate the end of the archive? Is there any reason why one wouldn't be able to rely on the end of the file to indicate the end of the archive?
GNU tar uses entries where other tar implementations will overwrite previous files on extraction, AIX tar uses special four character names for binary blobs (plus xattrs as names, both after the affected entry), Solaris cpio uses another mode bit for sparse files, ACLs, and xattrs (I actually really like this, it extracts as a simple to parse text file[0] on other implementations), and most pax commands on Linux can't read/write PAX archive files.
FWIW I make use of TRAILER!!! to let me know in a pipeline that everything worked (imagine a command earlier in the pipe fails early and not every entry is processed but ends on a boundary), but here the two pages of zeros that tar uses makes more sense (about the only thing tar does better than cpio).
$ PAGER='col -bx' man 5 cpio | awk '$1 == "mode" { print; while (getline) print }' | head
mode The mode specifies both the regular permissions and the file
type. It consists of several bit fields as follows:
0170000 This masks the file type bits.
0140000 File type value for sockets.
0120000 File type value for symbolic links. For symbolic links,
the link body is stored as file data.
0100000 File type value for regular files.
0060000 File type value for block special devices.
0040000 File type value for directories.
0020000 File type value for character special devices.
$ echo /dev/urandom | cpio -o | dd bs=6 skip=3 count=1 | od -tc
1 block
1+0 records in
1+0 records out
6 bytes transferred in 0.000025 secs (239675 bytes/sec)
0000000 0 2 0 6 6 6
0000006
(To be fair, anyone who tries to backup /dev deserves whatever they get...)