Ordner Kopieren per Script

  • Ab sofort steht euch hier im Forum die neue Add-on Verwaltung zur Verfügung – eine zentrale Plattform für alles rund um Erweiterungen und Add-ons für den DSM.

    Damit haben wir einen Ort, an dem Lösungen von Nutzern mit der Community geteilt werden können. Über die Team Funktion können Projekte auch gemeinsam gepflegt werden.

    Was die Add-on Verwaltung kann und wie es funktioniert findet Ihr hier

    Hier geht es zu den Add-ons

Status
Für weitere Antworten geschlossen.

marlow

Benutzer
Registriert
08. Jan. 2015
Beiträge
266
Reaktionspunkte
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
 
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:
Super funktioniert soweit. Nun möchte ich nur noch die Dateien im Quellordner nach dem Kopieren löschen.
 
Habe das noch den Script zugefügt. Ist das so OK?
rm -r /volume2/quelldatei/*.txt
 
  • Like
Reaktionen: bertoal
Das Skript sollte die Dateien verschieben; sie sollten also bereits nicht mehr im Quellordner vorhanden sein …
 
Alles gut. Stimmt, die Dateien waren nicht mehr vorhanden. Vielen Dank;):D
 
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
 
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.
 
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
 
Die Dateien mit Endung *.json befinden sich weiterhin im Zielordner???
 
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
 
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.
 
Status
Für weitere Antworten geschlossen.
 

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