Hi zusammen,
ich habe versucht ein Script zu schreiben das den "echten" Speicherbedarf einer "Version" in Bezug auf die Vorgänger Version berechnet:
Benutzung:
momentan ist vorgesehen das das Script aus dem Verzeichnis "task1" (in dem die "Versions" Ordner mit dem Datum und Uhrzeit liegen) gestartet wird.
(bei mir /volumeUSB1/usbshare/TimeBackup/DS110_00eigeneZahlen/task_1)
"./inode.sh Verzeichnis Vorgänger_Verzeichnis"
Sinn:
hier haben sich Leute gewundert wieso beim Löschen kein / kaum Speicher frei wird
(Die Gui löscht die Versionen erst von der HDD wenn der TB-recycler gelaufen ist (guckt mal in die cron wann der läuft),da gibt es wohl einen eigenen Thread zu)
frei werden sollte nur die Angabe von: Summe neue oder geänderte Dateien
(Nachtrag: das ist natürlich Unsinn: weil wenn wieder ein HardLink des neueren Backup/Version auf die Datei zeigt wird der Platz nicht frei)
also maximal frei werden kann
Vorgehen:
Ich habe die "inodes" jeder Datei indem Vorgänger_Verzeichnis gesucht, Gleiche addiert und von der gesamten Verzeichnis Größe abgezogen.
Sonstiges:
In meinem TimeBackup ist momentan wohl nur mein File-Basiertes "PMWiki" drin (deshalb nur 6MB)
Ich mache auf meinem Linux mit Back In Time mein Backup (das basiert auch auf Hardlinks) und so kann ich das auch lokal benutzen.
(lokal läuft das Script bei ca 11.000 Dateien fast 4 min)
Linux erlaubt keine Hardlinks auf Ordner, deswegen sollte der Platzbedarf für die Ordner jedesmal dazu kommen (auch wenn sonst nicht geändert wurde)
Fehler: (siehe Ausgabe)
Beim Ermitteln der Inode-Nummern, ist ein das Start Verzeichniss in die Liste gerutscht, (ich glaube aber das das keine Auswirkung auf das Ergebnis hat)
ls gibt bei der rekursiven Ausgabe den aktuellen Unterordner mit an (grep schafft die meisten)
Varianten:
Ausgabe in MB statt KB die beiden du Aufrufe:
von "du -c" in "du -cm" ändern
Wünschenswert:
schön wäre wenn die Größe für jeden Unterordner ausgegeben würde, um die Speicher-Fresser leicht zu finden.
Ich hoffe das kann irgendwer gebrauchen
Anregungen und Verbesserungen gerne (ich schreibe nur alle halbe Jahre mal ein Script)
Euer BF
ich habe versucht ein Script zu schreiben das den "echten" Speicherbedarf einer "Version" in Bezug auf die Vorgänger Version berechnet:
Rich (BBCode):
#!/bin/sh
echo "Beispiel Aufruf: ./inode 20150729-1900 20150728-1900"
echo "Diese Datei sollte im 'Task1' Ordner liegen"
echo " in dem die einzelnen Versionen liegen"
echo "--"
echo "$(date)"
echo "Neue Dateien in $1 im Vergleich zu " $2
if [ $# -ne 2 ]; then
echo "Fehler: es werden genau 2 Parameter benötigt"
exit 1
fi
size=0
for file in $(ls -iR ./$1/ |awk '{print $1}' |grep -v [[:alpha:]])
do
# echo "Inode Nummer: $file"
ssi=$(find ./$2 -inum $file | while read i; do du -c "$i" | tail -1 | awk '{print $1}'; done | tail -1)
# echo "Größe gleicher Datei "$ssi
size=$((size+ssi))
done
echo "$(date)"
echo "Neue Dateien in $1 im Vergleich zu " $2
echo "Summe gleiche Dateien:" $size
ssi=$(du -c ./$1/ | tail -1 | awk '{print $1}')
echo "Summe des gesamten Verzeichnisses: " $ssi
echo "Anzahl Dateien:" $(find ./$1 -type f | wc -l)
echo "Anzahl Verzeichnisse:" $(find ./$1 -type d | wc -l)
size=$((ssi-size))
echo "Summe neue oder geänderte Dateien:" $size "in KB"
Ausgabe schrieb:DS110> ./inode.sh 20150729-1900/ 20150728-1900/
Beispiel Aufruf: ./inode 20150729-1900 20150728-1900
Diese Datei sollte im 'Task1' Ordner liegen
in dem die einzelnen Versionen liegen
--
Thr Jul 30 08:29:39 CEST 2015
Neue Dateien in 20150729-1900/ im Vergleich zu 20150728-1900/
find: invalid number './20150729-1900//:'
Thr Jul 30 08:31:01 CEST 2015
Neue Dateien in 20150729-1900/ im Vergleich zu 20150728-1900/
Summe gleiche Dateien: 6580
Summe des gesamten Verzeichnisses: 7472
Anzahl Dateien: 747
Anzahl Verzeichnisse: 39
Summe neue oder geänderte Dateien: 892 in KB
DS110>
Benutzung:
momentan ist vorgesehen das das Script aus dem Verzeichnis "task1" (in dem die "Versions" Ordner mit dem Datum und Uhrzeit liegen) gestartet wird.
(bei mir /volumeUSB1/usbshare/TimeBackup/DS110_00eigeneZahlen/task_1)
"./inode.sh Verzeichnis Vorgänger_Verzeichnis"
Sinn:
hier haben sich Leute gewundert wieso beim Löschen kein / kaum Speicher frei wird
(Die Gui löscht die Versionen erst von der HDD wenn der TB-recycler gelaufen ist (guckt mal in die cron wann der läuft),da gibt es wohl einen eigenen Thread zu)
frei werden sollte nur die Angabe von: Summe neue oder geänderte Dateien
(Nachtrag: das ist natürlich Unsinn: weil wenn wieder ein HardLink des neueren Backup/Version auf die Datei zeigt wird der Platz nicht frei)
also maximal frei werden kann
Vorgehen:
Ich habe die "inodes" jeder Datei indem Vorgänger_Verzeichnis gesucht, Gleiche addiert und von der gesamten Verzeichnis Größe abgezogen.
Sonstiges:
In meinem TimeBackup ist momentan wohl nur mein File-Basiertes "PMWiki" drin (deshalb nur 6MB)
Ich mache auf meinem Linux mit Back In Time mein Backup (das basiert auch auf Hardlinks) und so kann ich das auch lokal benutzen.
(lokal läuft das Script bei ca 11.000 Dateien fast 4 min)
Linux erlaubt keine Hardlinks auf Ordner, deswegen sollte der Platzbedarf für die Ordner jedesmal dazu kommen (auch wenn sonst nicht geändert wurde)
Fehler: (siehe Ausgabe)
Beim Ermitteln der Inode-Nummern, ist ein das Start Verzeichniss in die Liste gerutscht, (ich glaube aber das das keine Auswirkung auf das Ergebnis hat)
ls gibt bei der rekursiven Ausgabe den aktuellen Unterordner mit an (grep schafft die meisten)
Varianten:
Ausgabe in MB statt KB die beiden du Aufrufe:
von "du -c" in "du -cm" ändern
Wünschenswert:
schön wäre wenn die Größe für jeden Unterordner ausgegeben würde, um die Speicher-Fresser leicht zu finden.
Ich hoffe das kann irgendwer gebrauchen
Anregungen und Verbesserungen gerne (ich schreibe nur alle halbe Jahre mal ein Script)
Euer BF
Zuletzt bearbeitet: