Table Of Contents

Previous topic

eosxd

Next topic

Using OAUTH2 for authentication

This Page

File Versioning

File versioning can be triggerd as a per directory policy using the extended attribute sys.versioning=<n> or via the eos file version command.

The paramter <n> in the extended attribute describes the maximum number of versions which should be kept according to a FIFO policy.

Additionally to the simple FIFO policy where the oldest versions are deleted once <n> versions are reached there are 11 predefined timebins, for which additional versions exceeding the versioning parameter <n> are kept.

Versions are kept in a hidden directory (visible with ls -la) which is composed by .sys.v#.<basename>

eos ls -la
drwxrwxrwx   1 root     root                0 Aug 29 15:33 .sys.v#.myfile
-rw-r-----   1 root     root             1824 Aug 29 15:33 myfile

The 11 time bins are defined as follows:

bin deletion policy
age<1d the first version entering this bin survives
1d<=age<2d the first version entering this bin survives
2d<=age<3d the first version entering this bin survives
3d<=age<4d the first version entering this bin survives
4d<=age<5d the first version entering this bin survives
5d<=age<6d the first version entering this bin survives
6d<=age<1w the first version entering this bin survives
1w<=age<2w the first version entering this bin survives
2w<=age<3w the first version entering this bin survives
3w<=age<1mo the first version entering this bin survives

Configuration of automatic versioning

Configure each directory which should apply versioning using the extended attribute sys.versioning:

# force 10 versions (FIFO)
eos attr set sys.versioning=10 version-dir

# upload initial file
eos cp /tmp/file /eos/version-dir/file

# versions are created on the fly with each upload - now 1 version
eos cp /tmp/file /eos/version-dir/file

# versions are created on the fly with each upload - now 2 versions
eos cp /tmp/file /eos/version-dir/file

# aso ....

Creating new versions

# force a new version
eos file version myfile

# force a new version with max 5 versions
eos file version myfile 5

List existing versions

eos file versions myfile
-rw-r-----   1 root     root             1824 Aug 29 15:17 1567084675.0014ede6
-rw-r-----   1 root     root             1824 Aug 29 15:33 1567085591.0014ede7
-rw-r-----   1 root     root             1824 Aug 29 15:33 1567085591.0014ede8
-rw-r-----   1 root     root             1824 Aug 29 15:33 1567085592.0014ede9

Purging existing versions

# remove all versions
eos file purge myfile 0

# keep 5 versions (FIFO)
eos file purge myfile 5