rsync-Warnung unterdrücken: Einige Dateien sind verschwunden, bevor sie übertragen werden konnten

14

Beim Sichern meiner laufenden Postfix- und Courier-Serverdateien werden zahlreiche Warnungen angezeigt, z.

file has vanished: /var/kunden/mail/username/[email protected]/tmp/courier.lock

Wie unterdrücke ich diese Warnungen, rsyncwenn ich sie in Cron ausführe /usr/bin/rsnapshot hourly?

Kann ich diese dirs irgendwie ausschließen?

/var/kunden/mail/*/*/tmp/

Der tmpOrdner kann auch tiefer sein, zum Beispiel:

file has vanished: /var/kunden/mail/username/[email protected]/.Presse/tmp/1353871473.M716135P32214_imapuid_36.test.de
file has vanished: /var/kunden/mail/username/[email protected]/.Presse/tmp/courier.lock
rubo77
quelle

Antworten:

6

Sie können rsyncden Exclude-Schalter ( --exclude) verwenden:

$ rsync -avz --exclude '**/tmp/' source/ destination/

Auf diese Weise angegeben, --exclude '**/tmp/'werden alle Pfade ignoriert, die die Zeichenfolge enthalten /tmp/. Sie können auch diesen Argumenten Muster zuweisen.

Beispiel

$ rsync -avz --exclude '/path/to/*/tmp/' source/ destination/

Wird auf den Pfaden der Form auszuschließen: /path/to/*/tmp/.

slm
quelle
also muss ich es versuchen rsync -a --exclude '/var/kunden/mail/*/*/tmp/' --exclude '/var/kunden/mail/*/*/*/tmp/' /var/kunden/ $SERVER/var_kunden/ ?
Rubo77
@ rubo77 - es ignoriert alle Verzeichnisse, die /tmp/in ihnen enthalten sind, wie ich es geschrieben habe. Wenn Sie expliziter sein möchten, können Sie dies so festlegen, wie Sie es geschrieben haben.
SLM
@ rubo77 --exclude='/tmp/'schließt nur das Verzeichnis aus, tmpdas im Stammverzeichnis der Kopie aufgerufen wird . tmpVerwenden Sie, um alle Unterverzeichnisse auszuschließen, die an einer beliebigen Stelle aufgerufen werden --exclude='**/tmp/'.
Gilles 'SO- hör auf böse zu sein'
1
... oder ein Dateisystem mit Snapshots verwenden ... es scheint problematisch, ein Backup wiederherzustellen, bei dem Dateien auf halbem Weg verschwinden ... es sei denn, sie sind nicht von Belang. In diesem Fall sollten sie wahrscheinlich ausgeschlossen werden ...
Erk
19

Leider hat dies, anders als in der SWdream-Lösung beschrieben, --ignore-missing-argskeine Auswirkungen auf verschwundene Dateien. Quellargumente, die nicht existieren, werden einfach ignoriert.

Siehe man rsync:

  --ignore-missing-args
          When rsync is first processing the explicitly  requested  source
          files  (e.g. command-line arguments or --files-from entries), it
          is normally an error if the file cannot be found.   This  option
          suppresses  that  error,  and does not try to transfer the file.
          This does not affect subsequent vanished-file errors if  a  file
          was initially found to be present and later is no longer there.

Die "offizielle" Methode zum Ignorieren von gelöschten Dateien ist die Verwendung dieses Skripts aus dem offiziellen Rsync-Quellrepository: https://git.samba.org/?p=rsync.git;a=blob_plain;f=support/rsync-no- verschwunden; hb = HEAD

Das ist sehr ähnlich zu dem, was @kenorb und @ gilles-quenot gesagt haben.

Benoit Jacquemont
quelle
13

Der Grund dafür ist, dass diese Dateien vorhanden waren, während rsync die Liste der zu übertragenden Dateien erstellt, sie jedoch vor der Übertragung entfernt werden.

Es ist eine Warnmassage, kein Fehler. Sie sollten jedoch versuchen herauszufinden, warum diese Datei gelöscht wurde. Dies ist möglicherweise wichtig.

Um diese Warnung zu ignorieren, können Sie die Option --exclude wie oben angegeben verwenden oder die -ignore-missing-argsOption rsync verwenden. Dadurch ignoriert rsync verschwundene Dateien. --ignore-missing-args ignore missing source args without error Vielleicht hilft es.

SWdream
quelle
Dies scheint definitiv besser zu sein, als nach einem bestimmten Rückkehrcode zu suchen und diesen auf 0 zu setzen.
Boycott SE für Monica Cellio,
Außer in seltenen Fällen sind Dateien, die während eines Live-Backups verschwinden, völlig normal (viele Anwendungen erstellen kurzlebige temporäre Dateien). Dies gilt insbesondere für einen Mailserver, auf dem Dateien, die E-Mail-Nachrichten enthalten, ständig von einem Verzeichnis in ein anderes verschoben werden. Daher ist diese Antwort meiner Meinung nach angemessener als die von OP akzeptierte.
MoonSweep
1
Leider gibt es diese Option nicht in allen Versionen von rynsc. Insbesondere 3.0.6, das mit CentOS 6 ausgeliefert wird.
jph
3
Diese Option wirkt sich nur auf Dateien aus, die in den Argumenten benannt sind. Die Dateien, die bei der rekursiven Suche gefunden wurden, werden weiterhin gewarnt.
Jasen
6

Der Fehler bedeutet, dass rsyncdie Dateien, die beim Erstellen der zu übertragenden Liste vorhanden waren , nicht mehr gefunden werden können. Diese Fehler bei gelöschten Dateien treten auf, wenn eine Datei ursprünglich als vorhanden befunden wurde und später nicht mehr vorhanden ist. In einigen Fällen kommt es auch vor, wenn die Quelldateien beschädigt sind oder ungültige Zeichen im Namen enthalten (dies fsckwird empfohlen).

Grundsätzlich ist dies eine Warnung und kein Fehler. Sie müssen sich also keine Sorgen machen, da der Status jeder Zieldatei den Status der entsprechenden Quelldateien während der Ausführung widerspiegelt.

Wenn das Problem dadurch verursacht wird, dass der Exit-Wert nicht Null ist, kann dies mit dem folgenden Wrapper-Skript ( Quelle ) behoben werden :

#!/bin/bash
(rsync "$@"; if [ $? == 24 ]; then exit 0; else exit $?; fi) 2>&1 | grep -v 'vanished'

oder durch das folgende Workaround-Skript ( Quelle ):

#!/bin/sh
OUT=`/usr/bin/snapback2 2>&1`
RET=$?
if [ "$RET" != "23" -a "$RET" != "0" -a "$RET" != 24 ]; then
    echo "$OUT"
    exit $RET
fi

Die im Grunde mit den gleichen Fehlercodes wie rsync existiert, wenn rsync fehlschlägt.

Weitere Informationen hierzu finden Sie in: Bug 3653 - Verringern Sie die Notwendigkeit der Warnung "Verschwundene Dateien"

Kenorb
quelle
6

Oder einfach (mit modernem ):

#!/bin/bash

/usr/bin/rsync "$@" 2> >(grep -Ev '(file has |rsync warning: some files )vanished')
ret=$?
((ret==24)) && exit 0 || exit $ret
Gilles Quenot
quelle
1
Würde das nicht auch die Warnung vor allen Arten von Dateien unterdrücken, die die Zeichenfolge enthalten vanished?
Rubo77
Sicher, Beitrag entsprechend bearbeitet
Gilles Quenot
2

Meine Antwort mag ein spezieller Anwendungsfall sein, aber ich war der Meinung, dass es wert ist, darauf hingewiesen zu werden, damit die Leute keine Daten verlieren, wenn sie unter diesen Fall fallen.

Ich habe diese Meldung für mehrere Dateien erhalten, während ich eine routinemäßige Sicherung von Laufwerken über rsync durchgeführt habe.

Ich habe eine Systemprüfung auf der Festplatte durchgeführt und festgestellt, dass Probleme mit dem Laufwerk vorliegen (Zuweisung / Dateibeschädigung usw.), und habe empfohlen, eine Sicherung + Wiederherstellung + Neuformatierung durchzuführen.

Bevor Sie die Meldung unterdrücken oder ignorieren, ist es möglicherweise ratsam, nur eine Zustandsprüfung Ihres Laufwerks durchzuführen, um die Sicherheit zu gewährleisten.

Francis
quelle
Laufwerksfehler würden nicht nur selektiv in den tmpVerzeichnissen auftreten.
0

Versuchen Sie, Ihre Sicherungsdiskette mit nosuid,nodev,nofail,x-gvfs-showOptionen bereitzustellen.

Ich bin nicht sicher, welches System Sie verwenden, aber ich glaube, das hängt mit den Mount-Optionen Ihrer Festplatte zusammen. Unter Linux passiert dies, wenn ich die Mount-Optionen auf setze User Session Default. Es wird behoben, wenn ich es deaktiviere und rsync ohne Fehler abgeschlossen wird.

Bildbeschreibung hier eingeben

Max
quelle
0

Verwenden Sie diesen Parameter:

--exclude-from="./exclude.ini"

um die Liste in eine Datei zu legen. Schreiben Sie in der Datei exclude.ini Folgendes:

Cache
cache2/*
*.lock
/temp

Wo:

  1. schließt ALLE Ordner mit dem Namen "Cache" und seinen Inhalt aus;
  2. Schließt den Inhalt aller mit "cache2" bezeichneten Ordner aus, schließt jedoch die Ordnerhierarchie ein, sodass Sie alle Unterordner erhalten, die jedoch leer sind.
  3. schließt alle Dateien aus, die mit .lock enden (z. B. einige Sperrdateien von Firefox und Derivaten);
  4. Schließt den Inhalt des Ordners / temp aus.

Denken Sie daran, dass Sie dies möglicherweise berücksichtigen müssen, wenn das Dateisystem von der Groß- und Kleinschreibung abhängt.

nicolap8
quelle