Von Zeit zu Zeit muss ich mehrere große Migrationsänderungen an Datendateien auf meinem Server vornehmen, und ich suche nach einer guten Möglichkeit, dies zu tun. Ich habe darüber nachgedacht, meine Verzeichnisstruktur mit rsync zu duplizieren, beginnend mit dem Stammdatenordner, und feste Links zu allen Originaldateien zu erstellen (einige davon sind ziemlich groß). Außerdem kann ich im Zielbaum nur die Dateien überschreiben, die migriert werden müssen. Am Ende kann ich mit zwei mv
Operationen sicher von den alten Dateien auf die neuen Dateien wechseln .
Es scheint jedoch nicht möglich zu sein, Rsync dazu zu bringen. Ich habe es versucht
rsync -a --link-dest=$DATA $DATA $DATA/../upgrade_tmp
Anstatt feste Verknüpfungen zu Dateien zu erstellen, kopiert rsync diese vollständig. Gibt es ein Problem mit demselben Quell- und Linkzielverzeichnis?
ls -ilah
$SOURCE
Verzeichnis in ein Verzeichnis$TARGET
wie das folgende zu sichern :SOURCE='abs_path_to_backup'; TARGET='.'; rsync -a --link-dest=$(relpath $TARGET $SOURCE) $SOURCE/ $TARGET/
Was Sie wollen, ist "cp -al":
rsync -a
quelle
cp -al
ist auf meinem System leider nicht verfügbar (Mac OS X 10.6). Ich werde stattdessen Pax verwenden ...Die
--link-dest
Option inrsync
ist relativ zum Zielverzeichnis und nicht zum aktuellen Verzeichnis. Also, was Sie wollen, ist:quelle
--link-dest
Option, wenn sie relativ ist, relativ zum Zielverzeichnis ist. In meinem Fall ist es absolut. Selbst wenn es relativ zum Zielverzeichnis erstellt wird, funktioniert dies nicht.Es stellt sich heraus, dass dies schwieriger ist
rsync
als mit anderen Werkzeugen. Die richtige Antwortrsync
lautet Steven Monais, aber der einfachste Weg, dies zu tun, besteht darin, entweder ein Systemcp -al
oderpax -rwl
ein System zu verwenden, für-l
das keine gültige Option bestehtcp
:oder
quelle
Für mich geht das:
Ich benutze rsync Version 3.1.0.
Vom Menschen :
quelle
Sie können versuchen, dem Link http://www.lessfs.com/wordpress/ zu folgen. Es handelt sich um eine COW-Funktion (Copy on Write), die Zeit und Platz spart
quelle
Erstellen Sie zuerst die Verzeichnisse nur auf dem Ziel:
Dann verlinke nur die Dateien:
quelle
pax
wie in meinem Kommentar oben gezeigt, was einfacher zu sein scheint.Verwenden Sie die Option -H, um Hardlinks beizubehalten und die Manpage zu lesen.
quelle