Autorun für ext. Datenträger

PsychoHH

Benutzer
Mitglied seit
03. Jul 2013
Beiträge
2.967
Punkte für Reaktionen
4
Punkte
78
Keine Ahnung warum, habe mir die udev Regel nicht angeschaut, bzw. das Script.

Du kannst dir aber am Ende eine eigene Abfrage schreiben.

Du trennst einfach per umount und schickst dann das echo 1 an die richtige /sys/block
Kannst dir ja mal das autorun Script ansehen
 

tschortsch

Benutzer
Mitglied seit
16. Dez 2008
Beiträge
1.645
Punkte für Reaktionen
34
Punkte
74
ESATA HDDs gehen nur gleichzeit mit den internen (SATA) Platten in den Idel/Ruhezustand. Das heißt du musst die Platte irgenwie auswerfen. (Ging früher bei mir auch mit Autorun) Danach schaltet das Gehäuse (falls es das unterstützt) auch die Platte in Idel/Ruhezustand.
 

Luis942

Benutzer
Mitglied seit
22. Jun 2012
Beiträge
495
Punkte für Reaktionen
41
Punkte
28
Leider schaltet mein externes gehäuse die Platte nicht ab wenn ich das esata Laufwerk auswerfe, auch nicht nach einer Stunde.
Nun überlege auch einen esata Dock zu wechseln. Nur leider hab ich nicht keinen Erfahrungsbericht dazu gefunden...
Hat jemand vielleicht ein esata angeschlossen, das die HDD beim Auswerfen auch abschaltet?
 

Luis942

Benutzer
Mitglied seit
22. Jun 2012
Beiträge
495
Punkte für Reaktionen
41
Punkte
28
Hab nochmal probiert und es lag scheinbar an mir. Ich hatte bei HyperBackup "ext Datenträger entfernen" aktiviert. Damit fährt die esata HDD nach Abschluss des Backup aber nicht runter, das funktioniert bei mir nur bei USB-Platten. Den Haken habe ich nun raus genommen und statt dessen nur im Script bei autorun "exit 100" drin stehen. Siehe da die esata HDD schaltet nach Abschluss des Backup wunderbar an.
 

Luis942

Benutzer
Mitglied seit
22. Jun 2012
Beiträge
495
Punkte für Reaktionen
41
Punkte
28
Jetzt habe ich noch eine andere Frage.
Ich schalte die Backup HDD zeitgesteuert mittels Dect100 von AVM ein.
Autorun nutze ich nur für den Start des entsprechenden Backupjobs.
Um zu vermeiden, das autorun jedesmal den Backupjob startet und anschließend auch die HDD auswirft, wenn die BackupHDD zu einer anderen Zeit eingeschaltet wird, könnte ich doch das Autorun Plugin über den Aufgabenplaner der DS fünf Minuten vor dem Start der HDD ausführen und 10 Minuten später schon wieder stoppen? Das Script ist dann ja schon gestartet und dann ist es doch eigentlich unwichtig, ob das autorun Plugin noch ausgeführt wird oder nicht? Das Script sollte doch unabhängig davon zu Ende laufen?
Am Beispiel:
Das Backup soll 23Uhr gemacht werden. Autorun wird durch den Aufgabenplaner 22:55Uhr gestartet. Die DECT100 schaltet die BackupHDD (esata) 23Uhr ein. Damit läuft das Backup an. 23:05Uhr beende ich Autorun mittels Aufgabeplaner. Dann läuft das Script doch trotzdem normal weiter?

Wenn ich nun irgendwann, außer in der Zeit von 22:55-23:05Uhr, an die BackupHDD will, läuft das Backup nicht automatisch los, wenn ich was anderes auf die Backup HDD schieben will. So dachte ich mir das zumindest. Oder spricht da etwas dagegen?
 

Urban51

Benutzer
Mitglied seit
20. Dez 2011
Beiträge
114
Punkte für Reaktionen
0
Punkte
0
Der exitcode 100 funktioniert glaube ich seit DSM 6 überhaupt nicht mehr. letztlich triggert das autorun skript nämlich nur ein Skript, das irgendwo im autorun paket liegt. In dem Skript wird dann zum Auswerfen der Platte der entsprechende DSM call gemacht, was aber wie gesagt in DSM 6 meines Wissens nicht mehr funktioniert.
Hm, stimmt: Mit esata gibts die Auswerfen Funktion in Hyperbackup nicht.
Bleibt wohl nur den DSM call zum Auswerfen herauszufinden.
 

Fusion

Benutzer
Sehr erfahren
Mitglied seit
06. Apr 2013
Beiträge
14.164
Punkte für Reaktionen
915
Punkte
424
Was ist denn mit /usr/syno/bin/synousbdisk ?
Bei esata weiß ich es leider auch grad nicht.
 

Luis942

Benutzer
Mitglied seit
22. Jun 2012
Beiträge
495
Punkte für Reaktionen
41
Punkte
28
@Urban51
Funktionieren muss es aber irgendwie. Denn wenn ich über den DSM die Laufwerke auswerde, egal ob esata oder usb, dann werden die Laufwerke korrekt abgemeldet und auch heruntergefahren (spindown).
Ich hatte vorher geschrieben das es mit exit 100 bei esata funktioniert hat. keine Ahnung warum.... aber es funktioniert nun nicht mehr. Mit exit 100 wird zwar der Bakupjob als erfolgreich gemeldet, aber das war es auch. Das Script wird weswegen auch immer nicht beendet. und die status-LED bleibt gelb. Mit exit 0 habe ich noch kein Problem bemerkt.
Dann klappt das Auswerfen aber leider nur bei USB-hdd´s über Hyperbackup. Wobei die Hdd dann auch nur abgemeldet wird und nicht heruntergefahren wird. Das herunterfahren erledigt dann mein externes Gehäuse nach 10 min.
 

Fusion

Benutzer
Sehr erfahren
Mitglied seit
06. Apr 2013
Beiträge
14.164
Punkte für Reaktionen
915
Punkte
424
Bin leider Meilenweit von meinen DS entfernt und kann nix an/abstecken.

Habt ihr einfach mal per Menü eine Disk ausgeworfen und dann auf der Konsole mal /var/log/disk.log oder die anderen /var/log/messages, /var/log/syslog.log, /var/log/kern.log, dmesg, /var/log/dmesg angeschaut, ob ihr Hinweise findet?

Ansonsten bliebe noch eventuell einen umount des Pfades, Stop/spindown des Drive per hdparm -Y und abmelden vom SATA Controller ala "echo 1 > /sys/block/sda/device/delete" halt für das richtige device.
 

Luis942

Benutzer
Mitglied seit
22. Jun 2012
Beiträge
495
Punkte für Reaktionen
41
Punkte
28
Ich habe nun die Platte mal über Hyperbackup (externe Geräte nach Abschluss entfernen) und über "auswerfen" abmelden lassen. In den Logs sehen meine Augen aber kein Problem.
 

PsychoHH

Benutzer
Mitglied seit
03. Jul 2013
Beiträge
2.967
Punkte für Reaktionen
4
Punkte
78
Genau so wie Fusion es beschreibt meinte ich es auch und es läuft bei mir.
Ich trenne den mount und filter per mount das jeweilige Gerät und sende dann den echo 1 Code.

So soll es bei Linux halt auch gemacht werden
 

Luis942

Benutzer
Mitglied seit
22. Jun 2012
Beiträge
495
Punkte für Reaktionen
41
Punkte
28
Und wie sieht der Code dann aus? Ich bin da leider nicht wirklich im Bilde...
Bis jetzt sieht das bei mir so aus:
#!/bin/sh
/usr/syno/bin/synobackup --backup 2 --type image
sleep 60
while [ "$(/bin/pidof img_backup)" -o "$(/bin/pidof dsmbackup)" -o "$(/bin/pidof synoimgbktool)" -o "$(/bin/pidof synolocalbkp)" -o "$(/bin/pidof synonetbkp)" -o "$(/bin/pidof updatebackup)" ]
do
sleep 60
done
exit 0
Was muss ich dann statt "exit 0" machen? "exit 100" funktioniert wie ihr schreibt ja leider nicht mehr.
 

Luis942

Benutzer
Mitglied seit
22. Jun 2012
Beiträge
495
Punkte für Reaktionen
41
Punkte
28
Wenn ich vor "exit 0" noch folgendes einfüge:
"umount /volumeSATA/satashare && echo 1 > /sys/block/sdq/device/delete"
dann könnte es klappen?
Um das zu testen müsste ich die Kabel umstecken, bin im Moment nicht in Reichweite der DS.
Den Pfad und sdq muss ich vorher auch nochmal prüfen...

Für USB habe ich das zumindest mal testen können... Die Platte hat sich aber nicht schlafen gelegt. Ist zum Spindown noch ein anderer Befehl nötig?
 
Zuletzt bearbeitet:

Luis942

Benutzer
Mitglied seit
22. Jun 2012
Beiträge
495
Punkte für Reaktionen
41
Punkte
28
Ich habe nun nochmal probiert.
Abmelden und Spindown geht damit:
umount /volumeUSB2/usbshare
hdparm -Y /dev/sdq && echo 1 > /sys/block/sdq/device/delete

Allerdings bleibt in den "Gemeinsamen Ordnern" das USB Gerät noch sichtbar obwohl es bei externe Geräte nicht mehr aufgeführt ist und auch ausgeschaltet ist.
Wenn ich die Platte sonst einfach wieder einschalte dann bekommt die Freigabe hinten "_1" beim nächsten mal "_1_1" usw..

Wenn ich nur
hdparm -Y /dev/sdq && echo 1 > /sys/block/sdq/device/delete
eingebe, dann ist der gemeinsame Ordner zwar weg, aber ich bekomme die Meldung das die USB Disk nicht ordnungsgemäß ausgeworfen wird.

Hat jemand einen Tipp?

Edit:
Ich mache nun folgendes:
hdparm -Y /dev/sdq && sync; /usr/syno/bin/synousbdisk -umount sdq; >/tmp/usbtab
Damit schaltet die Platte ab, läuft aber nach 2-3 Minuten wieder an. Kein Ahnung warum. Ich habe beim dect200 nun eingestellt das der Strom nach 1min unterbrochen wird, wenn der Verbrauch unter 2,5W liegt.
Das scheint jetzt zu funktionieren.
 
Zuletzt bearbeitet:

Luis942

Benutzer
Mitglied seit
22. Jun 2012
Beiträge
495
Punkte für Reaktionen
41
Punkte
28
Ich habe nun auf eSATA umgesteckt.
Per Hyperbackup lasse ich das Laufwerk entfernen. Allerdings dreht die Platte dann weiter ohne irgendwann abzuschalten. Mit:
echo 1 > /sys/block/sde/device/delete
kann ich die Platte abschalten, nachdem das Backup durch und die HDD nicht mehr gemountet ist. Mein esata Gehäuse schaltet wohl die Platte ab wenn keine Verbindung mehr besteht (ich hoffe ich habe das richtig ausgedrückt).
Das wollte ich nun in das Script aufnehmen. Scheint aber nicht zu funktionieren. Deswegen habe ich root bei autorun nochmal geprüft:
admin@DiskStation:/volumeSATA/satashare$ sudo chown root autorun
Password:
admin@DiskStation:/volumeSATA/satashare$ ls -l autorun
-rwxrwxrwx 1 admin users 334 Jan 1 13:48 autorun
Meiner Meinung nach wird das Problem sein das die Platte wo das Script liegt eine NTFS Platte ist.
Aber wie löse ich das jetzt? Formatieren und ext4 will ich eigentlich nicht für die externen Platten.
 
Zuletzt bearbeitet:

Luis942

Benutzer
Mitglied seit
22. Jun 2012
Beiträge
495
Punkte für Reaktionen
41
Punkte
28
Ich hab mir jetzt anders beholfen.
Ich bin im Moment wieder weg von autorun, und mache das über den Aufgabenplaner.
Mit dem Aufgabenplaner mach ich ein benutzerdefiniertes Script:
/volumeSATA/satashare/esata_backup
sleep 60
echo 1 > /sys/block/sde/device/delete
exit
Dann habe ich zwei Platten. Beide werden wochen/tagweise gegeneinander getauscht. Somit wird das Backup abwechseln auf die Platten geschrieben.
Da sich die Backups aber etwas unterscheiden habe ich in Hyperbackup für jede Platte einen Job angelegt.
auf jeder Platte befindet sich eine Datei in der ein Teil des Scripts (/volumeSATA/satashare/esata_backup ) liegt. Da drin steht:
/usr/syno/bin/synobackup --backup 10 --type image
sleep 60
while [ "$(/bin/pidof img_backup)" -o "$(/bin/pidof dsmbackup)" -o "$(/bin/pidof synoimgbktool)" -o "$(/bin/pidof synolocalbkp)" -o "$(/bin/pidof synonetbkp)" -o "$(/bin/pidof updatebackup)" ]
do
sleep 60
done
Der andere Job auf der anderen Platte unterscheidet sich nur durch:
/usr/syno/bin/synobackup --backup 9 --type image
.
Wie ich nun in einem anderen Thema gelesen habe, wird wohl tatsächlich das Problem sein, dass das Script auf einem nicht Unix-kompatiblen Dateisystemen liegt, und ich den Part:
echo 1 > /sys/block/sde/device/delete
somit nicht in das eigentlich autorun Script bekomme, weil ich den Besitzer des Scripts auf der NTFS Partition nicht auf "root" geändert bekomme.

Lösungsvorschläge sind willkommen...
 

PsychoHH

Benutzer
Mitglied seit
03. Jul 2013
Beiträge
2.967
Punkte für Reaktionen
4
Punkte
78
Eigene udev Regel schreiben die den Pfad von der externen nutzt und dann "intern" das Script startet.
 

Luis942

Benutzer
Mitglied seit
22. Jun 2012
Beiträge
495
Punkte für Reaktionen
41
Punkte
28
Naja wenn man weiß was man tut, geht das bestimmt. ;)

Kann ich im autostart script welches auf dem ntfs Datenträger liegt ein anderes Script als Quelle/source benutzen? Ginge das? Dann würde ich in dem autostartscript nur ". /Pfad/Skriptesata" stehen haben und der Rest stünde auf einen Unix konformen Dateisystem auf der DS? Ginge das?
 

PsychoHH

Benutzer
Mitglied seit
03. Jul 2013
Beiträge
2.967
Punkte für Reaktionen
4
Punkte
78
Das sollte gehen.
Du kannst dann ja so einfach das Script laden und dann quasi intern ausführen. Schreib das Script doch komplett in eine Funktion.
Dann lädst du es und führst es aus.
 

Luis942

Benutzer
Mitglied seit
22. Jun 2012
Beiträge
495
Punkte für Reaktionen
41
Punkte
28
OK, damit kann ich was Anfangen. :) Werde ich heute Abend mal testen...

Edit:
Inzwischen konnte ich etwas testen.
Im Autorun Script auf meinen Backupplatten steht nun ausschließlich die Source ". /...." drin.
Alles andere ist in der Source drin und liegt auf einem btfrs Laufwerk und hat als Besitzer nun root eingetragen.
Damit fährt mein eSATA Laufwerk mit "exit 100" (in der Source) die Platte runter.

Es kann so einfach sein... Danke für die Hilfe. :)
 
Zuletzt bearbeitet:


 

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