GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie kann man Rsync anweisen, den Zeitstempel für Dateien beizubehalten, wenn der Quellbaum einen Einhängepunkt hat?

Bezogen auf diese Frage

Kurze Beschreibung des Problems:

Wenn der Quellbaum einen Einhängepunkt enthält, werden Zeitstempel für Dateien innerhalb dieses Einhängepunkts beim Kopieren in den Zielbaum nicht beibehalten, selbst wenn -a verwendet wird Möglichkeit

Detaillierte Beschreibung:

Angenommen, dies ist der Quellbaum:

                       /home/                           /home/
                         |                                |
                        me/                             BACKUP/
                         |                                |
                    +----+----------+                +----+-------+
                    |    |          |                |    |       |
                 data/  foo.txt    boo.txt         data/ foo.txt boo.txt
                    |                                |
                   a.txt                           a.txt

wobei data/ oben ist eine externe USB-Festplatte montiert. Alles ist ext4 Dateisystem. Alles im Quellcode gehört mir me .

BACKUP war zufällig auch ein Einhängepunkt, die Backup-USB-Festplatte.

Nach Ausgabe dieses Befehls rsync -av --delete /home/me/ /home/BACKUP/ , habe ich das /home/BACKUP/data/ gefunden und alles darunter hat den aktuellen Zeitstempel, als ob diese Dateien jetzt erstellt wurden, und nicht den Zeitstempel der Dateien in /home/me/data/ . Andere Dateien und Ordner außerhalb von data Hatte den Zeitstempel OK beibehalten.

Frage ist:Wie benutzt man rsync in der obigen Einstellung, um es anzuweisen, Zeitstempel für alle Dateien und Ordner beizubehalten, sogar für Dateien und Ordner auf einem gemounteten Punkt?

Ich verwende:

>uname -a
Linux 3.5.0-17-generic #28-Ubuntu SMP x86_64 x86_64 x86_64 GNU/Linux

>rsync -v
rsync  version 3.0.9  protocol version 30

Akzeptierte Antwort:

von man rsync :

   -t, --times                 preserve modification times

BEARBEITEN - um diese Antwort zu verbessern, da nicht sofort ersichtlich ist, warum dies OP nicht geholfen hat:

OP kopiert Dateien von einem Dateisystem in ein anderes und möchte die c-time beibehalten . Die meisten Leute verstehen c-time bedeutet „Erstellungszeit“, was auf den meisten UNIX/Linux-Systemen falsch ist (Windows-Dateisysteme verfolgen „Erstellungs-“ oder „Geburts“-Zeiten).

In UNIX und Linux größtenteils c-time ist der Zeitstempel, der verwendet wird, um den letzten Inode „C“ aufzuzeichnen ‘hängen. Ein Inode ändert sich, wenn eines seiner Attribute aktualisiert wird:

  • Erstellung (OPs Fall)
  • Modus (Berechtigungen)
  • Eigentümer/Gruppe
  • Anzahl fester Links
  • usw. (stat()-Systemaufruf)

OP kann die c-time nicht beibehalten ihrer Dateien, wenn sie auf ein neues Dateisystem gebracht werden. Die Erstellung dieser Dateien in den neuen Dateisystemen ist eine der oben aufgeführten Bedingungen (Erzeugung von Inode/Datei).

/BEARBEITEN


Linux
  1. Wie verwende ich den Rsync-Befehl unter Linux?

  2. Wie kann man unter Linux Binärdateien von Textdateien unterscheiden?

  3. Wie kann ich eine einzelne Datei RSYNC?

  4. Wie programmiert man Linux .dts-Gerätebaumdateien?

  5. Wie teilt man Dolphin mit, welche Dateien versteckt werden sollen?

So schließen Sie Dateien und Verzeichnisse mit Rsync aus

So übertragen Sie Dateien mit Rsync über SSH

So sichern Sie Dateien und Verzeichnisse mit Rsync unter Linux

Rsync zeigt Fortschrittsbalken beim Kopieren von Dateien unter Linux an

Wie spiele ich einen Ton ab, wenn die Skriptausführung bereit ist?

So konfigurieren Sie ein Backup mit rsync unter Ubuntu 18.04