Frage Script Linux Dateien kopieren

ArcusX

Urgestein
Mitglied seit
Okt 23, 2019
Beiträge
867
Bewertungspunkte
501
Punkte
94
Tag Gemeinde,

Ich habe schon etwas länger ein Synology DS im Einsatz und habe jetzt folgende Aufgabe zu erfüllen.
Aus einem Verzeichnis mit einigen Unterverzeichnissen mit unten dargestellter Struktur, muss ich alle 24h alle Dateien ohne Ordnerstruktur in ein anderes Verzeichnis kopieren. In dem neuen Verzeichnis werden die Dateien dann bearbeitet und aus diesem weggeschoben und gelöscht.

Erst dachte ich an einen rsync job, damit kann ich aber keine Dateien nacht Zeitstempel auswählen. Also dachte ich, man könnte vielleicht ein Script schreiben mit dem das geht. Leider sind meine Linux Kenntnisse nur sehr rudimentär und bin da einfach aufgeschmissen. Auch google brachte da nichts brauchbares zu tage.

Vielleicht kennt sich ja hier jemand damit aus und kann mir eine Hilfestellung geben.

Code :
- Ordner 1
--Unterordner 1
--xyz1.pdf
---Unterordner 1.1
----xyz1.1.pdf
---Unterordner 1.2
----xyz1.2.pdf
----Unterordner 1.2.1
----xyz.1.2.1.pdf

Ich hoffe es ist deutlich genug wie das aussieht.
 
Probiere folgendes aus

find src/ -type f -name '*.pdf' -exec cp {} dst/ \;

Wenn das klappt in eine bash Datei und cronjob einrichten
 
Wenn ich den Befehl richtig verstehe kopiert dieser alle dateien mit *.pdf in das Ziel. Auch fehlt da das durchsuchen der Unterordner, oder?

Wie bekomme ich da noch die zeit mit rein?

ich würde mal raten über
find ordner/ -type f - name '*.pdf' -ctime -exec cp {} ordnerziel/ \;
 
Zuletzt bearbeitet :
Schau mal hier da gibt's nen extra Option dafür, alles was unter 24 Stunden ist zu nutzen

find src/ -type f -name '*.pdf' -mtime -1 -exec cp {} dst/ \;


Hier eine genaue Erklärung zu mtime

 
Rsync an sich sollte den Job immer noch regeln, wenngleich du via einem --files-from Ausdruck das passende Find spezifieren musst.

Ob dir rsync noch einen Mehrwert bietet wenn du den Findausdruck hast, musst du dann für dich evaluieren.

 
Himmel hilf, ist das ein Puzzlespiel. Vielen Dank für die tollen Hinweise!
 
Es gibt viele Wege nach Rom, wenn noch Fragen sind, weißt ja wo du uns findest. Jeder hat mal klein angefangen
 
Also die gute Nachricht ist erstmal, dass das Script

Code :
find volume2/docker/ordner -type f -name '*.pdf' -mtime -1 -exec cp -p {} volume1/uebergabe/ordner/ \;
funktioniert. Ich habe noch -p hinzugefügt, damit der ursprüngliche Zeitstempel erhalten bleibt.

Das ist bestimmt jetzt eher die Holzhammermethode aber es tut weitestgehend seinen Dienst. Gibt es die Möglichkeit automatisch Verzeichnisse herauszunehmen? Unter dem dem ../docker/ordner gibt es immer wieder Unterordner die gleich heissen, aber nach Möglichkeit nicht beachtet werden sollen. -exclude dichwillichnicht oder so?

Vielen Dank für eure Eingaben.
 
find volume2/docker/ordner -type d -name 'exclude_folder' -prune -o -type f -name '*.pdf' -mtime -1 -exec cp -p {} volume1/uebergabe/ordner/ \;

Das müsste gehen damit klammerst du ordner aus, wenn die jetzt gleich heißen wirds glaube ich nicht lösbar , kannst versuchen den kompletten Pfad Namen mit zu geben
 
Unter 'exclude_folder' muss da nur der Name des Unterordners oder der gesamte Pfad herein? Die auszuschliessenden Unterordner heissen immer gleich.
 
Oben Unten