binarybear
Goto Top

Backup-Lösung oder Dateisystem mit Protokollierung von "Dateiaktionen"

Ich habe derzeit eine externe Platte auf die ich alle paar Monate mal ein Backup manuell via rsync fahre.
Im Grunde sind die Daten nicht so wichtig, da alles via Nextcloud vom PC synchronisiert wird. Jedoch habe ich für den Fall gerne eine Sicherung..

Bei Rsync gibt es nun aber das Problem, dass wenn ich eine Datei umbenenne und dann eine Sicherung via rsync starte, dass die alte Datei auf der Backup-Platte gelöscht wird (da sie unter diesem Namen auf dem Quelldatenträger nicht mehr vorhanden ist) und unter dem neuen Namen wieder kopiert wird - obwohl sich an der Datei selbst nichts geändert hat.

Gibt es hier eine elegantere Lösung, welche z.B. Umbenennungen sowie das Verschieben von Ordnern erkennt und das dann auf dem Backup-Datenträger durchführt ohne die Dateien einmal zu löschen und unter neuem Namen / Pfad zu kopieren?

Bei einigen wenigen Dateien ist das nicht schlimm, jedoch habe ich letztens meine Filme-Ordner umbenannt und verschoben: Somit mussten knapp 200GB gelöscht und wieder kopiert werden, was ja mehr oder weniger überflüssige Backup-Zeit generiert...

Content-Key: 362238

Url: https://administrator.de/contentid/362238

Printed on: April 25, 2024 at 16:04 o'clock

Member: IrunGoldstein
Solution IrunGoldstein Jan 24, 2018 updated at 18:03:19 (UTC)
Goto Top
Hi Bear,

schau mal hier:

https://github.com/dparoli/hrsync

Da hat einer eine Lösung für das Problem.

Grüße

Edit: script hinzugefügt

#!/usr/bin/env bash

# hrsync by Daniele Paroli
#
# simple script to backup a directory with rsync detecting moved and renamed files
#
# use it at your own risk, please see README and LICENSE files

# ------------------------------------------------------------
# Backup source and target directory 

Source="${1%/}"  
Target="${2%/}"  
TargetHost=$3

# ------------------------------------------------------------
# Name of shadow directory
Shadow=".rsync_shadow"  


# Start doing things

if [ "${Source:0:1}" != / ]  
then
	echo "Source path needs to be an absolute path"  
	exit 0
fi

if [ "${Target:0:1}" != / ]  
then
	echo "Target path needs to be an absolute path"  
	exit 0
fi

if [ -z "$2" ]  
then
	echo "Usage:"  
	echo "	hrsync source target"  
	echo "	hrsync source target remoteHost"  
	echo "Example:"  
	echo "	hrsync /home/user/Documents /mnt/external/Documents"  
	echo "	hrsync /home/user/Documents /root/Documents root@example.com"  
	echo "Please see the README file"  

	exit 0
fi


if [ ! -d "$Source/$Shadow" ]   
then
	# first time run: create source shadow
	rsync -a --delete --link-dest="$Source" --exclude="/$Shadow" "$Source"/ "$Source/$Shadow"  
fi

# do real syncronization
if [ -z "$3" ]  
then
	# local version
	rsync -axXhHv --stats --no-inc-recursive --numeric-ids --delete --delete-after "$Source"/ "$Target"  
else
	# remote version
	rsync -axXhHv --stats --no-inc-recursive --numeric-ids --delete --delete-after "$Source"/ $TargetHost:"'$Target'"  
fi

status=$?

if [ $status -eq 0 ]
then
	#update source shadow directory
	rsync -a --delete --link-dest="$Source" --exclude="/$Shadow" "$Source"/ "$Source/$Shadow"  

	#update target shadow directory
	if [ -z "$3" ]  
	then
		# local version
		rsync -a --delete --link-dest="$Target" --exclude="/$Shadow" "$Target/" "$Target/$Shadow"  
	else
		# remote version
		ssh $TargetHost "rsync -a --delete --link-dest='$Target' --exclude='/$Shadow' '$Target/' '$Target/$Shadow'"  
	fi
fi

exit $status
Member: DerWoWusste
DerWoWusste Jan 24, 2018 at 18:12:39 (UTC)
Goto Top
Hi.

Somit mussten knapp 200GB gelöscht und wieder kopiert werden, was ja mehr oder weniger überflüssige Backup-Zeit generiert...
Aber das machst Du doch nicht ständig. Einfach auf dem Backupziel manuell ebenso umbenennen und fertig.
Member: BinaryBear
BinaryBear Jan 26, 2018 at 09:17:02 (UTC)
Goto Top
Passiert aber mal des öfteren, beispielsweise bei Nextcloud, sofern Dinge in den Papierkorb geschoben werden oder beispielsweise Videos vom automatisch erzeugten Namen per Hand korrekt benannt werden. Das sind meist nur wenige Aktionen, die einen Schreibaufwand von ein paar 100MB bishin zu GBs erzeugt.

Ich würde gerne einfach die Dateizugriffe reduzieren...