• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Geänderte Verzeichnisse und Dateien kopieren

mampfi

Hacker
Ich such nen Weg geänderte Verzeichnisse und Dateien NACH einem gewissen Datum zu kopieren (etwas in der Art wie mit xcopy unter Windows)

Also eine Art "rsync-delta"
 
Könnte gehen:
Code:
if [ ! -r .mylast-copy ]
then
 touch .mylast-copy
 # kopiere alles
 tar -cf - -C /meinsicherungspfad . | ( cd ziel && tar xvf - )
else
 mv .mylast-copy .mylast-copy.before
 touch .mylast-copy
 tar -cf - --newer=./.mylast-copy -C /meinsicherungspfad . | ( cd ziel && tar xvf - )
fi

Haveaniceday
 
Wieso machst du einmal tar -C und auf der anderen Seite verwendest du die (cd;) Syntax... nimm doch rechts von der Pipe auch einfach -C, das spart die Subshell.
 
Bei dem --newer will ich in dem ursprünglichen Verzeichnis bleiben, da geht -C ganz gut.
Die andere Seite ist aus der Gewohnheit so.
| ssh ich@woanders "cd irgendwo && tar xf -"

Den Abbruch mit && wenn das cd nicht klappt finde ich wichtig. Aber das ginge auch mit -C

Haveaniceday
 
OP
M

mampfi

Hacker
Also bei mir wurde draus.

if [ ! -r .mylast-copy ]
then
touch .mylast-copy
# kopiere alles
tar -cf - -C /meinsicherungspfad . | ( cd /daten && tar xvf - )
else
mv .mylast-copy .mylast-copy.before
touch .mylast-copy
tar -cf - --newer=./mylast-copy -C /meinsicherungspfad . | ( cd ziel && tar xvf - )
fi


Fehlermeldung:

tar: Datumsdatei nicht gefunden.
Try `tar --help' or `tar --usage' for more information.

Wenn ichs richtig versteh, dann würde da eine tar-Datei draus.
 

regexer

Advanced Hacker
Das mit dem xcopy musste ich erstmal nachlesen - bin nicht so fit in der Win-Welt. Meinst du xcopy /d?
Das hört sich für mich so an, als müsste man mit find ... -mtime oder find ... -newer etwas machen können. Den copy kann man dann innerhalb des finds mit einem -exec aufrufen. Näheres Siehe man find.
 
OP
M

mampfi

Hacker
Naja, ist wohl eher ein Vermächtnis aus der MS-DOS-Zeit. ;-)

Ich poste mal die DOS (Windows-Version)

xcopy p:\*.* d:\daten_neu_%1 /s /D:%1

Eine Anwendung wäre dann: xkop_change 02-19-08
%1 ist der Parameter

p: steht fürs Quellverzeichnis, in meinem ein Netzwerklaufwerk
(Natürlich ein Linux ;-) )
 
mampfi schrieb:
Fehlermeldung:
tar: Datumsdatei nicht gefunden.
Try `tar --help' or `tar --usage' for more information.

Wenn ichs richtig versteh, dann würde da eine tar-Datei draus.

Mein Fehler. Mit ./.mylast-copy statt ./mylast-copy sollte es gehen. Habs oben auch geändert.

Es wird kein TarArchiv daraus, sonder tar packt ein/aus auf/von "stdin/stdout" mir -f -
Haveaniceday
 
OP
M

mampfi

Hacker
Hm, werd ich ausprobieren, sitze aber momentan grad am Windows-Rechner.

Die Geschichte mit dem Datum wäre dann aber wahrscheinlich wirklich eine Kombi von find und cp.
 

regexer

Advanced Hacker
mampfi schrieb:
Die Geschichte mit dem Datum wäre dann aber wahrscheinlich wirklich eine Kombi von find und cp.
Die Fortgeschrittenen nehmen statt dem find-Parameter -exec den Befehl xargs. Dazu einfach mal die Suchfunktion mit find und xargs anwerfen. Da müsstest du massig Beispiele finden...
Das wäre also insgesamt eine Kombi von find, xargs und cp
 
OP
M

mampfi

Hacker
klinkt alles reichlich kryptisch. Vielleicht doch irgendwann ein C-Programm bauen, das rekursiv durch die Verzeichnisse marschiert, das kann man dann für alles mögliche anpassen.

Also geänderte Dateien sichern und packen mach ich so, hat aber leider nix mit Datum zu tun:

ZEIT_DATUM=`date +%d-%m-%y_%H-%M`
DATUM=`date +%m-%y`
tar_datei=backup_daten_$ZEIT_DATUM.tgz

/daten/emails/bat/note_date

inkr_liste=/media/disk/tarbackup/daten/inkr_daten.txt

tar czf /media/disk/tarbackup/daten/$tar_datei --listed-incremental=$inkr_liste /daten
 
Oben