staging.inyokaproject.org

zip Datei automatisch entpacken und verschieben

Status: Ungelöst | Ubuntu-Version: Ubuntu 24.04 (Noble Numbat)
Antworten |

DirkGelpke

Anmeldungsdatum:
17. Juli 2024

Beiträge: Zähle...

Hallo zusammen, ich habe auf einem Ubuntu System ein zweites Laufwerk/Festplatte (mit Mount ...) eingebunden. AUf dem Laufwerk/Festplatte befinden sich mehrere Ordner und Unterordnern in denen .zip Dateien sind, die per cron Job und sh Datei automatisiert werden sollen. Dafür brauche ich ein sh script, das automatisch zip Dateien die in dem Laufwerk/Festplatte sind, in dem selben Ordner entpackt (oder Unterordner ) und die Zip Dateien in einem Backup Ordner verschiebt, der sich auf auf dem Laufwerk befindet. Diese sh Datei will ich dann über einen cron Job einmal Täglich ausführen. Leider kenne ich mich mit sh files/Progammieren überhaupt nicht aus, deshalb bitte ich hier um Hilfe.... Danke schon mal im Voraus... Im Ordner Scripts soll das Script abgespeichert werden und in den Ordner bachupzip die Zip Dateie vorher entpackt wurden. In den anderen Ordnern sind die zip Files oder Unterordner mit Zip Files....

Bilder

schragge

Anmeldungsdatum:
27. Januar 2022

Beiträge: 181

find /mountpoint -wholename /mountpoint/backupzip -prune -o \
-name \*.zip -execdir sh -c 'unzip "$1"&&mv "$1" /mountpoint/backupzip/' _ {} \;

DirkGelpke

(Themenstarter)

Anmeldungsdatum:
17. Juli 2024

Beiträge: Zähle...

Danke für die Antwort kann ich das so übernehmen oder muss ich da noch was einsetzen ? mountpoint ? oder so... reicht es wenn das Laufwerk gemountet ist...

schragge

Anmeldungsdatum:
27. Januar 2022

Beiträge: 181

/mountpoint ist das Verzeichnis, an dem das Laufwerk gemounted bzw. eingehängt ist. Wenn es ein wechselbares Laufwerk ist, dann wohl unter /media/Dein_Benutzername/Laufwerkslabel. Ansonsten das Verzeichnis, das du in /etc/fstab eingetragen hast.

DirkGelpke

(Themenstarter)

Anmeldungsdatum:
17. Juli 2024

Beiträge: 10

super hat soweit funktioniert. In den Ordnern sind mehrere Zip Files ind denen gibt es jeweils unter umständen eine datei die gleich heist. Kann ich da sagen lege mir eine Kopie an oder so. Sonst muss ich bei jedem Zip immer Ja, Nein oder überspringen auswählen...

schragge

Anmeldungsdatum:
27. Januar 2022

Beiträge: 181

Du hast zwei Optionen. unzip -o überschreibt die Datei im Verzeichnis mit der Version aus dem Archiv. Dabei wird mit unzip -B -o eine Backup-Kopie der überschriebenen Datei erstellt. unzip -n behält die Version im Verzeichnis und entpackt die Datei aus dem Archiv nicht.

DirkGelpke

(Themenstarter)

Anmeldungsdatum:
17. Juli 2024

Beiträge: 10

ich hab jetzt festgestellt das im Backupzip auch dateien drin sind, wollte aber nur die Zip dateien drin haben. Ich habe die option -n gewählt. Sind das die doppelte dateien ?

wxpte

Anmeldungsdatum:
20. Januar 2007

Beiträge: 1388

schragge schrieb:

Dabei wird mit unzip -B -o eine Backup-Kopie der überschriebenen Datei erstellt.

Dabei muss man aber aufpassen:

Manpage zu unzip schreibt dazu:

When used together with the "overwrite all" option -o, numbered backup files are never created. In this case, all backup files are named as the original file with an appended tilde, existing backup files are deleted without notice.

Klartext: wenn schon eine Backupdatei existiert, wird diese überschrieben. Ab drei gleichnamigen Dateien ist also mindestens ein Exemplar futsch.

schragge

Anmeldungsdatum:
27. Januar 2022

Beiträge: 181

DirkGelpke schrieb:

ich hab jetzt festgestellt das im Backupzip auch dateien drin sind, wollte aber nur die Zip dateien drin haben. Ich habe die option -n gewählt. Sind das die doppelte dateien ?

Zeig bitte deine Kommandozeile.

DirkGelpke

(Themenstarter)

Anmeldungsdatum:
17. Juli 2024

Beiträge: 10

find /media/administrator/28a00382-4261-407c-983d-f0e37c8001bf/SAB-Data -wholename //media/administrator/28a00382-4261-407c-983d-f0e37c8001bf/SAB-Data/backupzip -prune -o \
-name \*.zip -execdir sh -c 'unzip -n "$1"&&mv "$1" //media/administrator/28a00382-4261-407c-983d-f0e37c8001bf/SAB-Data/backupzip/' _ {} \;

Bearbeitet von Thomas_Do:

Bitte verwende in Zukunft Codeblöcke, um die Übersicht im Forum zu verbessern!

wxpte

Anmeldungsdatum:
20. Januar 2007

Beiträge: 1388

Codeblock ❗ (Warum liest hier eigentlich niemand die Bedienungsanleitung?)

schragge

Anmeldungsdatum:
27. Januar 2022

Beiträge: 181

DirkGelpke schrieb:

find /media/administrator/28a00382-4261-407c-983d-f0e37c8001bf/SAB-Data -wholename //media/administrator/28a00382-4261-407c-983d-f0e37c8001bf/SAB-Data/backupzip -prune -o \
-name \*.zip -execdir sh -c 'unzip -n "$1"&&mv "$1" //media/administrator/28a00382-4261-407c-983d-f0e37c8001bf/SAB-Data/backupzip/' _ {} \;

Der markierte doppelte Schrägstrich ist das Problem. find findet dein backupzip-Ordner nicht und deswegen überspringt ihn auch nicht: alle zip-Dateien, die du zuvor dorthin kopiert hast, werden nochmals entpackt. Der doppelte Schrägstrich in dem Shell-Befehl mv ist dagegen egal: mv ignoriert ihn einfach.

DirkGelpke

(Themenstarter)

Anmeldungsdatum:
17. Juli 2024

Beiträge: 10

Danke. Ich habe beide Doppel Striche entfernt... Kann es aber erst morgen testen ☺

schragge

Anmeldungsdatum:
27. Januar 2022

Beiträge: 181

Da du es sowieso als ein Shell-Skript haben willst, würde ich den langen Pfad in einer Variable speichern.

1
2
3
4
5
#!/bin/sh
disk=/media/administrator/28a00382-4261-407c-983d-f0e37c8001bf/SAB-Data
backupdir="$disk"/backupzip
find "$disk" -path "$backupdir" -prune -o \
-name \*.zip -execdir sh -c 'unzip -n "$1" && mv "$1" "$0"' "$backupdir" {} \;

Oder, angenommen der erste gefundene backupzip-Ordner ist der richtige bzw. du hast keinen anderen.

1
2
3
4
#!/bin/sh
backupdir=$(find /media -type d -name backupzip -print -quit)
find "${backupdir%/*}" -path "$backupdir" -prune -o \
-name \*.zip -execdir sh -c 'unzip -n "$1" && mv "$1" "$0"' "$backupdir" {} \;

DirkGelpke

(Themenstarter)

Anmeldungsdatum:
17. Juli 2024

Beiträge: 10

Danke. Da ist nur ein Bachupzip Ordner...

Antworten |