Se ho un percorso di file o directory, come posso elencare tutti i backup di Time Machine di quel percorso?
Ecco il mio tentativo:
#!/bin/bash
# list Time Machine backups of a file starting with most recent
if [ "$#" -ne 1 ]; then
echo "Usage: list_backups.sh filename"
exit
fi
filename='realpath "$1"'
# find root volume path
for vol in /Volumes/*; do
if [ "$(readlink "$vol")" = / ]; then
root_vol=$vol
fi
done
# prepend it to input path if necessary
if [[ "$filename" != /Volumes* ]]; then
filename="$root_vol$filename"
fi
# remove /Volumes from input path
filename="${filename///Volumes}"
# loop over backups in reverse order
tmutil listbackups | tail -1000 -r |
while IFS= read -r line; do
if [ -e "$line$filename" ]; then
ls -ald "$line$filename"
else
echo "not in $line"
fi
done
Supponendo che non hai cambiato il nome della tua unità principale da 'Macintosh HD' a qualcos'altro, puoi eseguire
ls -l /Volumes/Time\ Machine/Backups.backupdb/$(hostname -s)/*/Macintosh\ HD/$(realpath FILENAME)
per vedere tutte le versioni memorizzate in TimeMachine.
PS realpath
è disponibile solo se hai installato GNU coreutils (ad es. tramite brew). Altrimenti usa $(pwd)/FILENAME
o (se questo non funziona perché sono coinvolti alcuni link simbolici), specifica invece il percorso completo.
Leggi altre domande sui tag macos time-machine