Rsync soll löschen was nicht mehr vorhanden ist.

Du hast Probleme mit Deinem eMail-Programm, Webbrowser oder Textprogramm? Dein Lieblingsprogramm streikt?
Antworten
Alternativende
Beiträge: 2090
Registriert: 07.07.2006 18:32:05

Rsync soll löschen was nicht mehr vorhanden ist.

Beitrag von Alternativende » 20.06.2010 13:01:35

Hallo zuasmmen,
ich habe schon die Manpage von Rsync gelesen, aber scheinbar die richtige Option nicht gefunden. Folgende Situation:

rsync -rv /home/ich/Daten /media/extusb/Daten

Rsync soll aber auch alle Dateien und Verzeichnisse löschen die nicht mehr da sind, da es durchaus vorkommt das ich Dateien verschiebe usw...
Wie mache ich das?

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: Rsync soll löschen was nicht mehr vorhanden ist.

Beitrag von rendegast » 20.06.2010 13:05:19

'--delete'
Vorsicht! manpage genau durchlesen! Ausprobieren!
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Alternativende
Beiträge: 2090
Registriert: 07.07.2006 18:32:05

Re: Rsync soll löschen was nicht mehr vorhanden ist.

Beitrag von Alternativende » 20.06.2010 13:32:05

Hab mir gerade damit die Sicherung gekillt. Wollte --delete-before ausprobieren, aber habe vergessen den Ordner Daten/Musik anzugeben. Ist nicht so tragisch fürs nächste mal weiß ich es.

Benutzeravatar
KBDCALLS
Moderator
Beiträge: 22355
Registriert: 24.12.2003 21:26:55
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Dortmund
Kontaktdaten:

Re: Rsync soll löschen was nicht mehr vorhanden ist.

Beitrag von KBDCALLS » 20.06.2010 14:15:23

Evetuell mit --dry-run und -v einen Testlauf durchführen.
Was haben Windows und ein Uboot gemeinsam?
Kaum macht man ein Fenster auf, gehen die Probleme los.

EDV ist die Abkürzung für: Ende der Vernunft

Bevor du einen Beitrag postest:
  • Kennst du unsere Verhaltensregeln
  • Lange Codezeilen/Logs gehören nach NoPaste, in Deinen Beitrag dann der passende Link dazu.

suno
Beiträge: 354
Registriert: 25.07.2008 17:33:40

Re: Rsync soll löschen was nicht mehr vorhanden ist.

Beitrag von suno » 20.06.2010 16:29:54

Code: Alles auswählen

rsync  -aSHAXh  --delete --progress --stats --numeric-ids
ist was ich intern immer verwende; viele Leute setzen sogar diesen alias

Code: Alles auswählen

alias cp='rsync  -aSHAXh  --delete --progress --stats --numeric-ids'
Wenn du nicht nur intern Daten verschiebst, dann lohnt sich auch SSH zu verwenden (siehe syncsec alias)
http://sunoano.name/ws/bash.html#some_b ... tion_i_did

Alternativende
Beiträge: 2090
Registriert: 07.07.2006 18:32:05

Re: Rsync soll löschen was nicht mehr vorhanden ist.

Beitrag von Alternativende » 23.06.2010 13:50:15

Ne also das war noch nicht des Rätsel Lösung. Ich glaube ihr habt mich ein wenig falsch verstanden.

Ich möchte das rsync die Dateien auf dem Ziellaufwerk löscht die in der Quelle nicht vorhanden sind und nicht einfach alles im Ziel löscht, da sonst die Übertragung immer solange dauert.

Ein Beispiel:
Musik/Super Album wird in der Quelle umbenannt in /Musik/Mega Album.
Dann soll rsync Musik/Super Album löschen und Mega Album kopieren. Mit dem delete Befehl löscht er aber einfach alles, auch was sich überhaupt nicht verändert hat.

Hoffe das es nun ein wenig klarer ist.

uname
Beiträge: 12045
Registriert: 03.06.2008 09:33:02

Re: Rsync soll löschen was nicht mehr vorhanden ist.

Beitrag von uname » 23.06.2010 14:51:00

Ein einfaches "rsync" wäre mir generell zu gefährlich. Ich setze auf inkrementelle Tagesbackups. In einer alten Tagesversion wird nie etwas gelöscht. Erst wenn der Tag als veraltet gilt wird das ganze Tagesbackup gelöscht. Die Hardlinks halten den Rest des Backups zusammen ;-)

http://wiki.ubuntuusers.de/skripte/Backup_mit_RSYNC

Das Script nutzt im übrigen auch "--delete", obwohl es eigentlich unnötig ist bzw. nur Sinn macht, wenn man das Script mehrmals am Tag durchläuft.
Ein Beispiel:
Musik/Super Album wird in der Quelle umbenannt in /Musik/Mega Album.
Dann soll rsync Musik/Super Album löschen und Mega Album kopieren.
In allen älternen Tagessicherungen bleibt "Super Album" erhalten, bis die Sicherung selbst verschwindet. In der neusten Tagessicherung und allen anderen neuen Sicherungen heißt es dann "Mega Album". Bei extremen Umbenennaktionen erhöht sich natürlich dadurch die benötigte Backupmenge. Auch ist der Kopieraufwand beim ersten Mal sehr hoch, da das System keine Hardlinks setzen kann. Die Daten werden vollkommen neu kopiert. Aber ab dem zweiten Tag geht es dann wieder sehr schnell.

Benutzeravatar
stollenreiter
Beiträge: 402
Registriert: 10.08.2004 16:30:47
Wohnort: Bremen

Re: Rsync soll löschen was nicht mehr vorhanden ist.

Beitrag von stollenreiter » 23.06.2010 16:38:00

Alternativende hat geschrieben:Ne also das war noch nicht des Rätsel Lösung. Ich glaube ihr habt mich ein wenig falsch verstanden.

Ich möchte das rsync die Dateien auf dem Ziellaufwerk löscht die in der Quelle nicht vorhanden sind und nicht einfach alles im Ziel löscht, da sonst die Übertragung immer solange dauert.

Ein Beispiel:
Musik/Super Album wird in der Quelle umbenannt in /Musik/Mega Album.
Dann soll rsync Musik/Super Album löschen und Mega Album kopieren. Mit dem delete Befehl löscht er aber einfach alles, auch was sich überhaupt nicht verändert hat.

Hoffe das es nun ein wenig klarer ist.

Aber genau das macht doch ein rsync mit --delete Angabe. Er löscht nur die Dateien im Zielordner/Zielrechner, wenn sie nicht mehr auf dem lokalen Verzeichnis/Rechner vorhanden sind. So mache ich das schon seit Jahren.

In deinem Fall würde er im Ziel das Verzeichnis Musik/SuperAlbum löschen und das Verzeichnis Musik/MegaAlbum anlegen.
Gruß Stollenreiter
wat mutt, dat mutt
Mein Jakobsweg heißt Darb al-Arba'in

Alternativende
Beiträge: 2090
Registriert: 07.07.2006 18:32:05

Re: Rsync soll löschen was nicht mehr vorhanden ist.

Beitrag von Alternativende » 24.06.2010 08:01:29

Also so wie ich das gesehen hab hat er gestern bei folgendem Befehl :

Code: Alles auswählen

rsync -rv --delete /home/ich/Musik/ /media/Verbatim/Musik/
den kompletten Inhalt des Verzeichnisses /media/Verbatim/Musik/ gelöscht und erst danach angefangen zu kopieren. Ich habe nämlich nur 2 Verzeichnisse hinzugefügt, aber er hat trotzdem alles kopiert.

uname
Beiträge: 12045
Registriert: 03.06.2008 09:33:02

Re: Rsync soll löschen was nicht mehr vorhanden ist.

Beitrag von uname » 24.06.2010 08:34:26

Habe ich richtig gesehen, dass Du die Option "r" nutzt? Vielleicht liegt da der Fehler.

Versuche die Option "a"

Code: Alles auswählen

rsync -av --delete /home/ich/Musik/ /media/Verbatim/Musik/

Alternativende
Beiträge: 2090
Registriert: 07.07.2006 18:32:05

Re: Rsync soll löschen was nicht mehr vorhanden ist.

Beitrag von Alternativende » 24.06.2010 08:52:43

Danke für den Hinweis ich habe es mir gerade mal auf de Manpage durchgelesen. Macht schon Sinn ;).

Benutzeravatar
sum69sum
Beiträge: 109
Registriert: 27.09.2005 14:30:00
Lizenz eigener Beiträge: GNU Free Documentation License
Kontaktdaten:

Re: Rsync soll löschen was nicht mehr vorhanden ist.

Beitrag von sum69sum » 24.06.2010 12:12:06

hier ein kleines rsync script das ich verwende.

Code: Alles auswählen

--bwlimit=180000
kannst du entfernen wenn du direkt von platte zu platte backup machst.
gruss tom

Code: Alles auswählen

#!/bin/bash

# Put backslashes on the end of your directories. It's safer that way
DESTINATION=/home/zumbi/0_backups/0_backups/_temp_downloads/
SOURCE=/mnt/desaster/0_backups/_temp_downloads/

# You should have a directory to log this sort of thing
LOGDIR=/tmp/

# This file should be specific to this script. I just overwrite it every time to save space.
LOGFILE="temp_downloads__DESASTER_2_monster.log"

# It's important to check that the relevant directories exist beforehand.
# Otherwise, things could get messy
if [ -d ${SOURCE} ] && [ -d ${DESTINATION} ]
then
    rsync -avo --delete --bwlimit=180000 --progress ${SOURCE} ${DESTINATION} >& ${LOGDIR}/${LOGFILE}
else
    # Complain if one or both of the directories are missing.
    # Complain to the logfile though. Otherwise, you'll get a bunch of email from the system --
    # one each time it runs

    echo "Missing needed director(y/ies)!" >& ${LOGDIR}/${LOGFILE}
fi

Benutzeravatar
LessWire
Beiträge: 558
Registriert: 21.11.2004 04:36:04
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Bavaria

Re: Rsync soll löschen was nicht mehr vorhanden ist.

Beitrag von LessWire » 25.06.2010 04:52:58

Alternativende hat geschrieben:Also so wie ich das gesehen hab hat er gestern bei folgendem Befehl :

Code: Alles auswählen

rsync -rv --delete /home/ich/Musik/ /media/Verbatim/Musik/
den kompletten Inhalt des Verzeichnisses /media/Verbatim/Musik/ gelöscht und erst danach angefangen zu kopieren. Ich habe nämlich nur 2 Verzeichnisse hinzugefügt, aber er hat trotzdem alles kopiert.
Wahrscheinlich willst Du das Verzeichnis "Musik" von "/home/ich/" nach "/media/Verbatim/" verschieben bzw. synchronisieren!?

Dann muß der Befehl lauten:

Code: Alles auswählen

 rsync -rv --delete /home/ich/Musik /media/Verbatim/ 
Aufpassen bei der Angabe der Quell- und Zielverzeichnisse und auch auf die backslashs achten! Zielverzeichnis ohne ".../Musik" angeben!

So wie Du es angegeben hast, entsteht als Ziel "/media/Verbatim/Musik/Musik/", vermutlich aber auch nur dann, wenn "/media/Verbatim/Musik/" bereits existiert.

Gruß, LW
at ~ now.

dawg
Beiträge: 441
Registriert: 29.12.2008 19:59:00

Re: Rsync soll löschen was nicht mehr vorhanden ist.

Beitrag von dawg » 25.06.2010 06:10:43

Code: Alles auswählen

rsync -auv --delete-after source target
man rsync:
-u, --update skip files that are newer on the receiver

Ja, delete-after klappt bei mir auch nicht immer... im Normalfall aber schon.

uname
Beiträge: 12045
Registriert: 03.06.2008 09:33:02

Re: Rsync soll löschen was nicht mehr vorhanden ist.

Beitrag von uname » 25.06.2010 07:52:46

-u, --update skip files that are newer on the receiver
Kann ja eigentlich bei einem Backup in eine Richtung gar nicht sein.

dawg
Beiträge: 441
Registriert: 29.12.2008 19:59:00

Re: Rsync soll löschen was nicht mehr vorhanden ist.

Beitrag von dawg » 25.06.2010 09:09:22

-u, --update skip files that are newer on the receiver

Kann ja eigentlich bei einem Backup in eine Richtung gar nicht sein.

Erstens hat die manpage immer Recht :D

Zweitens: klar kann das sein.
Der erste Durchlauf von rsync. Dateien rüber.
Der zweite Durchlauf: die Dateien, die sich auf der Quelle nicht geändert haben sind auf dem Ziel neuer als auf der source. Der letzte Zugriff (im Sinne einer Änderung) war eben das Kopieren.
Wenn Du auf den Dateien der Quelle nach dem Kopieren eine Änderung vornimmst sind die Dateien auf der Quelle damit neuer als die auf dem Ziel und werden erneut kopiert.
Die Dateien, die gleich geblieben sind, werden also nicht erneut kopiert.
Und es kann nicht nur so sein, es ist auch so.

Alle Unklarheiten weg? Wahrscheinlich eher nicht...

uname
Beiträge: 12045
Registriert: 03.06.2008 09:33:02

Re: Rsync soll löschen was nicht mehr vorhanden ist.

Beitrag von uname » 25.06.2010 10:07:38

Dann sagt mir mal jemand welches Datum genommen wird. Ich hoffe doch "mtime" und nicht "ctime".

Code: Alles auswählen

stat /media/backup/Tag/100625/etc/passwd
  File: »/media/backup/Tag/100625/etc/passwd«
  Size: 2624            Blocks: 8          IO Block: 4096   reguläre Datei
Device: 302h/770d       Inode: 211269      Links: 8
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2010-06-18 01:00:30.000000000 +0200
Modify: 2010-06-17 13:32:55.000000000 +0200
Change: 2010-06-25 01:00:04.000000000 +0200

Code: Alles auswählen

stat /etc/passwd
  File: »/etc/passwd«
  Size: 2624            Blocks: 8          IO Block: 4096   reguläre Datei
Device: 303h/771d       Inode: 34092       Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2010-06-25 10:05:24.000000000 +0200
Modify: 2010-06-17 13:32:55.000000000 +0200
Change: 2010-06-17 13:32:56.000000000 +0200

Alternativende
Beiträge: 2090
Registriert: 07.07.2006 18:32:05

Re: Rsync soll löschen was nicht mehr vorhanden ist.

Beitrag von Alternativende » 15.09.2010 15:20:31

Das Problem ist auch nicht gelöst. Trotz Aufruf von

Code: Alles auswählen

rsync -auv --delete Quelle Ziel
wird immer alles übertragen. Scheitert es am FAT32 Dateisystem auf der externen Platte? Kann ich evtl. modification Time oder so als Option benutzen?

uname
Beiträge: 12045
Registriert: 03.06.2008 09:33:02

Re: Rsync soll löschen was nicht mehr vorhanden ist.

Beitrag von uname » 15.09.2010 16:37:47

wird immer alles übertragen.
Wird wirklich alles übertragen oder dauert nur die Ausgabe (-v) so lange. Schau dir mal die Ausgaben von "stat" von Quelle und Ziel an. Kopiere auch mal alles in einen leeren Ordner und vergleich die Zeit bei den unterschiedlich vollen Zielordnern, verzichte evtl. auf die Option "-v".

Code: Alles auswählen

date ; rsync ... ; date

underliner
Beiträge: 42
Registriert: 13.04.2009 08:17:54
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Verden - Nds.

Re: Rsync soll löschen was nicht mehr vorhanden ist.

Beitrag von underliner » 15.09.2010 17:53:52

Hallo dawg,

also ich synchronisiere einmal am Tag mit einem Script per crontab meine Daten-Festplatte auf eine Backup-Festplatte. Das Script enthält nur folgenden Befehl:

rsync -av --recursive --delete --progress --update /daten /backup_daten

Neue Daten werden rüberkopiert und auf /daten gelöschte Daten werden auch im Backup gelöscht.

Gruß underliner
Google is my teacher !!!

Alternativende
Beiträge: 2090
Registriert: 07.07.2006 18:32:05

Re: Rsync soll löschen was nicht mehr vorhanden ist.

Beitrag von Alternativende » 15.09.2010 18:12:18

@underliner
Was für ein Filesystem hat denn die Backup Platte?

underliner
Beiträge: 42
Registriert: 13.04.2009 08:17:54
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Verden - Nds.

Re: Rsync soll löschen was nicht mehr vorhanden ist.

Beitrag von underliner » 15.09.2010 18:15:16

Hallo dawg,

ja ist ext3 und nicht FAT32.
Google is my teacher !!!

Benutzeravatar
pangu
Beiträge: 1400
Registriert: 15.11.2011 20:50:52
Lizenz eigener Beiträge: GNU General Public License
Wohnort: /proc/1

Re: Rsync soll löschen was nicht mehr vorhanden ist.

Beitrag von pangu » 10.03.2012 11:47:25

Ich häng mich an diesen Thread, da es sehr gut reinpasst.

Mein Befehl sieht momentan so aus:

rsync -ave ssh --delete --exclude=exporttmp/ /var/www/site1/ remoteserver_key_authorized:/var/www/site1/htdocs/

Mein Problem ist folgendes. Auf dem Ziel gibt es /var/www/site1/htdocs/.htaccess und /var/www/site1/htdocs/errorpages/blabla.html

Wenn ich den obigen Befehl ausführe, dann werden auf dem Zielsystem die .htaccess und das Verzeichnis errorpages gelöscht, da sie ja auf der Quelle nicht vorhanden sind. Wie bringe ich dem rsync bei, dass er das --delete nur auf seine Quelldateistruktur anwenden soll, nicht aber auf andere vorhandene Dateien dort? geht das überhaupt?
Man gibt Geld aus, das man nicht hat, um damit Dinge zu kaufen, die man nicht braucht, um damit Leute zu beeindrucken, die man nicht mag.

Cae
Beiträge: 6349
Registriert: 17.07.2011 23:36:39
Wohnort: 2130706433

Re: Rsync soll löschen was nicht mehr vorhanden ist.

Beitrag von Cae » 10.03.2012 12:10:24

Eventuell suchst du --exclude= bzw. --exclude-from=.

Gruß Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.

—Bruce Schneier

Benutzeravatar
pangu
Beiträge: 1400
Registriert: 15.11.2011 20:50:52
Lizenz eigener Beiträge: GNU General Public License
Wohnort: /proc/1

Re: Rsync soll löschen was nicht mehr vorhanden ist.

Beitrag von pangu » 10.03.2012 12:34:56

Ja damit geht's natürlich. Ich muss halt dann meine exclude-Liste ergänzen. Ich dachte vielleicht gäbe es noch 'ne andere Option, so eine Art --delete die nur für die FILELIST gilt,nicht aber für aussenstehende Dateistrukturen. Ok, dann hat sichs erledigt. Werd's weiterhin über die excludes managen.

danke
Man gibt Geld aus, das man nicht hat, um damit Dinge zu kaufen, die man nicht braucht, um damit Leute zu beeindrucken, die man nicht mag.

Antworten