Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Backups live 1 day longer than value in AUTO_BACKUP_DAYS_TO_LIVE #289

Closed
ikaruswill opened this issue Mar 16, 2021 · 5 comments · Fixed by #290
Closed

Backups live 1 day longer than value in AUTO_BACKUP_DAYS_TO_LIVE #289

ikaruswill opened this issue Mar 16, 2021 · 5 comments · Fixed by #290

Comments

@ikaruswill
Copy link
Contributor

ikaruswill commented Mar 16, 2021

Background

There's an issue with the backups living exactly 1 day longer than they should, as demonstrated in my configuration and the current state of the backups directory below.

This is a big deal for people like myself who run Valheim servers on limited storage capacity, therefore timely pruning of backups is crucial.

Expected behaviour

  • Current time is:
root@valheim-59978997b9-5kv96:/home/steam/backups# date
Tue Mar 16 17:16:19 +08 2021
  • With a TTL of 1 day, I envisioned backups to live for exactly 24 hours, and therefore, the earliest backup that I should see is: Tue Mar 15 17:15:00 +08 2021

Current behaviour

I'm still seeing backups up till Tue Mar 15 00:00:00 +08 2021 which are nearly 2 days old

Problem

I've dug and found that the error lies in invalid use of the -mtime +${AUTO_BACKUP_DAYS_TO_LIVE:-5} parameter in find in the auto backup script.

The POSIX specification for find states:

-mtime n
The primary shall evaluate as true if the file modification time subtracted from the initialization time, divided by 86400 (with any remainder discarded), is n.

  • In my specific example, taking the earliest backup archive on Mar 15 00:00 +08, the linux epoch timestamp is:
    Mar 15 00:00 +08 2021 => 1615737600

  • Current time:

root@valheim-59978997b9-5kv96:/home/steam/backups# date +%s
1615886883
  • Performing the calculations:
1615886883 - 1615737600 = 149283
149283 / 86400 = 1.7278125

It makes sense here that any files more than 1 day old should be caught by the find command

Cause

However, when using -mtime +${AUTO_BACKUP_DAYS_TO_LIVE:-5}, which means to discard any backups with mtime <-> current time difference > AUTO_BACKUP_DAYS_TO_LIVE, digging further into the POSIX spec for find:

In the descriptions, wherever n is used as a primary argument, it shall be interpreted as a decimal integer optionally preceded by a ( '+' ) or ( '-' ), as follows:
+n More than n.
n Exactly n.
-n Less than n.

Note that the n here is being interpreted as a decimal integer means that mtime difference value is interpreted as an integer.

  • So the missing step in the above calculation is:
n = int(1.7278125) = 1

Using mtime +n means that it will only find files with int(n) > 1, where the value 1.7 will not make the cut until it reaches 2.0, which by then means it is already 2 days old (48h)

Suggested fix

  • Remove the +, demonstrated in the Proof of concept section below
  • Will file the PR shortly.

Supporting information

Environment variables:

root@valheim-59978997b9-5kv96:/home/steam/backups# env | grep AUTO
AUTO_BACKUP_REMOVE_OLD=1
AUTO_UPDATE=1
AUTO_BACKUP_ON_SHUTDOWN=0
AUTO_BACKUP=1
AUTO_BACKUP_ON_UPDATE=0
AUTO_BACKUP_DAYS_TO_LIVE=1
AUTO_UPDATE_SCHEDULE=5 8 * * *
AUTO_BACKUP_SCHEDULE=*/15 * * * *

Backups directory:

root@valheim-59978997b9-5kv96:/home/steam/backups# ls -la
total 5709372
drwxr-xr-x 2 steam steam    28672 Mar 16 17:15 .
drwxr-xr-x 1 steam steam     4096 Mar 16 02:35 ..
-rw-r--r-- 1 steam steam 38013742 Mar 15 00:00 20210315-000001-backup.tar.gz
-rw-r--r-- 1 steam steam 38013742 Mar 15 00:15 20210315-001501-backup.tar.gz
-rw-r--r-- 1 steam steam 38042424 Mar 15 00:30 20210315-003001-backup.tar.gz
-rw-r--r-- 1 steam steam 38060625 Mar 15 00:45 20210315-004501-backup.tar.gz
-rw-r--r-- 1 steam steam 38060631 Mar 15 01:00 20210315-010001-backup.tar.gz
-rw-r--r-- 1 steam steam 38060631 Mar 15 01:15 20210315-011502-backup.tar.gz
-rw-r--r-- 1 steam steam 38060629 Mar 15 01:30 20210315-013001-backup.tar.gz
-rw-r--r-- 1 steam steam 38060626 Mar 15 01:45 20210315-014502-backup.tar.gz
-rw-r--r-- 1 steam steam 38060625 Mar 15 02:00 20210315-020001-backup.tar.gz
-rw-r--r-- 1 steam steam 38060625 Mar 15 02:15 20210315-021501-backup.tar.gz
-rw-r--r-- 1 steam steam 38060626 Mar 15 02:30 20210315-023001-backup.tar.gz
-rw-r--r-- 1 steam steam 38060626 Mar 15 02:45 20210315-024501-backup.tar.gz
-rw-r--r-- 1 steam steam 38060624 Mar 15 03:00 20210315-030001-backup.tar.gz
-rw-r--r-- 1 steam steam 38060624 Mar 15 03:15 20210315-031501-backup.tar.gz
-rw-r--r-- 1 steam steam 38060625 Mar 15 03:30 20210315-033001-backup.tar.gz
-rw-r--r-- 1 steam steam 38060628 Mar 15 03:45 20210315-034501-backup.tar.gz
-rw-r--r-- 1 steam steam 38060628 Mar 15 04:00 20210315-040001-backup.tar.gz
-rw-r--r-- 1 steam steam 38060628 Mar 15 04:15 20210315-041501-backup.tar.gz
-rw-r--r-- 1 steam steam 38060628 Mar 15 04:30 20210315-043001-backup.tar.gz
-rw-r--r-- 1 steam steam 38060630 Mar 15 04:45 20210315-044501-backup.tar.gz
-rw-r--r-- 1 steam steam 38060626 Mar 15 05:00 20210315-050001-backup.tar.gz
-rw-r--r-- 1 steam steam 38060626 Mar 15 05:15 20210315-051501-backup.tar.gz
-rw-r--r-- 1 steam steam 38060624 Mar 15 05:30 20210315-053001-backup.tar.gz
-rw-r--r-- 1 steam steam 38060630 Mar 15 05:45 20210315-054502-backup.tar.gz
-rw-r--r-- 1 steam steam 38060630 Mar 15 06:00 20210315-060001-backup.tar.gz
-rw-r--r-- 1 steam steam 38060625 Mar 15 06:15 20210315-061501-backup.tar.gz
-rw-r--r-- 1 steam steam 38060626 Mar 15 06:30 20210315-063001-backup.tar.gz
-rw-r--r-- 1 steam steam 38060626 Mar 15 06:45 20210315-064502-backup.tar.gz
-rw-r--r-- 1 steam steam 38060626 Mar 15 07:00 20210315-070001-backup.tar.gz
-rw-r--r-- 1 steam steam 38060625 Mar 15 07:15 20210315-071501-backup.tar.gz
-rw-r--r-- 1 steam steam 38060623 Mar 15 07:30 20210315-073001-backup.tar.gz
-rw-r--r-- 1 steam steam 38060621 Mar 15 07:45 20210315-074501-backup.tar.gz
-rw-r--r-- 1 steam steam 38060621 Mar 15 08:00 20210315-080001-backup.tar.gz
-rw-r--r-- 1 steam steam 38060625 Mar 15 08:15 20210315-081501-backup.tar.gz
-rw-r--r-- 1 steam steam 38060623 Mar 15 08:30 20210315-083001-backup.tar.gz
-rw-r--r-- 1 steam steam 38060620 Mar 15 08:45 20210315-084501-backup.tar.gz
-rw-r--r-- 1 steam steam 38060620 Mar 15 09:00 20210315-090001-backup.tar.gz
-rw-r--r-- 1 steam steam 38060622 Mar 15 09:15 20210315-091501-backup.tar.gz
-rw-r--r-- 1 steam steam 38060629 Mar 15 09:30 20210315-093001-backup.tar.gz
-rw-r--r-- 1 steam steam 38060630 Mar 15 09:45 20210315-094501-backup.tar.gz
-rw-r--r-- 1 steam steam 38060630 Mar 15 10:00 20210315-100001-backup.tar.gz
-rw-r--r-- 1 steam steam 38060625 Mar 15 10:15 20210315-101501-backup.tar.gz
-rw-r--r-- 1 steam steam 38060626 Mar 15 10:30 20210315-103001-backup.tar.gz
-rw-r--r-- 1 steam steam 38060632 Mar 15 10:45 20210315-104501-backup.tar.gz
-rw-r--r-- 1 steam steam 38060632 Mar 15 11:00 20210315-110002-backup.tar.gz
-rw-r--r-- 1 steam steam 38060626 Mar 15 11:15 20210315-111501-backup.tar.gz
-rw-r--r-- 1 steam steam 38060628 Mar 15 11:30 20210315-113001-backup.tar.gz
-rw-r--r-- 1 steam steam 38060629 Mar 15 11:45 20210315-114501-backup.tar.gz
-rw-r--r-- 1 steam steam 38060629 Mar 15 12:00 20210315-120001-backup.tar.gz
-rw-r--r-- 1 steam steam 38060626 Mar 15 12:15 20210315-121501-backup.tar.gz
-rw-r--r-- 1 steam steam 38060626 Mar 15 12:30 20210315-123001-backup.tar.gz
-rw-r--r-- 1 steam steam 38060626 Mar 15 12:45 20210315-124501-backup.tar.gz
-rw-r--r-- 1 steam steam 38060626 Mar 15 13:00 20210315-130001-backup.tar.gz
-rw-r--r-- 1 steam steam 38060629 Mar 15 13:15 20210315-131501-backup.tar.gz
-rw-r--r-- 1 steam steam 38060632 Mar 15 13:30 20210315-133001-backup.tar.gz
-rw-r--r-- 1 steam steam 38060629 Mar 15 13:45 20210315-134501-backup.tar.gz
-rw-r--r-- 1 steam steam 38060629 Mar 15 14:00 20210315-140001-backup.tar.gz
-rw-r--r-- 1 steam steam 38060626 Mar 15 14:15 20210315-141501-backup.tar.gz
-rw-r--r-- 1 steam steam 38060629 Mar 15 14:30 20210315-143001-backup.tar.gz
-rw-r--r-- 1 steam steam 38060623 Mar 15 14:45 20210315-144501-backup.tar.gz
-rw-r--r-- 1 steam steam 38060623 Mar 15 15:00 20210315-150001-backup.tar.gz
-rw-r--r-- 1 steam steam 38060627 Mar 15 15:15 20210315-151501-backup.tar.gz
-rw-r--r-- 1 steam steam 38060627 Mar 15 15:30 20210315-153001-backup.tar.gz
-rw-r--r-- 1 steam steam 38060622 Mar 15 15:45 20210315-154501-backup.tar.gz
-rw-r--r-- 1 steam steam 38060622 Mar 15 16:00 20210315-160001-backup.tar.gz
-rw-r--r-- 1 steam steam 38060625 Mar 15 16:15 20210315-161501-backup.tar.gz
-rw-r--r-- 1 steam steam 38060622 Mar 15 16:30 20210315-163001-backup.tar.gz
-rw-r--r-- 1 steam steam 38060623 Mar 15 16:45 20210315-164502-backup.tar.gz
-rw-r--r-- 1 steam steam 38060623 Mar 15 17:00 20210315-170001-backup.tar.gz
-rw-r--r-- 1 steam steam 38060622 Mar 15 17:15 20210315-171501-backup.tar.gz
-rw-r--r-- 1 steam steam 38060627 Mar 15 17:30 20210315-173001-backup.tar.gz
-rw-r--r-- 1 steam steam 38060628 Mar 15 17:45 20210315-174501-backup.tar.gz
-rw-r--r-- 1 steam steam 38060628 Mar 15 18:00 20210315-180001-backup.tar.gz
-rw-r--r-- 1 steam steam 38060629 Mar 15 18:15 20210315-181501-backup.tar.gz
-rw-r--r-- 1 steam steam 38060627 Mar 15 18:30 20210315-183001-backup.tar.gz
-rw-r--r-- 1 steam steam 38060631 Mar 15 18:45 20210315-184501-backup.tar.gz
-rw-r--r-- 1 steam steam 38060631 Mar 15 19:00 20210315-190001-backup.tar.gz
-rw-r--r-- 1 steam steam 38060626 Mar 15 19:15 20210315-191501-backup.tar.gz
-rw-r--r-- 1 steam steam 38060624 Mar 15 19:30 20210315-193001-backup.tar.gz
-rw-r--r-- 1 steam steam 38060632 Mar 15 19:45 20210315-194501-backup.tar.gz
-rw-r--r-- 1 steam steam 38060632 Mar 15 20:00 20210315-200001-backup.tar.gz
-rw-r--r-- 1 steam steam 38060626 Mar 15 20:15 20210315-201501-backup.tar.gz
-rw-r--r-- 1 steam steam 38060630 Mar 15 20:30 20210315-203001-backup.tar.gz
-rw-r--r-- 1 steam steam 38060630 Mar 15 20:45 20210315-204501-backup.tar.gz
-rw-r--r-- 1 steam steam 38060629 Mar 15 21:00 20210315-210001-backup.tar.gz
-rw-r--r-- 1 steam steam 38060625 Mar 15 21:15 20210315-211501-backup.tar.gz
-rw-r--r-- 1 steam steam 38060621 Mar 15 21:30 20210315-213002-backup.tar.gz
-rw-r--r-- 1 steam steam 38060621 Mar 15 21:45 20210315-214501-backup.tar.gz
-rw-r--r-- 1 steam steam 38060625 Mar 15 22:00 20210315-220001-backup.tar.gz
-rw-r--r-- 1 steam steam 38060626 Mar 15 22:15 20210315-221501-backup.tar.gz
-rw-r--r-- 1 steam steam 38060622 Mar 15 22:30 20210315-223001-backup.tar.gz
-rw-r--r-- 1 steam steam 38060622 Mar 15 22:45 20210315-224501-backup.tar.gz
-rw-r--r-- 1 steam steam 38066919 Mar 15 23:00 20210315-230001-backup.tar.gz
-rw-r--r-- 1 steam steam 38096039 Mar 15 23:15 20210315-231501-backup.tar.gz
-rw-r--r-- 1 steam steam 38190010 Mar 15 23:30 20210315-233001-backup.tar.gz
-rw-r--r-- 1 steam steam 38190010 Mar 15 23:45 20210315-234501-backup.tar.gz
-rw-r--r-- 1 steam steam 38304878 Mar 16 00:00 20210316-000001-backup.tar.gz
-rw-r--r-- 1 steam steam 38413606 Mar 16 00:15 20210316-001502-backup.tar.gz
-rw-r--r-- 1 steam steam 38535624 Mar 16 00:30 20210316-003001-backup.tar.gz
-rw-r--r-- 1 steam steam 38535624 Mar 16 00:45 20210316-004501-backup.tar.gz
-rw-r--r-- 1 steam steam 38661742 Mar 16 01:00 20210316-010002-backup.tar.gz
-rw-r--r-- 1 steam steam 38796817 Mar 16 01:15 20210316-011501-backup.tar.gz
-rw-r--r-- 1 steam steam 38916870 Mar 16 01:30 20210316-013001-backup.tar.gz
-rw-r--r-- 1 steam steam 38916870 Mar 16 01:45 20210316-014501-backup.tar.gz
-rw-r--r-- 1 steam steam 39054157 Mar 16 02:00 20210316-020001-backup.tar.gz
-rw-r--r-- 1 steam steam 39208318 Mar 16 02:15 20210316-021501-backup.tar.gz
-rw-r--r-- 1 steam steam 39278367 Mar 16 02:30 20210316-023001-backup.tar.gz
-rw-r--r-- 1 steam steam 39278366 Mar 16 02:45 20210316-024501-backup.tar.gz
-rw-r--r-- 1 steam steam 34436290 Mar 16 03:00 20210316-030001-backup.tar.gz
-rw-r--r-- 1 steam steam 34436290 Mar 16 03:15 20210316-031501-backup.tar.gz
-rw-r--r-- 1 steam steam 29591240 Mar 16 03:30 20210316-033001-backup.tar.gz
-rw-r--r-- 1 steam steam 29591240 Mar 16 03:45 20210316-034501-backup.tar.gz
-rw-r--r-- 1 steam steam 29591240 Mar 16 04:00 20210316-040001-backup.tar.gz
-rw-r--r-- 1 steam steam 29591240 Mar 16 04:15 20210316-041501-backup.tar.gz
-rw-r--r-- 1 steam steam 29591237 Mar 16 04:30 20210316-043001-backup.tar.gz
-rw-r--r-- 1 steam steam 29591236 Mar 16 04:45 20210316-044501-backup.tar.gz
-rw-r--r-- 1 steam steam 29591239 Mar 16 05:00 20210316-050001-backup.tar.gz
-rw-r--r-- 1 steam steam 29591239 Mar 16 05:15 20210316-051501-backup.tar.gz
-rw-r--r-- 1 steam steam 29591237 Mar 16 05:30 20210316-053001-backup.tar.gz
-rw-r--r-- 1 steam steam 29591239 Mar 16 05:45 20210316-054501-backup.tar.gz
-rw-r--r-- 1 steam steam 29591241 Mar 16 06:00 20210316-060001-backup.tar.gz
-rw-r--r-- 1 steam steam 29591241 Mar 16 06:15 20210316-061501-backup.tar.gz
-rw-r--r-- 1 steam steam 29591234 Mar 16 06:30 20210316-063001-backup.tar.gz
-rw-r--r-- 1 steam steam 29591239 Mar 16 06:45 20210316-064501-backup.tar.gz
-rw-r--r-- 1 steam steam 29591237 Mar 16 07:00 20210316-070001-backup.tar.gz
-rw-r--r-- 1 steam steam 29591237 Mar 16 07:15 20210316-071501-backup.tar.gz
-rw-r--r-- 1 steam steam 29591236 Mar 16 07:30 20210316-073001-backup.tar.gz
-rw-r--r-- 1 steam steam 29591236 Mar 16 07:45 20210316-074501-backup.tar.gz
-rw-r--r-- 1 steam steam 29591232 Mar 16 08:00 20210316-080001-backup.tar.gz
-rw-r--r-- 1 steam steam 29591232 Mar 16 08:15 20210316-081501-backup.tar.gz
-rw-r--r-- 1 steam steam 29591237 Mar 16 08:30 20210316-083001-backup.tar.gz
-rw-r--r-- 1 steam steam 29591236 Mar 16 08:45 20210316-084501-backup.tar.gz
-rw-r--r-- 1 steam steam 29591235 Mar 16 09:00 20210316-090001-backup.tar.gz
-rw-r--r-- 1 steam steam 29591235 Mar 16 09:15 20210316-091501-backup.tar.gz
-rw-r--r-- 1 steam steam 29591235 Mar 16 09:30 20210316-093001-backup.tar.gz
-rw-r--r-- 1 steam steam 29591237 Mar 16 09:45 20210316-094501-backup.tar.gz
-rw-r--r-- 1 steam steam 29591239 Mar 16 10:00 20210316-100001-backup.tar.gz
-rw-r--r-- 1 steam steam 29591239 Mar 16 10:15 20210316-101501-backup.tar.gz
-rw-r--r-- 1 steam steam 29591245 Mar 16 10:30 20210316-103001-backup.tar.gz
-rw-r--r-- 1 steam steam 29591233 Mar 16 10:45 20210316-104502-backup.tar.gz
-rw-r--r-- 1 steam steam 29591231 Mar 16 11:00 20210316-110001-backup.tar.gz
-rw-r--r-- 1 steam steam 29591231 Mar 16 11:15 20210316-111501-backup.tar.gz
-rw-r--r-- 1 steam steam 29591235 Mar 16 11:30 20210316-113001-backup.tar.gz
-rw-r--r-- 1 steam steam 29591234 Mar 16 11:45 20210316-114502-backup.tar.gz
-rw-r--r-- 1 steam steam 29570149 Mar 16 12:00 20210316-120001-backup.tar.gz
-rw-r--r-- 1 steam steam 29591227 Mar 16 12:15 20210316-121501-backup.tar.gz
-rw-r--r-- 1 steam steam 29591235 Mar 16 12:30 20210316-123001-backup.tar.gz
-rw-r--r-- 1 steam steam 29591238 Mar 16 12:45 20210316-124501-backup.tar.gz
-rw-r--r-- 1 steam steam 29591238 Mar 16 13:00 20210316-130002-backup.tar.gz
-rw-r--r-- 1 steam steam 29591235 Mar 16 13:15 20210316-131501-backup.tar.gz
-rw-r--r-- 1 steam steam 29591237 Mar 16 13:30 20210316-133001-backup.tar.gz
-rw-r--r-- 1 steam steam 29591237 Mar 16 13:45 20210316-134502-backup.tar.gz
-rw-r--r-- 1 steam steam 29591237 Mar 16 14:00 20210316-140001-backup.tar.gz
-rw-r--r-- 1 steam steam 29591237 Mar 16 14:15 20210316-141501-backup.tar.gz
-rw-r--r-- 1 steam steam 29591237 Mar 16 14:30 20210316-143001-backup.tar.gz
-rw-r--r-- 1 steam steam 29591240 Mar 16 14:45 20210316-144501-backup.tar.gz
-rw-r--r-- 1 steam steam 29591240 Mar 16 15:00 20210316-150001-backup.tar.gz
-rw-r--r-- 1 steam steam 29591231 Mar 16 15:15 20210316-151501-backup.tar.gz
-rw-r--r-- 1 steam steam 29591239 Mar 16 15:30 20210316-153001-backup.tar.gz
-rw-r--r-- 1 steam steam 29591243 Mar 16 15:45 20210316-154501-backup.tar.gz
-rw-r--r-- 1 steam steam 29591243 Mar 16 16:00 20210316-160001-backup.tar.gz
-rw-r--r-- 1 steam steam 29591237 Mar 16 16:15 20210316-161501-backup.tar.gz
-rw-r--r-- 1 steam steam 29591237 Mar 16 16:30 20210316-163001-backup.tar.gz
-rw-r--r-- 1 steam steam 29591239 Mar 16 16:45 20210316-164501-backup.tar.gz
-rw-r--r-- 1 steam steam 29591239 Mar 16 17:00 20210316-170001-backup.tar.gz
-rw-r--r-- 1 steam steam 29591235 Mar 16 17:15 20210316-171501-backup.tar.gz

Proof of Concept

root@valheim-59978997b9-5kv96:/home/steam/backups# find /home/steam/backups -mtime 1 -exec echo {} \;
/home/steam/backups/20210315-124501-backup.tar.gz
/home/steam/backups/20210315-133001-backup.tar.gz
/home/steam/backups/20210315-074501-backup.tar.gz
/home/steam/backups/20210315-171501-backup.tar.gz
/home/steam/backups/20210315-123001-backup.tar.gz
/home/steam/backups/20210315-134501-backup.tar.gz
/home/steam/backups/20210315-130001-backup.tar.gz
/home/steam/backups/20210315-011502-backup.tar.gz
/home/steam/backups/20210315-073001-backup.tar.gz
/home/steam/backups/20210315-010001-backup.tar.gz
/home/steam/backups/20210315-080001-backup.tar.gz
/home/steam/backups/20210315-071501-backup.tar.gz
/home/steam/backups/20210315-103001-backup.tar.gz
/home/steam/backups/20210315-121501-backup.tar.gz
/home/steam/backups/20210315-050001-backup.tar.gz
/home/steam/backups/20210315-120001-backup.tar.gz
/home/steam/backups/20210315-070001-backup.tar.gz
/home/steam/backups/20210315-081501-backup.tar.gz
/home/steam/backups/20210315-150001-backup.tar.gz
/home/steam/backups/20210315-110002-backup.tar.gz
/home/steam/backups/20210315-004501-backup.tar.gz
/home/steam/backups/20210315-030001-backup.tar.gz
/home/steam/backups/20210315-114501-backup.tar.gz
/home/steam/backups/20210315-111501-backup.tar.gz
/home/steam/backups/20210315-094501-backup.tar.gz
/home/steam/backups/20210315-160001-backup.tar.gz
/home/steam/backups/20210315-063001-backup.tar.gz
/home/steam/backups/20210315-061501-backup.tar.gz
/home/steam/backups/20210315-064502-backup.tar.gz
/home/steam/backups/20210315-003001-backup.tar.gz
/home/steam/backups/20210315-104501-backup.tar.gz
/home/steam/backups/20210315-040001-backup.tar.gz
/home/steam/backups/20210315-144501-backup.tar.gz
/home/steam/backups/20210315-164502-backup.tar.gz
/home/steam/backups/20210315-021501-backup.tar.gz
/home/steam/backups/20210315-001501-backup.tar.gz
/home/steam/backups/20210315-161501-backup.tar.gz
/home/steam/backups/20210315-101501-backup.tar.gz
/home/steam/backups/20210315-020001-backup.tar.gz
/home/steam/backups/20210315-174501-backup.tar.gz
/home/steam/backups/20210315-143001-backup.tar.gz
/home/steam/backups/20210315-024501-backup.tar.gz
/home/steam/backups/20210315-090001-backup.tar.gz
/home/steam/backups/20210315-031501-backup.tar.gz
/home/steam/backups/20210315-013001-backup.tar.gz
/home/steam/backups/20210315-000001-backup.tar.gz
/home/steam/backups/20210315-051501-backup.tar.gz
/home/steam/backups/20210315-163001-backup.tar.gz
/home/steam/backups/20210315-173001-backup.tar.gz
/home/steam/backups/20210315-141501-backup.tar.gz
/home/steam/backups/20210315-091501-backup.tar.gz
/home/steam/backups/20210315-100001-backup.tar.gz
/home/steam/backups/20210315-023001-backup.tar.gz
/home/steam/backups/20210315-041501-backup.tar.gz
/home/steam/backups/20210315-113001-backup.tar.gz
/home/steam/backups/20210315-140001-backup.tar.gz
/home/steam/backups/20210315-153001-backup.tar.gz
/home/steam/backups/20210315-093001-backup.tar.gz
/home/steam/backups/20210315-083001-backup.tar.gz
/home/steam/backups/20210315-060001-backup.tar.gz
/home/steam/backups/20210315-131501-backup.tar.gz
/home/steam/backups/20210315-034501-backup.tar.gz
/home/steam/backups/20210315-053001-backup.tar.gz
/home/steam/backups/20210315-170001-backup.tar.gz
/home/steam/backups/20210315-054502-backup.tar.gz
/home/steam/backups/20210315-084501-backup.tar.gz
/home/steam/backups/20210315-014502-backup.tar.gz
/home/steam/backups/20210315-151501-backup.tar.gz
/home/steam/backups/20210315-033001-backup.tar.gz
/home/steam/backups/20210315-043001-backup.tar.gz
/home/steam/backups/20210315-044501-backup.tar.gz
/home/steam/backups/20210315-154501-backup.tar.gz
ikaruswill pushed a commit to ikaruswill/valheim-docker that referenced this issue Mar 16, 2021
ikaruswill pushed a commit to ikaruswill/valheim-docker that referenced this issue Mar 16, 2021
ikaruswill added a commit to ikaruswill/valheim-docker that referenced this issue Mar 16, 2021
@CosmicHorrorDev
Copy link
Collaborator

CosmicHorrorDev commented Mar 16, 2021

This is a common point of confusion for a lot of people so it may be good to have DAYS_TO_LIVE match it's name more like the linked PR attempts to do.

The problem with just removing the + is that it means that it will no longer match on backups that are older than the specified time (say the container is shutdown for a full day, you now would have backups that never get removed). You could of course duplicate the find where one uses + and another doesn't to get >=, but at that point just subtracting one from DAYS_TO_LIVE is basically equivalent (insignificant time difference).

Thinking on it more, we would probably want to handle DAYS_TO_LIVE being 0 specifically for the above since it would become -1 which would mean less than 1 day. Maybe going for >= would actually be simpler here?

@ikaruswill
Copy link
Contributor Author

ikaruswill commented Mar 17, 2021

Good catch @LovecraftianHorror

Thinking about it, I'm actually more for using AUTO_BACKUP_DAYS_TO_LIVE - 1 as the find argument and specifically handle the 0 and negative cases which we seemed to not handle, by forcing them to 1 which is the smallest possible value.

Having a 0 value on the mtime may have undefined behaviour, or result in unnecessary disk writes with the backups being deleted right after they are created.

@CosmicHorrorDev
Copy link
Collaborator

Sounds good to me. I think having days to live being 0 and subtracting 1 is still well defined. find /path -mtime +-1 will match on all files which sounds right for wanting 0 days to live. Because of the ordering too having 0 days to live would keep only the most recently created backup (since backups are pruned before being created).

I think that covers any other negative values too, even though at that point the user's configuration would already be quite odd, so honestly I think just subtracting one would work fine, unless people have any other notable points they want covered.

@ikaruswill
Copy link
Contributor Author

ikaruswill commented Mar 17, 2021

In the script's case backups are pruned after new backups are created, so 0 days to live will simply delete all backups. I'll shift the backup pruning step before the creation of new backups so 0 days to live works.

You have a point on how +-1 handles all the other cases since it selects all files essentially. I have not personally tried that until now. Interesting.

Edit: Updated PR

@CosmicHorrorDev
Copy link
Collaborator

Oh woops, misremembered 😅

Thanks for catching that

mbround18 pushed a commit that referenced this issue Mar 20, 2021
…ckup (#290)

* Remove + from find -mtime

Fixes #289

* Revert "Remove + from find -mtime"

This reverts commit 08af441.

* Subtract 1 from AUTO_BACKUP_DAYS_TO_LIVE

Before passing to find mtime argument as +${AUTO_BACKUP_DAYS_TO_LIVE}
Also add log message to indicate old backup removal

* Move backup creation step to after backups are pruned

To handle case where AUTO_BACKUP_DAYS_TO_LIVE == 0 deletes all backups including latest.
New behaviour would be to only retain latest backup and delete all others.

* Fix typo from testing

Also remove duplicated log message
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants