Backup-Script

[moR-pH-euS]

Magnum P.I.
hy,
folgender Einzeiler soll alle Dateien in einem Verzeichniss finden, die in den letzten 24Stunden verändert wurden und in ein Backup-Verzeichniss kopieren damit diese dann auf DVD-gebrannt werden können (soll am Ende alles automatisiert werden, damit man nur noch die DVD oder CD in den Brenner legt)

Code:
netbsd# find /home/morpheus/freigabe/fun -mtime -1 -exec cp \{\} /home/morpheus/freigabe/fun/tmp \;

Funktioniert auch soweit. Das Problem ist, das ich gerne die komplette Ornderstruktur mitkopieren würde (also das /home/morpheus/backup/bla.tar nach /home/morpheus/backup/brennen kopiert wird, damit am Ende /home/morpeus/backup/brennen/home/morpheus/backup/bla.tar dasteht).
Leider hört jetzt mein Latein auf und ich komme nicht mehr weiter...

Hier noch der Output vom Script:

Code:
netbsd# find /home/morpheus/freigabe/fun -mtime -1 -exec cp \{\} /home/morpheus/freigabe/fun/tmp \;
cp: /home/morpheus/freigabe/fun is a directory (not copied).
cp: /home/morpheus/freigabe/fun/ficken is a directory (not copied).
cp: /home/morpheus/freigabe/fun/tmp is a directory (not copied).
cp: /home/morpheus/freigabe/fun/tmp/test.sh and /home/morpheus/freigabe/fun/tmp/test.sh are identical (not copied).
cp: /home/morpheus/freigabe/fun/tmp/gaschwahn.txt and /home/morpheus/freigabe/fun/tmp/gaschwahn.txt are identical (not copied).

Jemand eine Idee wie man das lösen kann?
 
tach,

ich mache das bei mir nach folgendem Schema mit Hilfe von cpio:

Backup erstellen; findet alles, was in den letzten 24 Stunden geändert wurde
Code:
find /home/user -mtime -1 -depth | cpio -o > /home/user/backup

Überprüfung von "backup"
Code:
cpio -itvI backup

Wiederherstellen
Code:
cpio -id /home/user/foo.bar < /home/user/backup
 
Zuletzt bearbeitet:
spezifisch zu einer deinen Fehlerausgaben aus der manpage zu cp (von FreeBSD):

cp -- copy files

DESCRIPTION

-R If source_file designates a directory, cp copies the directory and
the entire subtree connected at that point. If the source_file
ends in a /, the contents of the directory are copied rather than
the directory itself. This option also causes symbolic links to be
copied, rather than indirected through, and for cp to create spe-
cial files rather than copying them as normal files. Created
directories have the same mode as the corresponding source direc-
tory, unmodified by the process' umask.

Damit spiele ich auf Fehlermeldungen wie diese an:
cp: /home/morpheus/freigabe/fun/ficken is a directory (not copied).

(wobei ich mich zugegebenermassen über den Namen amüsiert habe...)

D.h. wenn du die Ordner kopieren willst brauchst du den -R switch.
 
@orangutanklaus:
danke für deinen lösungsweg. werde ich morgen testen.

@thyrver:
mit dem R Flag werde ich es auch nochmal probieren, thx.
und solche dateinamen benutze ich meistens zum testen ;-)
 
Wenn Du 'cp -R' benutzt wird Dein Skript aber auch nicht das tun, was es soll. In dem Fall, den Du beschreibst würde das Skript z.B. das Verzeichnis
Code:
/home/morpheus/freigabe/fun
mit allen Dateien und Unterverzeichnissen kopieren, ungeachtet ob wirklich alle files und Verzeichnisse der mtime entsprechen.
Außerdem würden dabei etliche Dateien und Ordner mehrfach kopiert.
Hier mal ein etwas anderer Ansatz, der auch die Verzechnisstruktur so übernimmt, wie Du es haben möchtest:
Code:
tar -f - -cp `find /home/morpheus/freigabe/fun -mtime 1 -type f`|tar -C /home/morpheus/freigabe/fun/tmp -xpf -

Gruß,

Ice
 
Zuletzt bearbeitet:
@[moR-pH-euS]

Freud mich, wenn ich helfen konnte.
Du musst allerdings aufpassen, wenn es Files/Dirs mit Leerzeichen gibt! Dafür müsste man noch ein bischen rumfummeln.....

Gruß,

Ice
 
tach,

bleibt mir noch hinzuzufügen, dass ich dennoch ein Backup mit cpio (oder afio) bevorzugen würde, denn: "...cpio verzweifelt nicht an beschädigten Archiven und vermag zumindest den unversehrten Teil komplett wieder herzustellen." ;)
 
@orangutanklaus

Grundsätzlich stimme ich Dir zu. Aber in diesem Fal wird kein Archiv erzeugt, sondern nur temporär als Puffer benutzt!

Gruß,

Ice
 
Ice schrieb:
@orangutanklaus

Grundsätzlich stimme ich Dir zu. Aber in diesem Fal wird kein Archiv erzeugt, sondern nur temporär als Puffer benutzt!

Gruß,

Ice

Genau so ist es gedacht. Am Ende habe ich es jetzt so gelöst (falls doch mal Leerzeichen auftauchen sollten):


Code:
netbsd# find /home/morpheus/freigabe/backup -type f -mtime -7 | cpio -pvd /home/morpheus/freigabe/test

Nun werden alle Dateien der letzten 7 Tage gefunden und mit cpio in das gewünschte verzeichniss kopiert mit dem dazugehörigen absoluten Pfad.
 
Zurück
Oben