dirkgelpke
Goto Top

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...

Content-ID: 81053469499

Url: https://administrator.de/contentid/81053469499

Ausgedruckt am: 24.11.2024 um 06:11 Uhr

9697748851
9697748851 27.05.2024 um 12:16:43 Uhr
Goto Top
Hi.

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ß
DirkGelpke
DirkGelpke 27.05.2024 um 12:31:19 Uhr
Goto Top
Danke. Werde es erstmal im Testsystem versuchen.
ThePinky777
ThePinky777 27.05.2024 um 15:00:49 Uhr
Goto Top
du sagst es liegt auf nem Netzwerk Share?
Auf dem Windows Server ? face-smile
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)
DirkGelpke
DirkGelpke 27.05.2024 um 15:05:51 Uhr
Goto Top
ist ein Ubuntu System. Die Lösung von accessViolation funktioniert...
DirkGelpke
DirkGelpke 27.05.2024 um 15:07:35 Uhr
Goto Top
Das Laufwerk ist angeheftet. Das Script wird auch dort ausgeführt.
DirkGelpke
DirkGelpke 15.07.2024 um 16:09:43 Uhr
Goto Top
Wie kann ich auch Unterverzeichnisse durchsuchen lassen ?
13676056485
13676056485 15.07.2024 aktualisiert um 16:25:50 Uhr
Goto Top
Zitat von @DirkGelpke:

Wie kann ich auch Unterverzeichnisse durchsuchen lassen ?

IFS=$'\n'; for dir in $(find $NETWORK_MOUNT_PATH -type d) ;do  
# .......
Gruß wrk
DirkGelpke
DirkGelpke 15.07.2024 um 16:17:04 Uhr
Goto Top
merci..
DirkGelpke
DirkGelpke 15.07.2024 um 16:29:39 Uhr
Goto Top
es öffnet sich ein leeres Fenster und passiert nichts...
DirkGelpke
DirkGelpke 15.07.2024 um 16:35:42 Uhr
Goto Top
siehe Bild
screenshot from 2024-07-15 16-38-14
DirkGelpke
DirkGelpke 15.07.2024 um 16:40:07 Uhr
Goto Top
Die Dateien sind auf einer 2. Festplatte am Server
13676056485
13676056485 15.07.2024 aktualisiert um 17:07:03 Uhr
Goto Top
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
DirkGelpke
DirkGelpke 15.07.2024 um 17:07:31 Uhr
Goto Top
keine Ahnung... Bin wohl Feierabend reif face-smile
DirkGelpke
DirkGelpke 15.07.2024 um 17:12:49 Uhr
Goto Top
auch mit dem d passiet nichts.
13676056485
13676056485 15.07.2024 aktualisiert um 17:20:08 Uhr
Goto Top
Da wird ja auch nix ausgegeben sondern nur entpackt und verschoben. Lüppt hier problemlos hast du wohl keine zips in den Quell-Ordnern ...
DirkGelpke
DirkGelpke 15.07.2024 um 17:20:19 Uhr
Goto Top
wenn ich die Ordner in dem lokalen Pfad durchsuchen lasse funktioniert es...
/home/administrator/Public

nur bei der gemounteten Festplatte geht nichts...
13676056485
13676056485 15.07.2024 aktualisiert um 17:31:46 Uhr
Goto Top
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;
DirkGelpke
DirkGelpke 16.07.2024 um 08:40:38 Uhr
Goto Top
Danke...
DirkGelpke
DirkGelpke 29.07.2024 um 17:21:21 Uhr
Goto Top
Wie würde sich der Code ändern, wenn ich nur einen Ordner habe mit mehreren Unterordnern, nach .zip's durchsuchen will und im jeweils gleichen Ordner entpacken.
Reicht es wenn ich den Backup_Dir auskommentiere?
DirkGelpke
DirkGelpke 31.07.2024 um 15:39:15 Uhr
Goto Top
Ich will einen Ordner in dem mehrere Ordner sind mit Zip-Files im jeweiligen selben Ordner entpacken. Dabei habe ich vom oberen script den Code mit dem Backupverzeichnis und das verschieben der zip Datei entfernt. Geht das so einfach?

# Pfade zu den Verzeichnissen mit den ZIP-Dateien
NETWORK_MOUNT_PATH="/media/administrator/28a00382-4261-407c-983d-f0e37c8001bf/SAB-Data"    
# Durchlaufe alle Verzeichnisse im Ordner
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"    
            fi
        done
   
13910172396
13910172396 31.07.2024 aktualisiert um 16:17:10 Uhr
Goto Top
Oneliner is enough for this simple task
find "/path/to/source/folder" -type f -name "*.zip" -exec bash -c 'unzip -o "{}" -d "$(dirname "{}")"' \;  
Gruß Strods
DirkGelpke
DirkGelpke 31.07.2024 um 16:13:55 Uhr
Goto Top
Thanks...face-smile