AutoDate

AutoDate

Docker app from Energen's Repository

Overview

Scans a folder on a schedule and reads the original dates of the files stored inside every archive (zip, rar, 7z and tar, including multi-part sets) without extracting anything. The Archives table shows when each archive was made and how old its contents really are, so you can find archives that look new but hold old files (for example created in 2026 with contents from 10 years ago), then rename them with the year of their contents or delete them (to the Recycle Bin, a trash folder, or permanently) after a preview. Nothing is ever changed unless you select archives and confirm. Web UI with live status, settings, scan history, statistics and themes. Created entirely by AI (Claude). It has been tested, but not in every situation - do your own due diligence before relying on it with data you cannot replace, and before exposing it to the internet.

AutoDate

A Docker container for Unraid (or any Docker host) that scans a folder on a schedule and reads the original dates of the files and folders stored inside each archive - without extracting anything. It finds archives that look new but hold old files (for example an archive created in 2026 whose contents are 10 years old), and then lets you:

  • sort and filter the archives by archive date, oldest / newest content date and age,
  • rename the selected archives with the year of their contents: name.zip → name (2016).zip,
  • delete the selected archives to the share's Recycle Bin, to a trash folder, or permanently.

Supported: zip, rar, 7z and tar (incl. .tar.gz/.tgz/.tar.bz2/.tar.xz). Multi-part sets are handled as one archive and renamed or deleted together: name.part1.rar…, name.rar + .r00…, name.zip + .z01…, name.7z.001…. Archives inside archives are listed as entries but never opened.

Nothing is ever renamed or deleted unless you select archives and confirm a preview that shows exactly what will happen. Everything is set up in the web UI, which has a live status page, the archives table, a settings page, history, statistics and themes.

Created entirely by AI (Claude). It has been tested, but not in every situation. Check the preview before you confirm a rename or delete, keep backups of data you can't replace, and do your own due diligence before exposing the web UI to the internet.

Install (Unraid)

Install AutoDate from the Apps tab, or download the template by hand:

wget -O /boot/config/plugins/dockerMan/templates-user/my-AutoDate.xml \
  https://raw.githubusercontent.com/rcodehub/Unraid-CA-Apps/main/templates/autodate.xml

then Docker → Add Container → Template: my-AutoDate.

Keep only my-AutoDate.xml in templates-user. If you also have another copy, such as autodate.xml, Unraid may load it when you edit or update the container, and your paths go back to the defaults.

Template settings

Setting Container path / variable Description
Web UI port 8080 (host default 8846) Web interface
App data /data Settings, archive index, history, statistics, logs. e.g. /mnt/user/appdata/autodate
Folder to scan /downloads The share to scan, read/write. e.g. /mnt/user/downloads
Trash folder (optional) /trash If set, deleted archives are moved here. Must be a separate folder, not inside the scan folder or a parent of it. Use the same kind of path as the scan folder (both /mnt/user/… or both /mnt/diskN/…)
All shares (optional, advanced) /mnt/user Lets Scan folder… and the folder pickers reach any share, and finds the Recycle Bin when the scan folder is a folder inside a share. Gives the container access to all shares - leave empty unless needed
Timezone TZ For times in the logs
UI username UI_USERNAME Login name, default admin
UI password UI_PASSWORD Turns on the login page. Leave blank for no login (then anyone who can reach the port can use the UI)

Only change the Host Path side of the paths. On first start /downloads is set as the folder to scan. Everything else is configured in the web UI and saved in /data.

Web UI

  • Status – next/last scan, progress, what each thread is reading (with a Cancel button per archive; scheduled scans skip it until it changes, Run now retries it), failed archives, folders waiting because their archives changed too recently and a live log. Buttons: Run now, Scan folder… (a one-off scan of any folder you pick, with or without sub-folders), Stop.
  • Archives – every scanned archive with the archive date, oldest and newest content date and how much older the contents are. Search, an Outdated only filter, type and status filters, sortable columns, and a click on a row shows the entries inside with their dates. Select archives to Rename with year…, Delete… or Rescan. Clear results… empties the list (click twice to confirm) so the next scan reads every archive again; no archive is touched.
  • Settings – all options below, with a folder picker and live checks that show each folder's real location on the server. Folder pickers only show the folders mapped into the container.
  • History – every scan and every rename / delete with counts.
  • Stats – lifetime totals (archives and entries read, outdated found, renamed, deleted, space freed and where it went), oldest content year seen, a 30-day chart and archive types.
  • Theme – 11 colour themes with light and dark versions, plus corner rounding, spacing, font, shadows and page width. Use ☾/☀ to switch light/dark for your browser.

Settings (web UI)

Setting Default Description
Source folders /downloads Folders to scan, including sub-folders. Use container paths (/downloads, not /mnt/user/…)
Scan automatically / interval off / 60 min Interval counts from the end of the previous scan
Also scan at container start off
Threads 4 Archives read at the same time. 2–4 suits spinning disks
Skip archives newer than 5 min Leaves archives that changed recently for a later scan, so downloads still in progress aren't read. 0 = off
Folders to skip @eaDir, .Recycle.Bin, #recycle, .Trash* Folder names to ignore. .Recycle.Bin and .autodate-* are always skipped
Include folder dates off Folder dates also count towards the oldest / newest content date (files only by default)
Clear results before each scan off Every scan starts with an empty list and reads every archive again instead of only new or changed ones (slower). Scan folder… clears only that folder
Outdated if contents are older than 5 years Used for the highlighting and the "Outdated only" filter
Outdated means newest file The newest file is older than that, or the oldest file is
Year used for renaming newest file Default in the rename dialog: the newest or the oldest file date gives the year
Deleted archives go to see below Recycle Bin, move folder or deleted permanently
Move folder /trash if mapped Keeps the folder layout: <move folder>/<source name>/<path>; name clashes get .1, .2

On a fresh install deleted archives are set to go to the move folder if /trash is mapped, otherwise to the share's Recycle Bin if its root can be reached, otherwise they are deleted permanently - which is acceptable because nothing is deleted unless you select archives and confirm a preview that says "permanently".

Recycle Bin: files go to <share>/.Recycle.Bin/<same folders>, the folder the Unraid Recycle Bin plugin uses for files deleted over SMB, so you can browse and empty them there. The share's root must be reachable inside the container: map the share itself (/mnt/user/downloads → /downloads), or also map All shares if you map a folder inside a share. Settings shows where each source's Recycle Bin is.

How it works

Each source folder is walked once. For every archive (or multi-part set) AutoDate asks unrar, 7-Zip or tar for the list of entries with their stored dates; nothing is extracted and nothing is written to the scanned folders. The result is kept in /data/index.json, so unchanged archives are not read again on later scans, and archives that disappeared are dropped. An archive that cannot be read (damaged, missing part) is listed with the reason and left alone by scheduled scans until it changes; Run now tries it again.

Scans and actions never overlap: while a delete, rename or rescan is running, Run now and scheduled scans wait (Run now says to try again in a moment), and while a scan is running the rename / delete preview asks you to wait.

Dates are shown as stored in the archive (no time zone conversion). Entries without a usable date (for example the 1980-01-01 default of some zip tools) are shown as "unknown" and ignored for oldest / newest. Dates in the future are flagged. Archives whose headers are encrypted cannot be read and are flagged as encrypted.

Renaming appends the content year: name (YYYY).ext, with every volume of a set renamed consistently so it still opens. An existing (YYYY) at the end of the name is replaced. An archive is refused when it has no usable dates, when a target name already exists, or when the name would not change. A set is renamed all-or-nothing.

Versions

The build number (top left of the web UI, and in the container log at start) goes up with every published image. Hover it to see the commit and build time. What changed is in CHANGELOG.md, and the newest entries are also shown in Community Applications. Images are tagged latest and build-N, so you can pin a specific build by setting the repository to ghcr.io/rcodehub/autodate:build-N.

Docker Compose

See docker-compose.yml.

License

MIT – see LICENSE.

Related apps

Explore more like this

Explore all

Details

Repository
ghcr.io/rcodehub/autodate:latest
Last Updated2026-11-09
First Seen2026-11-09

Runtime arguments

Web UI
http://[IP]:[PORT:8080]/
Network
bridge
Shell
sh
Privileged
false
Extra Params
--security-opt=no-new-privileges:true

Template configuration

Web UI portPorttcp

Port for the web UI.

Target
8080
Default
8846
Value
8846
App dataPathrw

Settings, archive index, history, statistics and logs. Keep the Container Path /data.

Target
/data
Default
/mnt/user/appdata/autodate
Value
/mnt/user/appdata/autodate
Folder to scanPathrw

The share to scan (read/write), e.g. /mnt/user/downloads. Keep the Container Path /downloads.

Target
/downloads
Default
/mnt/user/downloads
Value
/mnt/user/downloads
Trash folder (optional)Pathrw

Optional, e.g. /mnt/user/trash. If set, archives you delete in the web UI are moved here instead of being deleted. Otherwise they can go to the share's .Recycle.Bin (Unraid Recycle Bin plugin) or be deleted permanently - see Settings. Must not be inside the folder to scan (or a parent of it). Keep the Container Path /trash.

Target
/trash
All shares (optional)Pathrw

Optional, e.g. /mnt/user. Lets the web UI browse and scan any share (Scan folder button, folder pickers) and reach each share's .Recycle.Bin. Gives the container read/write access to all your shares, so leave it empty unless you need it. Keep the Container Path /mnt/user.

Target
/mnt/user
TimezoneVariable

Timezone for the times shown in logs.

Target
TZ
Default
America/New_York
Value
America/New_York
UI usernameVariable

Login name for the web UI (only used when a password is set). Default admin.

Target
UI_USERNAME
Default
admin
Value
admin
UI passwordVariable

Set a password to require a login for the web UI. Blank = no login.

Target
UI_PASSWORD