Externe backup harddisk alleen inschakelen tijdens backup

Huh?

Externe harddisks zijn tegenwoordig goedkoper dan interne (IDE) harddisks. Fijn voor de backup maar ze hebben een groot nadeel; de koeling is meestal matig en als je deze dag en nacht aan laat staan heb ik ervaren dan gaan ze niet lang mee. De oplossing is dus om ze alleen aan te zetten tijdens de backup maar dan wel graag zonder dat het een handmatige handeling wordt.
Mijn backupscript wordt iedere nacht gedraaid vanuit de crontab maar hoe dan in- en uitschakelen?
Ik heb dat gedaan via de seriele poort en hoe dat beschrijf ik hier.

hardware

Er is uiteraard wat hardware voor nodig maar dat is erg weinig. Ik heb de behuizing genomen van een defecte schakelklok maar een (stekker) behuizing kopen kan natuurlijk ook. Daarin heb ik de voedingsdraden geschakeld via een solid state relais. Deze kosten een paar euro, zijn kompact en geven een galvanische scheiding tussen laagspanningscircuit en netspanning.
Daarnaast een diode en een weerstand. De diode is voor de sperspanning en de weerstand om de ledstroom te beperken.
Tot slot is een 2 draads kabeltje nodig en een DB9 connector.

opbouw

De seriele poort heeft een DTR aansluiting, Data terminal Ready, die we hier misbruiken als signaal lijn. In rust staat hier -12Volt op ten opzichte van de massa. Sturen we de DTR aan dan wordt deze +12Volt t.o.v. de massa. Normaal gesproken is de lijn altijd laag en ook tijdens het booten stuitert hij niet wat wel prettig is voor de harddisk.
De gebruikte solid state is in mijn geval een S202T01 van sharp. Deze kost een paar euro en is heel compact. De maximale stroom is 2A. Een andere solid state kan uiteraard ook, de meeste solid states hebben voldoende aan 7 a 10 mA en dat is wat de seriele poort kan leveren. De schakeling stelt zoals gezegd weinig voor. De weerstand is 1.5K en de diode een 1N4148. De diode kan bijna elke diode zijn uit de rommeldoos.


script

Ik heb een klein perl script gemaakt voor het hoogmaken van de DTR. Vanuit dit script stuur ik een shellscript aan dat de backup verder doet. Na afsluiten van het perl script wordt de DTR vanzelf weer laag.
Er is wel een extra module in perl nodig voor het aansturen van de poort. In ubuntu is deze te installeren met:
sudo apt-get install libdevice-serialport-perl
het perl scriptje:
#!/usr/bin/perl
# raise dtr, execute command and drop dtr
use Device::SerialPort qw( :PARAM :STAT 0.07 );
# com1
$port="/dev/ttyS0";
my $PortObj = Device::SerialPort->new($port) or die "Error: cannot open serial port: $! \n"; ;
$result=$PortObj->dtr_active(1);
# 10 seconden voor initialiseren van de harddisk
sleep 10;
system("backup.sh"); 
# 10 seconden voor unmount harddisk, niet echt nodig denk ik
sleep 10;
$result=$PortObj->dtr_active(0);
Het backupscript:
#!/bin/bash
mount /dev/sdb1 /mnt/backup
if [ -f /mnt/backup/testfile.txt ]; then
  echo backup..
  cp -R /home/* /mnt/backup/ 
  (rsync -rtv --stats /home/ /mnt/backup/ --modify-window=1 >/tmp/rsync.log)
  sleep 10
  umount /dev/sdb1
else
  echo "kan externe harddisk niet mounten, is script gestart via dtr-backup?";
  exit
fi
Eerst mounten van de harddisk, dan kijken of het ook echt klopt dmv een controlefile. De backup zelf kan een kopie zijn, een ingepakte file met tar of een rsync commando. Afhankelijk van de hoeveelheid te backuppen data. Ik backup zelf met rsync en maak snaphots van de gewijzigde data zodat er altijd een weg terug is bij per ongeluk gewiste bestanden. Zie hiervoor rsync documentatie.




Geef hieronder uw commentaar, mening of aanvullingen op deze pagina en lees de eventuele meldingen van andere lezers.

naam:
email:
spamcheck: 1999+1=...
opmerking:
   




Website door Wouter Barendsen, 2005-2016