Konkatenierten Pfad mit integiertem Symlink erstellen
Moin zusammen,
ich stehe gerade vor folgendem Problem. Ich habe einen Server mit zwei Partitionen.
/part1 und /part2 zweitere ist so gut wie voll. 1% left...
Folgendes habe ich jetzt gemacht:
1. /part1/xxx/xxx/xxx/thumbs/ori/ -> rsync -av nach /part2/home/user/thumbs_ori
2. ori zu ori_old umbenannt
3. ln -s /part2/home/user/thumbs_ori ori - Also einen symlink mit dem namen des alten ordners auf die zweite partition gebaut.
So weit so gut das läuft... jetzt kommt das Problem.
Es läuft mindestens ein Perl Skript, welches in den Ordner
ori dateien und ordner anlegt, schreibt, löscht. Das Skript
crascht jetzt an folgender stellt.
viel code...
line 10: $pathori="/part1/xxx/xxx/xxx/thumbs/ori";
viel code...
line 50: mkpath("$pathori"."/$number", 1, 0711);
viel code...
Der Logfile output ist: mkdir /part1/xxx/xxx/xxx/thumbs/ori: Die Datei existiert bereits at line 50 im Skript
Wenn wer eine Idee hat, immer her damit. Mein erster Gedanke war: Das Kopieren hat 2h gedauert. In der Zeit hat er vermutlich weitere Dateien im Original Ordner angelegt und jetzt irgendwie ein Problem weil diese im neuen nicht mehr vorhanden sind. Würde es helfen jetzt noch mal ein rsyn zu machen von ori_old in den thumbs_ori Ordner? Und was macht er dann? Kopiert er nur die Änderungen oder alles und überschreibt alles noch mal?
Ich hatte noch die Vermutung das der symlink hart ersetzt wird und das dann sowas wie /part1/xxx/xxx/xxx/thumbs/part2/home/user/thumbs_ori daraus wird aber ich bin dafür zu sehr Anfänger.
Viele Grüße
Maveric
ich stehe gerade vor folgendem Problem. Ich habe einen Server mit zwei Partitionen.
/part1 und /part2 zweitere ist so gut wie voll. 1% left...
Folgendes habe ich jetzt gemacht:
1. /part1/xxx/xxx/xxx/thumbs/ori/ -> rsync -av nach /part2/home/user/thumbs_ori
2. ori zu ori_old umbenannt
3. ln -s /part2/home/user/thumbs_ori ori - Also einen symlink mit dem namen des alten ordners auf die zweite partition gebaut.
So weit so gut das läuft... jetzt kommt das Problem.
Es läuft mindestens ein Perl Skript, welches in den Ordner
ori dateien und ordner anlegt, schreibt, löscht. Das Skript
crascht jetzt an folgender stellt.
viel code...
line 10: $pathori="/part1/xxx/xxx/xxx/thumbs/ori";
viel code...
line 50: mkpath("$pathori"."/$number", 1, 0711);
viel code...
Der Logfile output ist: mkdir /part1/xxx/xxx/xxx/thumbs/ori: Die Datei existiert bereits at line 50 im Skript
Wenn wer eine Idee hat, immer her damit. Mein erster Gedanke war: Das Kopieren hat 2h gedauert. In der Zeit hat er vermutlich weitere Dateien im Original Ordner angelegt und jetzt irgendwie ein Problem weil diese im neuen nicht mehr vorhanden sind. Würde es helfen jetzt noch mal ein rsyn zu machen von ori_old in den thumbs_ori Ordner? Und was macht er dann? Kopiert er nur die Änderungen oder alles und überschreibt alles noch mal?
Ich hatte noch die Vermutung das der symlink hart ersetzt wird und das dann sowas wie /part1/xxx/xxx/xxx/thumbs/part2/home/user/thumbs_ori daraus wird aber ich bin dafür zu sehr Anfänger.
Viele Grüße
Maveric
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 201059
Url: https://administrator.de/forum/konkatenierten-pfad-mit-integiertem-symlink-erstellen-201059.html
Ausgedruckt am: 23.12.2024 um 10:12 Uhr
6 Kommentare
Neuester Kommentar
Hallo Maveric,
rsync hat auch eine -z Option, dann werden die Dateien vor dem Kopieren komprimiert. Das bringt Geschwindigkeitsvorteile, allerdings nur, wenn sich die Dateien auch komprimieren lassen (bei Text besonders viel).
Ich hatte noch die Vermutung das der symlink hart ersetzt wird und das dann sowas wie
/part1/xxx/xxx/xxx/thumbs/part2/home/user/thumbs_ori daraus wird aber ich bin dafür zu sehr Anfänger.
Viele Grüße
Maveric
Was macht denn die Funktion mkpath genau? und wo kommt $number her?
Also der Link mit dem o.g. Befehl ist ein symbolischer Link.
Das Problem scheint zu sein, dass Du das Perlskript und rsync gleichzeitig laufen lässt. Du müsstest aber das Perlskript vorher anhalten. Anderenfalls müsstest Du in dem Perlskript implementieren, dass es testet ob eine Datei bereits vorhanden ist. Allerdings bringt es vermutlich nichts, für die vorliegende Aufgabe das Skript zu ändern (mit der Aussicht auf neue Fehler).
Markus
Zitat von @Maveric:
...
line 10: $pathori="/part1/xxx/xxx/xxx/thumbs/ori";
viel code...
line 50: mkpath("$pathori"."/$number", 1, 0711);
viel code...
Der Logfile output ist: mkdir /part1/xxx/xxx/xxx/thumbs/ori: Die Datei existiert bereits at line 50 im Skript
Wenn wer eine Idee hat, immer her damit. Mein erster Gedanke war: Das Kopieren hat 2h gedauert. In der Zeit hat er vermutlich
weitere Dateien im Original Ordner angelegt und jetzt irgendwie ein Problem weil diese im neuen nicht mehr vorhanden sind.
Würde es helfen jetzt noch mal ein rsyn zu machen von ori_old in den thumbs_ori Ordner? Und was macht er dann? Kopiert er nur
die Änderungen oder alles und überschreibt alles noch mal?
Wie der Name schon sagt, rsync synchronisiert, das heißt, es werden nur die Dateien kopiert, die noch nicht am Zielort vorhanden sind....
line 10: $pathori="/part1/xxx/xxx/xxx/thumbs/ori";
viel code...
line 50: mkpath("$pathori"."/$number", 1, 0711);
viel code...
Der Logfile output ist: mkdir /part1/xxx/xxx/xxx/thumbs/ori: Die Datei existiert bereits at line 50 im Skript
Wenn wer eine Idee hat, immer her damit. Mein erster Gedanke war: Das Kopieren hat 2h gedauert. In der Zeit hat er vermutlich
weitere Dateien im Original Ordner angelegt und jetzt irgendwie ein Problem weil diese im neuen nicht mehr vorhanden sind.
Würde es helfen jetzt noch mal ein rsyn zu machen von ori_old in den thumbs_ori Ordner? Und was macht er dann? Kopiert er nur
die Änderungen oder alles und überschreibt alles noch mal?
rsync hat auch eine -z Option, dann werden die Dateien vor dem Kopieren komprimiert. Das bringt Geschwindigkeitsvorteile, allerdings nur, wenn sich die Dateien auch komprimieren lassen (bei Text besonders viel).
Ich hatte noch die Vermutung das der symlink hart ersetzt wird und das dann sowas wie
/part1/xxx/xxx/xxx/thumbs/part2/home/user/thumbs_ori daraus wird aber ich bin dafür zu sehr Anfänger.
Viele Grüße
Maveric
Also der Link mit dem o.g. Befehl ist ein symbolischer Link.
Das Problem scheint zu sein, dass Du das Perlskript und rsync gleichzeitig laufen lässt. Du müsstest aber das Perlskript vorher anhalten. Anderenfalls müsstest Du in dem Perlskript implementieren, dass es testet ob eine Datei bereits vorhanden ist. Allerdings bringt es vermutlich nichts, für die vorliegende Aufgabe das Skript zu ändern (mit der Aussicht auf neue Fehler).
Markus
Zitat von @Maveric:
...
Den rsync habe ich manuell gemacht um die Daten zu verschieben/kopieren. Das Problem das beides gleichzeitig läuft gibt es
also nicht. Das Perl Skript läuft alle 30min und aktualisiert die Ordner legt neue an usw.
Moment, das verstehe ich nicht. Wenn das Perlskript alle 30 Minuten läuft und der rsync-Vorgang zwei Stunden dauert, dann überschneiden die sich doch? oder habe ich das falsch verstanden?...
Den rsync habe ich manuell gemacht um die Daten zu verschieben/kopieren. Das Problem das beides gleichzeitig läuft gibt es
also nicht. Das Perl Skript läuft alle 30min und aktualisiert die Ordner legt neue an usw.
Markus
Edit: Du kannst auch den rsync-Vorgang für die Zeit in der das Perlskript läuft jeweils anhalten und danach fortsetzen.
Naja, das ist immer noch nicht verständlich, jedenfalls für mich. Während der zwei Stunden in denen die Daten kopiert wurden, müsste doch das Perlskript 4 mal gelaufen sein???