A Time Machine az Apple OSX rendszerének a biztonsági mentésekért felelős, beépített szolgáltatása. Alapvetően a rendszerünkön elérhető összes állományról rendszeresen készít egy biztonsági másolatot egy külső merevlemezre. A dolog kifejezetten jól működik (Anno Zsolti fordított egy cikket róla), egyetlen hátulütője, hogy a poweruserek számára nem túl sok egyedi beállítás érhető el a finomhangoláshoz. Alapvetően csak azt engedi beállítani, hogy mik ne legyenek a rendszeren mentve, az időzítés és egyéb karbantartások elérhetetlenek a felhasználók számára.

Egy ingyenes (TimeMachineScheduler) program segítségével egy felhasználó barát felületet kaphatunk a Backup-ok időzítésével kapcsolatban. Viszont, aki használni fogja ezt a szolgáltatást, az gyorsan találkozni fog vele, hogy több száz giga, vagy akár terra méreteket is el fog foglalni a külső merevlemezünkön a mentés. Az Apple szerint a Time Machine automatikusan felismeri, ha már nincs több hely, és akkor törölget régi mentéseket. Ezzel semmi gond se lenne, ha tudnék egy külön részt definiálni a biztonsági mentések számára. Viszont nem tudok, a biztonsági mentés pedig a hasznos adatok elől is eszi a tárhelyet.

OSX 10.9 Maverick alatt próbáltam csupán a következő megoldást, nem tudom, hogy pontosan mikor jelent meg ez a funkció. Minden esetre parancssorból lehetőségünk van a Time Machine biztonsági mentések kezelésére egyszerűen. A következő parancsok kiadásához a Terminal programot fogjuk használni, és szükség lesz egy Administrator jogosultsággal rendelkező felhasználóra.

Először is listázzuk ki, hogy milyen időkről van biztonsági mentésünk. Ehhez sima felhasználói jogosultság is elég lesz.

xorp-mba:~ miszterx$ /usr/bin/tmutil listbackups

timemachine_del1

Ahogy látszik, egy listát fogunk kapni azokról az útvonalakról, amik külön biztonsági mentéseket könyvtárstruktúráit testesítik meg. A sor végén mindig egy ÉV-HÓNAP-NAP-ÓRA|PERC|MÁSODPERC jelzést kell látnunk. Ez jelöli a backup készítési idejét.

Egy adott backup törléséhez már adminisztrátori jogosultság kell. Ha sima felhasználóként próbáljuk kiadni, akkor a következőt kell kapnunk.

timemachine_del2

Tehát ebben az esetben használnunk kell a sudo parancsot, hogy adminisztrátori jogosultsággal fusson a parancs. Elég a sudo szót a parancs elé írni. A futás előtt a rendszer kérni fogja a felhasználó jelszavát újra, hogy megerősítse, hogy ez a parancs most adminisztrátorként fog futni. Ugyan azt a parancsot fogjuk használni, csak most a delete szóval a törlést fogjuk kérni, és utána megadunk az előző listából egy backup-ot. Fontos, hogy ne felejtsük idézőjelek közé tenni a backup teljes elérési útvonalát.

xorp-mba:~ miszterx$ sudo /usr/bin/tmutil delete "/Volumes/Time Machine Backups/Backups.backupdb/xorp-mba/2013-10-26-192605"

timemachine_del3

Ne ijedjünk meg, ha a parancs lefutása sok időt vesz időbe. Nálam egy-egy backup (file mennyiségtől és mérettől is függ), akár több tíz percet is futott. Ha mégis meg akarjuk szakítani akkor a CTRL + C kombináció megnyomásával megtehetjük. Sikeres futást követően a backup törölve lesz, és láthatjuk, hogy mekkora helyet szabadítottunk fel. Futtassuk újra a listázási parancsot.

xorp-mba:~ miszterx$ /usr/bin/tmutil listbackups

timemachine_del4

Ahogy a fenti képen látszik, az előbb törölt elem eltűnt. Viszont minden, ami előtte volt még elérhető. Sajnos az OSX 10.9 nem biztosít erre parancsot, így én félig találva, félig újra írva, de közre adnék egy script-et ahhoz, hogy valaki egy adott időpont minden backup-ot letöröljön automatikusan.

Hozzunk létre egy szöveges file-t, aminek a tartalm a következő lesz (én a VI parancsot ajánlom ehhez Terminal-ból).

#!/bin/bash
#set -x

if [ -z "$1" ]
then
    echo "must specify backup id: YYYY-MM-DD-HHMMSS"
    echo "Here is the list about the available backups:"
    /usr/bin/tmutil listbackups
    exit 1
fi

FOUND_BACKUP=0;
BACKUPS=""
while read line; do
    if [[ "${line}" == *$1* ]]
    then
        FOUND_BACKUP=1;
    fi

    if [ "${FOUND_BACKUP}" == "1" ]
    then
        BACKUPS+="${line}"$'\n'
    fi
done < <(/usr/bin/tmutil listbackups | tail -r)

if [ "${FOUND_BACKUP}" == "0" ]
then
   echo "The $1 was not found in the backup list"
   echo "Here is the list about the available backups:"
   /usr/bin/tmutil listbackups
   exit 1
fi

echo -n "Delete above backups? [y/N]? "
read answer
case $answer in
    y*)
        while read line; do
            if [ -n "${line}" ]
            then
                echo Running: /usr/bin/sudo /usr/bin/tmutil delete "${line}"
                /usr/bin/sudo time /usr/bin/tmutil delete "${line}"
            fi
        done < <(echo "${BACKUPS}")
        ;;
    *)
        echo No change
        ;;
esac

exit 0

Majd VI-ban a következő kombinációval tudunk kilépni és elmenteni azt. :wq!

Kérek mindenkit, hogy a script-et csak saját felelőségre használja. Én a saját rendszereimen teszteltem. Magát a script-et sudo-val érdemes meghívni. Amennyiben paraméter nélkül futtatjuk, úgy a következőt fogjuk kapni:

xorp-mba:~ miszterx$ sudo ./timemachine_delete_old_archive.sh

timemachine_del6

A script kiírja, hogy meg kell adnunk egy időpontot a megfelelő formátumban, és a listából kell választanunk egyet. Amennyiben adunk meg paramétert, de nem a listából választunk egy létező időpontot, abban az ez esetben ezt fogjuk kapni.

xorp-mba:~ miszterx$ sudo ./timemachine_delete_old_archive.sh AKARMI_DE_NEM_JO

timemachine_del7

Ilyenkor azt kapjuk, hogy a megadott paraméter nem található a Backup listában, és válasszunk a listából. Ha pedig rendeltetésszerűen, egy meglévő backup-ot adunk meg, akkor rá fog kérdezni, hogy kívánjuk-e a megadott Backup-ot, és minden előzményt is törölni. Ha igent választunk, akkor szépen elindul egyesével a törlés. Mintha egymás után kézzel adtuk volna ki az eredeti parancsot.

xorp-mba:~ miszterx$ sudo ./timemachine_delete_old_archive.sh /Volumes/Time Machine Backups/Backups.backupdb/xorp-mba/2013-11-02-010658

timemachine_del8

Aki viszont nem kíván script-et használni, az az eredeti parancsokat is kiadhatja egymás után, kézzel.