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

Kopieren klappt nicht ganz

gTux

Member
Hi. Ich stehe vor einem Problem. Mit einem sehr einfachen Script sollen Dateien von A nach B (von Home nach /mnt) kopiert werden. Die Dateien sollen nicht in Archive gepackt werden. Die Festplatte ist 1TB groß und die Menge an Dateien mommentan maximal 50GB. Es ist also allerlei Platz vorhanden. Aber ich stellte soeben fest, dass nicht alle Dateien ( z.B. im .doc Format ) kopiert werden.

Hier mein Script "backup.day.sh":
Code:
#!/bin/bash
mount /dev/disk/by-uuid/4BF1-EAE5 /mnt;
sleep 3;
cp -rf /home/gtux/documents /mnt/backup/ && \
umount /mnt;
exit;

Was ich noch rausfand - das Datum an allen anderen Dokumenten und Ordnern ändert sich ebenfalls nicht, sie wurden aber zuletzt nicht bearbeitet und somit bin ich nicht sicher ob es sich auch so was ändern sollte. Sicher ist jedoch, daß einige Dokumente von heute z.B. fehlen. Auch das starten des scriptes per Hand - ohne cronjob - bringt das gleiche Ergebnis.

Trotzdem hier die crontab:
Code:
SHELL=/bin/sh
PATH=/usr/bin:/usr/sbin:/sbin:/bin:/usr/lib/news/bin
MAILTO=root
#
# check scripts in cron.hourly, cron.daily, cron.weekly, and cron.monthly
#
min   hour  day  month  weekday   user       command
-*    /15    *     *       *      *root  test -x /usr/lib/cron/run-crons && /usr/lib/cron/run-crons >/dev/null 2>&1
00     19    *     *      0-4     root sh /home/scripte/backup.day.sh

Gibt es eine andere Erklärung oder habe ich einen Fehler gemacht?
 

longman

Advanced Hacker
Moin,

ich würde es mit rsync machen z.B.:

Code:
rsync -avz /quelle/doc/ /backup/doc
Es synchronisiert beide Verzeichnisse, muss also nicht immer den ganzen Inhalt kopieren
und ist wirklich sehr flott.

Schau mal mit man rsync in den examples.
Dort findest Du für Deinen Zweck bestimmt das richtige Beispiel.
 
OP
G

gTux

Member
Thx. Ich probiere es aus.

Mich interessiert aber auch, wie es sein kann, daß so wie oben nicht alle Dateien kopiert werden? Ist das eventuell ein cache Problem oder sollte ich sync ausführen? Kann das an den nicht kopierten Dateien selbst legen?
 
OP
G

gTux

Member
Ich habe das ausprobiert, aber es gibt genau das gleiche Resultat - es wird keine neue Datei hinzugefügt. Ich habe jetzt festgestellt, dass alle Dateien nur das Datum vom ersten Backup tragen. Neuere bzw. modifizierten werden nicht mehr gespeichert.

Weder so:
Code:
mount /dev/disk/by-uuid/4BF1-EAE5 /mnt;
sleep 2;
sync;
sleep 1;
cp -rf /home/gtux/documents /mnt/backup/ && \
umount /mnt;
exit;
Noch so:
Code:
mount /dev/disk/by-uuid/4BF1-EAE5 /mnt;
sleep 2;
sync;
sleep 1;
rsync -avz /home/gtux/documents /mnt/backup/ && \
umount /mnt;
exit;
klappt es.

Ich benötige unbedingt eure Hilfe. Ich weiss nicht was ich noch tun kann und vor allem wieso das passiert.

Das Dateisystem auf dem Quellrechner ist EXT2, auf der Zielfestplatte FAT32.

Einzig und alleine das hier wirkt:
Code:
mount /dev/disk/by-uuid/4BF1-EAE5 /mnt;
sleep 2;
sync;
sleep 1;
rm -rf /mnt/backup/* && \
cp -rf /home/gtux/documents /mnt/backup/ && \
umount /mnt;
exit;

Das kann aber doch nicht wahr sein.
 

K4m1K4tz3

Advanced Hacker
Schau dir das mal an: http://www.linupedia.org/opensuse/Backupdate_sh

Da nutze ich folgende Optionen:
Code:
rsync -arbuv --delete --progress --link-dest=$VAR_NEWEST_BACKUP $SOURCE_LOCATION $BACKUP_LOCATION/backup_$DATE/

Wobei -r eigentlich unnütz ist, da es in -a schon enthalten ist. Aber das --delete und -b könnte dich evtl. interessieren.
 
OP
G

gTux

Member
Gut, es klappt jetzt wie es scheint. Dafür danke.

Hast du oder sonst jemand hier aber eine Erklärung wieso es mit
Code:
cp -rf
oder
Code:
rsync -avz
ohne vorheriges Löschen das Kopieren nicht klappen will?
 

K4m1K4tz3

Advanced Hacker
Ein --delete bei rsync löscht nicht alle Daten auf dem Ziel-Rechner, sondern nur Dateien die älter sind als die Dateien auf dem Quell-Rechner, bzw. Dateien die auf dem Quell-Rechner nicht mehr vorhanden sind (solltest du vielleicht nochmal schauen, ob es das ist was du auch wirklich willst). Die man-pages von rsync könnten auch weiter helfen.

Warum es bei cp nicht funktioniert hat weiß ich nicht. Normalerweise müsste er alles ohne zu fragen überschreiben.
 
OP
G

gTux

Member
Sehe ich genauso. "cp" hat nicht nur ältere Dateien nicht überschrieben, es wurden sogar neu angelegte Dateien nicht rüberkopiert. Somit waren sie nur auf dem Quellrechner vorhanden.

Das ist ein großes Rätsel und lässt mir keine Ruhe.

Nachtrag.

Bei rsync kriege ich jetzt solche Meldungen:
Code:
rsync: chown "/mnt/backup/Verzeichnis1/Verzeichnis2/dokument.doc" failed: Operation not permitted (1)

Aufruf ist jetzt so:
Code:
rsync -abuv --delete --progress /home/gtux/documents/ /mnt/backup && \
 

spoensche

Moderator
Teammitglied
gTux schrieb:
Sehe ich genauso. "cp" hat nicht nur ältere Dateien nicht überschrieben, es wurden sogar neu angelegte Dateien nicht rüberkopiert. Somit waren sie nur auf dem Quellrechner vorhanden.

Das ist ein großes Rätsel und lässt mir keine Ruhe.

Nachtrag.

Bei rsync kriege ich jetzt solche Meldungen:
Code:
rsync: chown "/mnt/backup/Verzeichnis1/Verzeichnis2/dokument.doc" failed: Operation not permitted (1)

Der user, der rsync ausführt hat nicht die Berechtigung den Eigentümer der Datei zu ändern.
 
OP
G

gTux

Member
Das backup funktioniert aber so jetzt - trotz der Fehlermeldung. Der Inhaber der Dateien ist "nobody:users". Der ausführende Benutzer ist root.

Weisst du vielleicht was es mir der "cp -rf" Geschichte auf sich hat? Offenbar hat keiner eine Erklärung bisher gefunden.
 
A

Anonymous

Gast
gTux schrieb:
Das backup funktioniert aber so jetzt - trotz der Fehlermeldung. Der Inhaber der Dateien ist "nobody:users". Der ausführende Benutzer ist root.

rsync: chown "/mnt/backup/Verzeichnis1/Verzeichnis2/dokument.doc" failed: Operation not permitted (1)

Dein Backupfilesystem ist garantiert kein Linuxfilesystem und Windows kennt keine Unix-User und Unix-Gruppenrechte, also können sie darauf auch nicht geändert werden.

robi
 
OP
G

gTux

Member
Völlig richtig - weiter oben in einem Post steht auch, daß es FAT32 ist.

Quelle ext2 -----> Ziel FAT32

Doch Einfluß auf das kopieren mit "cp -rf" hat das wohl nicht. Das muss etwas ganz anderes sein.
 
Oben