Docker Auto Batch File umbenennen und sortieren?

1 Antwort

Klingt für mich erst mal einfach, dafür reicht doch auch ein Shell Script.

Ich habe ChatGPT ein Beispiel Script generieren lassen:

#!/bin/zsh

# Ursprünglicher Dateiname
original_file="IMG_20240402122325.jpg"


# Extrahiere Datum und Zeit
year="${original_file:4:4}"
month="${original_file:8:2}"
day="${original_file:10:2}"
hour="${original_file:12:2}"
minute="${original_file:14:2}"
second="${original_file:16:2}"


# Neuer Pfad und Dateiname
new_directory="$year/$month/$year-$month-$day"
new_filename="${year}-${month}-${day}_${hour}-${minute}-${second}_THO_DC.jpg"
new_path="$new_directory/$new_filename"


# Erstelle das Verzeichnis
mkdir -p "$new_directory"


# Verschiebe und benenne die Datei um
mv "$original_file" "$new_path"


echo "Datei wurde zu '$new_path' verschoben und umbenannt."

Wenn du jetzt ein Utility wie find nutzt und für jede Datei das Script aufrufst (natürlich musst du dafür auch das Script minimal anpassen) hast du ja schon was du brauchst.

Wenn du das in Docker möchtest, dann wäre es ja auch kein Problem daraus ein einfaches Image zu machen.

Frag einfach ChatGPT wenn du nicht weiter kommst, wenn das immer noch nicht geht kann ich dir auch helfen.

Tommy8657 
Fragesteller
 18.04.2024, 13:08

vielen Dank, den Script Teil verstehe ich komplett. das wäre auch nicht das Problem.
Problem wäre für mich da ein Docker draus zu machen. Ich kann mit fertigen Dockern gut umgehen. Also installieren und Laufwerkte Mounten usw. Das klappt gut. Aber einen Docker selbst zu generieren hab ich noch nie gemacht. Also wenn du mir da helfen könntest wäre super.

0
BeamerBen  18.04.2024, 13:27
@Tommy8657

Das ist relativ einfach, ein Problem wäre höchstens wie du dein Docker Image auf den Server bekommst.

Normalerweise kommen die fertig gebauten Images ja von einer Registry. Das könntest du auch nutzen, ich bin nicht sicher was der einfachste weg ist. Du könntest das Image auch direkt auf dem Server bauen oder z.B. über SSH auf den Server kopieren.

An sich ist ein Docker image bauen super einfach. Du schreibst ein Dockerfile und legst da fest was für Dateien fest in das Image eingefügt werden, welche Commands beim erstellen ausgeführt werden (z.B. um andere Packages zu installieren) und was der Docker Container standardmäßig beim starten ausführen soll.

Kann dir bestimmt auch chatgpt generieren. Ich habe kurz auch ein Beispiel generieren lassen:

# Verwende ein Basisimage, das zsh beinhaltet
FROM ubuntu:latest
# Installiere zsh und notwendige Tools
RUN apt-get update && \
    apt-get install -y zsh
# Kopiere das Skript in das Container-Image
COPY rename_and_move.sh /usr/local/bin/rename_and_move.sh
# Mache das Skript ausführbar
RUN chmod +x /usr/local/bin/rename_and_move.sh
# Setze den Arbeitsverzeichnis
WORKDIR /data
# Setze das Skript als Standardbefehl
CMD ["/usr/local/bin/rename_and_move.sh"]

Und dann docker build -t image-renamer:latest .

Ich denke wenn du mit Docker und Linux ansonsten vertraut bist, bekommst du das sicher hin. Die Basics sind relativ easy wenn man sie mal verstanden hat: )

0
Tommy8657 
Fragesteller
 18.04.2024, 14:12
@BeamerBen

Ich habe gerade mal GPT gefragt. Dort meinte man dass man mit FileBot scheinbar das auch lösen könnte. obwohl der für Serien gedacht ist. ich werde mal probieren wie weit ich damit komme. Danke dir schonmal für die Mühe. Habe paar Tut-Videos auf YT geschaut wie man einen Docker erstellen kann. Ist wahrscheinlich etwas over für diese simple Fuktion oder für mich ist es aktuell noch etwas heavy ;-)

0
BeamerBen  18.04.2024, 22:11
@Tommy8657

Ah sehr gut, das Programm kannte ich auch nicht.

Ja, ich denke auch, es wäre etwas Overkill aber wenn es Gründe für Docker gibt, z.B. weil das irgendwo als Option schon eingebunden ist Docker Container auszuführen auch eine valide Lösung.

Ansonsten würde ich persönlich einfach ein Shell Script über Cron (oder einer ähnlichen Lösung, falls es ein custom Herstellertool dafür gibt) auf dem Host direkt regelmäßig ausführen :) 

0