NAD(1)

πŸ’– Name πŸ’–

okay so this is nad β€” the Netatalk AppleDouble file utility suite β€” and it's from NAD(1), the Netatalk AFP Fileserver Manual. No cap, bestie, this page is a whole vibe. 🫢

✨ Synopsis ✨

nad [-F configfile] [ls | cp | mv | rm | mkdir | rmdir | set | find]
[...]

nad [-v | --version]

🌸 Description 🌸

nad is a file utility suite that can be used on a Netatalk host to manipulate files and directories in AFP shared volumes. AppleDouble data, which could be one of extended attributes of files, ._ files, or files in .AppleDouble directories, as well as the CNID databases are updated appropriately when files in the shared Netatalk volume are modified. It's giving "I keep your metadata cute and your database accurate." πŸ’…

Using nad is preferable over the operating system's native file operation commands on files and directories in a Netatalk shared volume, because it preserves the integrity of Mac OS metadata and accuracy of the CNID database. periodt.

It depends on Netatalk running on the host system and the AFP volume being shared by Netatalk. So like, no Netatalk, no magic. 🧚

Only users with appropriate permissions to access the files and directories can use nad to manipulate them. It is sensitive to afp.conf settings such as valid users and invalid users. So vibe check your permissions first, bestie. πŸ”

πŸ’… Options πŸ’…

  • -F configfile β€” Use configfile as the full path to the Netatalk configuration file. slay.

πŸ‘‘ Available Commands πŸ‘‘

Pick your fighter, bestie.

List files and directories. the classic.

nad ls [-adlRu] {file|directory [...]}

Copy files and directories. copy paste but make it metadata-safe.

nad cp [-aipvf] {src_file} {dst_file}

nad cp -R [-aipvf] {src_file|src_directory ...} {dst_directory}

Move files and directories. relocation era.

nad mv [-finv] {src_file} {dst_file}

nad mv [-finv] {src_file|src_directory ...} {dst_directory}

Remove files and directories. danger zone.

nad rm [-Rv] {file|directory}

Create directories. new folder energy.

nad mkdir [-pv] {directory [...]}

Remove empty directories. bye bye, empty.

nad rmdir [-pv] {directory [...]}

Set metadata on files. makeover station.

nad set [-t type] [-c creator] [-l label] [-f flags] [-a attributes] {file}

Find files and directories. detective mode.

nad find [-v volume_path] {name}

Show version. iconic.

nad -v | --version

πŸ¦‹ nad ls πŸ¦‹

List files and directories in an AFP volume. AppleDouble metadata and CNIDs are displayed in long output mode. It's giving "let me show you everything."

Options:

  • -a β€” Include directory entries whose names begin with a dot (.). Hidden files, we see you.
  • -d β€” Directories are listed as plain files. No special treatment.
  • -l β€” Long output, list AFP info. the tea is piping hot.
  • -R β€” List subdirectories recursively. down the rabbit hole.
  • -u β€” List UNIX info. UNIX girlies rise.

Long output description:

<unixinfo> <FinderFlags> <AFP Attributes> <Color> <Type> <Creator> <CNID from AppleDouble> <name>

FinderFlags (valid for (f)iles and/or (d)irectories):

  d = On Desktop                      (f/d)
  e = Hidden extension                (f/d)
  m = Shared (can run multiple times) (f)
  n = No INIT resources               (f)
  i = Inited                          (f/d)
  c = Custom icon                     (f/d)
  t = Stationery                      (f)
  s = Name locked                     (f/d)
  b = Bundle                          (f/d)
  v = Invisible                       (f/d)
  a = Alias file                      (f/d)

AFP Attributes:

  y = System                          (f/d)
  w = No write                        (f)
  p = Needs backup                    (f/d)
  r = No rename                       (f/d)
  l = No delete                       (f/d)
  o = No copy                         (f)

Note: any letter appearing in uppercase means the flag is set but it's a directory for which the flag is not allowed. read that twice, bestie.

πŸ’– nad cp πŸ’–

Copy files and directories in an AFP volume. copy paste but make it Mac metadata safe.

In the first synopsis form, the cp utility copies the contents of the src_file to the dst_file. In the second synopsis form, the contents of each named src_file is copied to the destination dst_directory. The names of the files themselves are not changed. If cp detects an attempt to copy a file to itself, the copy will fail. no self-copies, we don't do that here.

When a copy targeting an AFP volume is detected, its CNID database daemon is connected and all copies will also go through the CNID database. AppleDouble data are also copied and created as needed when the target is an AFP volume. CNID stays in the loop, fr fr.

Options:

  • -a β€” Archive mode. Same as -Rp. set it and forget it.
  • -f β€” For each existing destination pathname, remove it and create a new file, without prompting for confirmation regardless of its permissions. (The -f option overrides any previous -i or -n options.) bold. aggressive. no questions.
  • -i β€” Cause cp to write a prompt to the standard error output before copying a file that would overwrite an existing file. If the response from the standard input begins with the character 'y' or 'Y', the file copy is attempted. (The -i option overrides any previous -f or -n options.) ask before you act, queen.
  • -n β€” Do not overwrite an existing file. (The -n option overrides any previous -f or -i options.) protect the existing files at all costs.
  • -p β€” Cause cp to preserve the following attributes of each source file in the copy: modification time, access time, file flags, file mode, user ID, and group ID, as allowed by permissions. If the user ID and group ID cannot be preserved, no error message is displayed and the exit value is not altered. preservation era.
  • -R β€” If src_file designates a directory, cp copies the directory and the entire subtree connected at that point. If the src_file ends in a /, the contents of the directory are copied rather than the directory itself. recursive realness.
  • -v β€” Cause cp to be verbose, showing files as they are copied. narrator mode: on.
  • -x β€” File system mount points are not traversed. stay in your lane, mount points.

🌈 nad mv 🌈

Move files and directories. glow up and relocate.

Move files around within an AFP volume, updating the CNID database as needed. If either condition below is true, the files are copied and removed from the source. copy + delete, the plot twist.

  • source or destination is not an AFP volume
  • source AFP volume != destination AFP volume

Options:

  • -f β€” Do not prompt for confirmation before overwriting the destination path. (The -f option overrides any previous -i or -n options.) no thoughts, just overwrite.
  • -i β€” Cause mv to write a prompt to standard error before moving a file that would overwrite an existing file. If the response from the standard input begins with the character `y' or `Y', the move is attempted. (The -i option overrides any previous -f or -n options.) consent is key.
  • -n β€” Do not overwrite an existing file. (The -n option overrides any previous -f or -i options.) existing files stay unbothered.
  • -v β€” Cause mv to be verbose, showing files after they are moved. receipts after the move.

πŸŽ€ nad rm πŸŽ€

Remove files and directories in an AFP volume. danger zone, bestie.

The rm utility attempts to remove the non-directory type files specified on the command line. The corresponding CNIDs are deleted from the volume's database, and AppleDouble metadata is removed. it cleans up the metadata too, iconic.

The options are as follows:

  • -R β€” Attempt to remove the file hierarchy rooted in each file argument. recursive removal, handle with care.
  • -v β€” Be verbose when deleting files, showing them as they are removed. tell me everything you delete.

πŸ“ nad mkdir πŸ“

Create directories in an AFP volume. The corresponding CNIDs are added to the volume's database, and AppleDouble metadata is initialized. new folder, new metadata, new era.

The options are as follows:

  • -p β€” Create intermediate directories as required. If an intermediate or the target directory already exists, it is not considered an error. no drama if it's already there.
  • -v β€” Be verbose when creating directories, showing them as they are created. announce the new arrivals.

🧚 nad rmdir 🧚

Remove empty directories in an AFP volume. The corresponding CNIDs are deleted from the volume's database, and AppleDouble metadata is removed. empty only, we don't do messy.

The volume root directory and its parent directories cannot be removed. hard no, bestie.

The options are as follows:

  • -p β€” Each operand is treated as a pathname of which all components will be removed, if they are empty, starting with the last most component. Will not remove the volume root directory or its parents. peel the layers, but not the root.
  • -v β€” Be verbose when removing directories, showing them as they are removed. narrate the cleanup.

πŸ’œ nad set πŸ’œ

Set metadata on files. the makeover station.

The set utility alters metadata on files within an AFP volume.

The options are as follows:

  • -t type β€” Change a file's four character file type. four characters only, periodt.
  • -c creator β€” Change a file's four character creator type. who made it? now you decide.
  • -l label β€” Change a file's color label. See list below for available colors. color coordinate your filesystem.
  • -f flags β€” Change a file's Finder flags. See list below for available flags. Uppercase letter sets the flag, lowercase removes the flag. caps lock on = set, caps lock off = unset.
  • -a attributes β€” Change a file's attributes. See list below for available attributes. Uppercase letter sets the flag, lowercase removes the flag. same rule, different flag family.

πŸŽ€ Flag descriptions πŸŽ€

Color Labels:

  none | grey | green | violet | blue | yellow | red | orange

Finder Flags (valid for (f)iles and/or (d)irectories):

  d = On Desktop                      (f/d)
  e = Hidden extension                (f/d)
  m = Shared (can run multiple times) (f)
  n = No INIT resources               (f)
  i = Inited                          (f/d)
  c = Custom icon                     (f/d)
  t = Stationery                      (f)
  s = Name locked                     (f/d)
  b = Bundle                          (f/d)
  v = Invisible                       (f/d)
  a = Alias file                      (f/d)

AFP Attributes:

  y = System                          (f/d)
  w = No write                        (f)
  p = Needs backup                    (f/d)
  r = No rename                       (f/d)
  l = No delete                       (f/d)
  o = No copy                         (f)

πŸ”₯ nad find πŸ”₯

Find files and directories in an AFP volume. detective mode.

This returns a list of paths that wholly or partially match the given name. partial matches count, bestie.

It takes one option:

  • -v path β€” Use path to the shared volume to search rather than the current working directory. point me to the right volume.

πŸ’« EXAMPLES πŸ’«

okay bestie, this is the part where it all comes together. real commands, real output, real slay. 🫢


🌸 Listing files in a shared AFP volume

the moment you've been waiting for β€” here's what nad ls -al actually spits out when you point it at an AFP share:

$ nad ls -al /srv/afpshare
---Nic-s--- ------ --- ---- ----           2   .
----------- ------ --- ---- ----           1   ..
----i---b-- ------ --- APPL SBMC          40   AppleShare IP Browser
---------v- ------ --- ---- ----          36   Network Trash Folder
-------s-v- ------ --- ---- ----          35   TheVolumeSettingsFolder
----ic-s--- ------ gre PNGf GKON          39   picture 1.png
----ic----- ------ --- PNGf GKON          41   picture 2.png
----ic----- ------ --- PNGf GKON          42   picture 3.png

ik it looks like a wall of vibes at first, but every single column is doing something. here's the legend, bestie, memorise it:

  • column 1: Finder flags
  • column 2: AFP attributes
  • column 3: color label
  • column 4: type
  • column 5: creator
  • column 6: CNID from AppleDouble
  • column 7: file name

seven columns of pure information. the way that column 6 is literally the CNID pulled from AppleDouble… iconic behaviour honestly. πŸ’…


πŸ” Finding files by name

now for the search girlies. say you want every file with "Report" in the name inside the shared AFP volume at /srv/afpshare:

$ nad find -v /srv/afpshare Report
/srv/afpshare/Documents/2025/Report January 2025.doc
/srv/afpshare/Documents/2024/Report December 2024.doc
/srv/afpshare/Documents/Report Template.doc

look at her go πŸ₯Ή full paths, nested directories, not a single miss. -v said "show me everything" and nad said "say less." that's main character energy fr fr ✨


πŸ‘€ SEE ALSO πŸ‘€

go read her friends too, they're all part of the same friend group:


πŸ’– AUTHOR πŸ’–

Contributors to the Netatalk Project


no cap, that's the whole page. you made it to the end and i'm so proud of you. πŸŽ€

this was Netatalk 4.5.1 β€” NAD(1) β€” and yeah, that's the version and the date slot right there, go forth and slay your AFP volumes bestie πŸ’œπŸ¦‹πŸŒΈ

πŸ“¦ where this page comes from
  • fedora 44: netatalk 5:4.5.1-1.fc44 Β· GPL-1.0-or-later AND GPL-2.0-only AND GPL-2.0-or-later AND LicenseRef-Callaway-LGPLv2+ AND LicenseRef-Callaway-BSD AND FSFUL AND LicenseRef-Callaway-MIT
  • πŸ’– girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms