Script hilfe gesucht: Dateien verschieben

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

parodontix

Benutzer
Registriert
17. Dez. 2014
Beiträge
2
Reaktionspunkte
0
Punkte
0
Hallo zusammen,

ich stehe vor einer an sich einfachen Aufgabe, aber das Skript dazu scheint schwierig zu sein...:
- Ein Scanner legt neue Scans auf einer Speicherkarte ab.
- Die Speicherkarte ist als REMOTE-FOLDER per CIFS in der Synology gemounted, alle Dateien sind im Netz sichtbar.
- Der Scanner legt seine Dateien in dem Forma DATEI001 ... DATEI002... DATEI003... etc ab. Dabei zählt er immer eine Datei höher als die letzte vorhandene, heißt, wenn man die Dateien löscht, fängt er wieder bei 1 an.

Das Skript sollte idealerweise folgendes können:
- Dateien aus dem RemoteFolder verschieben nach /volume1/scanner (o.ä.)
- Die Datei dabei umbenennen und zwar am besten gemäß Datum und Uhrzeit aus der Quelldatei (z.B: "Scan2014-12-14-15-37-28.pdf")

Ich habe verschiedenes durchprobiert, aber weil die Kommandos bzw. deren Umfang auf der Syn doch etwas anders sind als unter "normalem" Linux komme ich irgendwie nicht weiter.
Hat jemand eine Idee?

Warum das Ganze: Die Scan-Dateien sollen anschliessend auf der Cloudstation direkt beim Anwender auf dem PC landen, egal wo der gerade ist.
Die Netzwerk-Backup/Sync Funktionen der Syn erlauben leider nicht, dass man automatisch vom RemoteFolder auf den lokalen Server synct.
Auf dem Scanner müssen die Files irgendwann verschwinden, sonst läuft der SPeicher voll. Abgesehen davon könnte man den Speicher auch leicht stehlen. Werden die Dateien einfach nur kopiert (das Script dazu funktioniert), würden die Scan-Dateien am Ziel überschrieben, sobald man auf dem Scanner selbst die Dateien löscht (weil er dann wieder bei 1 anfängt, die Datei gibt es im Ziel aber schon...).

VIelen Dank für Eure Hilfe
 
Versuch mal auf der Shell:

mvdate(){ mv $1 ${1}_`stat -c '%y' $1 | cut -f 1 -d " "`.pdf;}

und dann auf der Shell:

mvdate DATEI001.pdf

Gruss Dany

Edit: Noch mit Uhrzeit:
Rich (BBCode):
mvdate(){ mv $1 ${1}_`stat -c '%y' ./test.txt | cut -f 1 -d "." | sed -e s/':'/\-/g | sed -e s/' '/\_/g`.pdf;}
 
Zuletzt bearbeitet:
Also das passiert:

mvdate datei001.pdf
stat: invalid option -- 'c'
...
Usage: stat [OPTIONS] FILE...
..
Display file (default) or filesystem status

Options:
-f Display filesystem status
-L Follow links
-t Display info in terse form

aus datei001.pdf wurde datei001.pdf_pdf

Ich verstehe allerdings nicht ganz die Syntax des mvdate kommandos. Scheint aber auf dem richtigen Weg zu sein

Danke für die schnelle Antwort
 
Hm, auf meiner DS211+ gehts. Kannst du mal folgendes probieren?

stat -c '%y' ./datei.pdf

Im obigen Beispiel erstellst du damit eine eigene Funktion die du dann auf der Shell ausführen kannst. Das spart manchmal Tipparbeit.
 
Hallo,
die -c Option kennt nur das stat aus ipkg, /bin/stat ist Teil der busybox und kennt diese Option nicht.

Gruß Götz
 
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