Ordner Kopieren per Script

marlow

Benutzer
Mitglied seit
08. Jan 2015
Beiträge
265
Punkte für Reaktionen
11
Punkte
18
Hallo,

ich habe einen Ordner der kopiert werden soll sobald sich eine Datei darin befindet. Im Zielordner soll zuvor ein Ordner erstellt werden mit dem Kopierdatum.
Nach dem erfolgreichen kopieren soll das der Inhalt von Quellverzeichnis gelöscht werden. Dies möchte ich als Dienst starten und alle 5minuten ausführen lassen.
Vielleicht hat einer von Euch einen Tipp wie ich das am besten machen kann. Oder es gibt vielleicht schon eine Anwendung???

Danke
 

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.544
Punkte für Reaktionen
1.375
Punkte
234
Bash:
#!/bin/bash

quellordner="/volume1/quelle"
zielordner="/volume1/ziel"

if [[ $(ls -t "${quellordner}" | wc -l) -gt 0 ]]; then
    zielordner="${zielordner%/}/$(date +%Y-%m-%d_%H-%M)/"
    mkdir "$zielordner"
    find "${quellordner}" -type f -exec mv -t "${zielordner}" {} +
fi

Bitte erstmal mit Beispieldaten testen.
 
Zuletzt bearbeitet:

marlow

Benutzer
Mitglied seit
08. Jan 2015
Beiträge
265
Punkte für Reaktionen
11
Punkte
18
Super funktioniert soweit. Nun möchte ich nur noch die Dateien im Quellordner nach dem Kopieren löschen.
 

marlow

Benutzer
Mitglied seit
08. Jan 2015
Beiträge
265
Punkte für Reaktionen
11
Punkte
18
Habe das noch den Script zugefügt. Ist das so OK?
rm -r /volume2/quelldatei/*.txt
 
  • Like
Reaktionen: bertoal

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.544
Punkte für Reaktionen
1.375
Punkte
234
Das Skript sollte die Dateien verschieben; sie sollten also bereits nicht mehr im Quellordner vorhanden sein …
 

marlow

Benutzer
Mitglied seit
08. Jan 2015
Beiträge
265
Punkte für Reaktionen
11
Punkte
18
Alles gut. Stimmt, die Dateien waren nicht mehr vorhanden. Vielen Dank;):D
 

marlow

Benutzer
Mitglied seit
08. Jan 2015
Beiträge
265
Punkte für Reaktionen
11
Punkte
18
Vielleicht noch eine kleinnigkeit. Beim Kopieren in das Zielverzeichnis sind Dateien mit der Endung *.json
diese sollten auch dann im Quellverzeichnis gelöscht werden.
Dann ist es PERFEKT
 

marlow

Benutzer
Mitglied seit
08. Jan 2015
Beiträge
265
Punkte für Reaktionen
11
Punkte
18
Das Kopieren funktioniert super. Macht das alles wie Du geschrieben hast. Nun bräuchte ich in dem Script einen Befehl der die Dateien mit der Endung *.json löscht und das im Zielordner.
 

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.544
Punkte für Reaktionen
1.375
Punkte
234
Ich hatte dich nicht verstandne, weil du vom Löschen im Quellverzeichnis geschrieben hattest.

Hier wird nur in der 1. Ebene nach den json-Dateien gesucht. Möchtest du in allen Unterordnern suchen, dann ist -maxdepth 1 anzupassen, bzw. zu entfernen.

Bash:
#!/bin/bash

quellordner="/volume1/quelle"
zielordner="/volume1/ziel"

if [[ $(ls -t "${quellordner}" | wc -l) -gt 0 ]]; then
    find "${zielordner}" -name "*.json" -maxdepth 1 -exec rm -rf {} \;
    zielordner="${zielordner%/}/$(date +%Y-%m-%d_%H-%M)/"
    mkdir "$zielordner"
    find "${quellordner}" -type f -exec mv -t "${zielordner}" {} +
fi
 

marlow

Benutzer
Mitglied seit
08. Jan 2015
Beiträge
265
Punkte für Reaktionen
11
Punkte
18
Die Dateien mit Endung *.json befinden sich weiterhin im Zielordner???
 

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.544
Punkte für Reaktionen
1.375
Punkte
234
Falls du das ganze Skript kopiert hast: die Pfade stimmen?

Evtl. mal auf der Shell nur mal die Treffer zum Test ausgeben lassen:
Bash:
find "/volume1/ziel" -name "*.json" -maxdepth 1
 

Benares

Benutzer
Sehr erfahren
Mitglied seit
27. Sep 2008
Beiträge
13.772
Punkte für Reaktionen
3.743
Punkte
468
Müsste da nicht
find "${quellordner}" ...
stehen, damit er die .jsons löscht bevor er verschiebt?
Oder halt mit $(zielordner), aber dann erst kurz vor dem fi.
 

marlow

Benutzer
Mitglied seit
08. Jan 2015
Beiträge
265
Punkte für Reaktionen
11
Punkte
18


 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat