Ubuntu zip Datei automatisch entpacken
Hallo zusammen,
ich habe auf einem Ubuntu System ein Netzlaufwerk eingebunden. Im Netzlaufwerk befinden sich 3 Ordner in denen .zip Dateien sind, die per cron Job und batch Datei automatisiert werden sollen. Dafür brauche ich ein batch script, das automatisch zip Dateien die in dem Netzwerkordner sind, in dem selben Ordner entpackt und die Zip Dateien in einem Backup Ordner verschiebt. Diese batch Datei will ich dann über einen cron Job einmal Täglich ausführen. Leider kenne ich mich mit batch files überhaupt nicht aus, deshalb bitte ich hier um Hilfe....
Danke schon mal im Voraus...
ich habe auf einem Ubuntu System ein Netzlaufwerk eingebunden. Im Netzlaufwerk befinden sich 3 Ordner in denen .zip Dateien sind, die per cron Job und batch Datei automatisiert werden sollen. Dafür brauche ich ein batch script, das automatisch zip Dateien die in dem Netzwerkordner sind, in dem selben Ordner entpackt und die Zip Dateien in einem Backup Ordner verschiebt. Diese batch Datei will ich dann über einen cron Job einmal Täglich ausführen. Leider kenne ich mich mit batch files überhaupt nicht aus, deshalb bitte ich hier um Hilfe....
Danke schon mal im Voraus...
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 81053469499
Url: https://administrator.de/contentid/81053469499
Ausgedruckt am: 24.11.2024 um 06:11 Uhr
22 Kommentare
Neuester Kommentar
Hi.
Du möchtest vermutlich ein Bash script, kein batch (damit könnte dein Ubuntu nichts anfangen).
Hier was ungetestes:
Gib der File einen namen: unpackzip.sh
Anschließend:
In der CronTab dann: (Script läuft jede Stunde zur Minute 0)
Wie gesagt: ungetestet, daher erstmal mit einem Testordner prüfen.
Gruß
Du möchtest vermutlich ein Bash script, kein batch (damit könnte dein Ubuntu nichts anfangen).
Hier was ungetestes:
# Pfade zu den Verzeichnissen mit den ZIP-Dateien
NETWORK_MOUNT_PATH="/pfad/zum/netzlaufwerk"
BACKUP_DIR="/pfad/zum/backup-verzeichnis"
# Sicherstellen, dass das Backup-Verzeichnis existiert
mkdir -p "$BACKUP_DIR"
# Durchlaufe alle Verzeichnisse im Netzwerkordner
for dir in "$NETWORK_MOUNT_PATH"/*; do
if [ -d "$dir" ]; then
# Durchlaufe alle ZIP-Dateien im aktuellen Verzeichnis
for zipfile in "$dir"/*.zip; do
if [ -f "$zipfile" ]; then
# Entpacke die ZIP-Datei im selben Verzeichnis
unzip -o "$zipfile" -d "$dir"
# Verschiebe die ZIP-Datei in das Backup-Verzeichnis
mv "$zipfile" "$BACKUP_DIR"
fi
done
fi
done
Gib der File einen namen: unpackzip.sh
Anschließend:
chmod +x /pfad/zu/unpackzip.sh
In der CronTab dann: (Script läuft jede Stunde zur Minute 0)
0 * * * * /pfad/zu/unpackzip.sh
Wie gesagt: ungetestet, daher erstmal mit einem Testordner prüfen.
Gruß
du sagst es liegt auf nem Netzwerk Share?
Auf dem Windows Server ?
Ne mal im Ernst übers LAN entpacken etc... ist halt ne fehlerquelle mehr.
Wenn möglich solltest du den Job auf dem Server laufen lassen wo die Daten auch liegen.
Wenns ein NAS ist oder so versteh ich das noch halb... (dort gibts vermutlich auch die möglichkeit das automatisieren)
Auf dem Windows Server ?
Ne mal im Ernst übers LAN entpacken etc... ist halt ne fehlerquelle mehr.
Wenn möglich solltest du den Job auf dem Server laufen lassen wo die Daten auch liegen.
Wenns ein NAS ist oder so versteh ich das noch halb... (dort gibts vermutlich auch die möglichkeit das automatisieren)
IFS=$'\n'; for dir in $(find $NETWORK_MOUNT_PATH -type d) ;do
# .......
Wo kommt denn das "f" her? In meiner Zeile steht da ein "d" für "directory ...
Tja, man sollte sich die Befehle auch mal vorher angucken und verstehen min jung.
https://man7.org/linux/man-pages/man1/find.1.html
Tja, man sollte sich die Befehle auch mal vorher angucken und verstehen min jung.
https://man7.org/linux/man-pages/man1/find.1.html
Da wird ja auch nix ausgegeben sondern nur entpackt und verschoben. Lüppt hier problemlos hast du wohl keine zips in den Quell-Ordnern ...
Dann wurde der Datenträger wohl userabhängig gemountet und das Skript sieht den nicht oder hat keine Zugriffsrechte.
Einfach mal den find Befehl solo im Skript laufen lassen dann siehst du ob der Pfad da existiert oder nicht.
Ich muss jetzt weg. Tschüssikowski;
Einfach mal den find Befehl solo im Skript laufen lassen dann siehst du ob der Pfad da existiert oder nicht.
Ich muss jetzt weg. Tschüssikowski;
Oneliner is enough for this simple task
Gruß Strods
find "/path/to/source/folder" -type f -name "*.zip" -exec bash -c 'unzip -o "{}" -d "$(dirname "{}")"' \;