V práci používáme počítače v operačním systémem OS X, v mém případě se jedná o MacBook Pro (13″, Mid 2012). Tento přístroj neoplývá příliš rychlým pevným diskem a pro lokální testování námi vyvíjené aplikace se tedy příliš nehodí. Z toho důvodu jsem se rozhodl, že se pokusím zprovoznit RAM disk a software nainstaloval na něj. Mé požadavky byly následující:
- RAM disk se musí při každém vypnutí automaticky zazálohovat
- stejně tak se musí při každém zapnutí automaticky vytvořit a obnovit z dříve vytvořené zálohy.
Vzhledem k tomu, že s operačním systémem nemám příliš zkušeností, byl jsem nucen hledat návody na Internetu. Nakonec se mi podařilo za využití dvou návodů (viz zdroje) správně fungující RAM disk vytvořit.
Postup
Pro fungování RAM disku jsou potřeba dva soubory se skripty (shell executables). První z s názvem script2.sh lze vytvořit ve složce user pomocí následujícího příkazu:
touch ~/script2.sh
open -e !$
Tento příkaz soubor zároveň otevře. Do něj se vloží následující skript:
#!/bin/sh
mount |grep /Volumes/RamDisk > /dev/null
if [ $? -ne 0 ]; then
# 2GB
sudo diskutil erasevolume HFS+ "RamDisk" `hdiutil attach -owners on -nomount ram://4194304`
sudo diskutil enableOwnership /Volumes/RamDisk
#restore ramdisk image from disk
sudo rsync -a /var/spool/rdimage/ /Volumes/RamDisk/
fi
Tento skript při spuštění vytvoří RAM disk o velikosti 2 GB a zkopíruje na něj obsah složky rdimage.
Soubor je nutné nyní uložit, zavřít editor a do terminálu napsat následující příkaz:
chmod +x ~/script2.sh
Poslední věc, kterou je potřeba udělat u prvního skriptu, je přidat tzv. LoginHook, který zajistí, že skript se spustí při každém přihlášení uživatele.
sudo defaults write com.apple.loginwindow LoginHook ~/script2.sh
Tím je první část hotová. Pro druhý skript (script.sh) se použije obdobný postup, jiný je pouze obsah skriptu a místo LoginHooku je nutné použít LogoutHook.
script.sh:
#!/bin/sh
LogoutHook:
mount |grep /Volumes/RamDisk > /dev/null
if [ $? -eq 0 ]; then
echo saving /Volumes/RamDisk in /var/spool/rdimage
sudo rsync -av --delete /Volumes/RamDisk/ /var/spool/rdimage/
sudo diskutil unmount /Volumes/RamDisk
fi
sudo defaults write com.apple.loginwindow LogoutHook ~/script.sh
Druhý skript, který se spustí při odhlášení uživatele, zajistí zkopírování obsahu RAM disku do Vámi zvolené složky (musí být stejná jako v prvním skriptu) a bezpečné odpojení disku.
A to je vše. RAM disk je nyní plně funkční. V případě, že byste ho již nechtěli využívat, stačí do terminálu zadat tyto dva příkazy:
sudo defaults delete com.apple.loginwindow LoginHook
sudo defaults delete com.apple.loginwindow LogoutHook
Zdroje
http://superuser.com/questions/295924/how-to-run-a-script-at-login-logout-in-os-x
http://www.sokoide.com/wp/2012/06/30/ramdisk-backup-restore-on-macos-x-lion/