---
obj: application
repo: https://codeberg.org/chrysn/unionfarm
rev: 2025-01-30
---

# unionfarm
This is a small utility for managing symlink farms. It takes a "farm" directory and any number of "data" directories, and creates (or updates) the union (or overlay) of the data directories in the farm directory by placing symlinks to data directories.

It is similar to
- union mounts (overlay/overlayfs) -- but works without system privileges; it is not live, but can then again err out on duplicate files rather than picking the highest ranking

Usage: `unionfarm <FARM> [DATA]...`

## Example

```
$ tree my-photos
my-photos
├── 2018/
│   └── Rome/
│       └── ...
└── 2019/
    └── Helsinki/
        └── DSCN2305.jpg
```

Assume you have a collection of photos as above, and want to see them overlaid with a friend's photos:

```
$ tree ~friend/photos
/home/friend/photos
├── 2018/
│   └── Amsterdam/
│       └── ...
└── 2019/
    └── Helsinki/
        └── DSC_0815.jpg
```

With unionfarm, you can create a shared view on them:

```
$ unionfarm all-photos my-photos ~friend/photos
$ tree all-photos
all-photos
├── 2018/
│   ├── Amsterdam -> /home/friend/photos/2018/Amsterdam/
│   └── Rome -> ../../my-photos/2018/Rome/
└── 2019/
    └── Helsinki/
        ├── DSC_0815.jpg -> /home/friend/photos/2019/Helsinki/DSC_0815.jpg
        └── DSCN2305.jpg -> ../../../my-photos/2019/Helsinki/DSCN2305.jpg
```
