Hintergrund
Ich lief aus dem Raum auf /home/dataund Notwendigkeit der Übertragung /home/data/repoan /home/data2.
/home/data/repoenthält 1M Verzeichnisse, von denen jedes 11 Verzeichnisse und 10 Dateien enthält. Es beläuft sich auf 2 TB.
/home/dataist auf ext3 mit dir_index aktiviert.
/home/data2ist auf ext4. Ausführen von CentOS 6.4.
Ich repo/gehe davon aus, dass diese Ansätze langsam sind, da 1 Million Verzeichnisse direkt darunter liegen.
Versuch 1: mvist schnell, wird aber unterbrochen
Ich könnte fertig sein, wenn dies beendet wäre:
/home/data> mv repo ../data2
Aber es wurde unterbrochen, nachdem 1,5 TB übertragen wurden. Es wurde mit ca. 1GB / min geschrieben.
Versuch 2: rsyncCrawlt nach 8 Stunden Erstellen der Dateiliste
/home/data> rsync --ignore-existing -rv repo ../data2
Das Erstellen der inkrementellen Dateiliste dauerte mehrere Stunden und die Übertragung erfolgte mit 100 MB / min.
Ich storniere es, um einen schnelleren Ansatz zu versuchen.
Versuch 3a: mvbeschwert sich
Testen Sie es in einem Unterverzeichnis:
/home/data/repo> mv -f foobar ../../data2/repo/
mv: inter-device move failed: '(foobar)' to '../../data2/repo/foobar'; unable to remove target: Is a directory
Ich bin mir nicht sicher, worum es bei diesem Fehler geht, aber vielleicht cpkann ich mich retten.
Versuch 3b: cpkommt nach 8 Stunden nirgendwo hin
/home/data> cp -nr repo ../data2
Der Datenträger wird 8 Stunden lang gelesen, und ich beschließe, ihn abzubrechen und zu rsync zurückzukehren.
Versuch 4: rsyncCrawlt nach 8 Stunden Erstellen der Dateiliste
/home/data> rsync --ignore-existing --remove-source-files -rv repo ../data2
Ich --remove-source-filesdachte, es könnte schneller gehen, wenn ich jetzt mit dem Aufräumen beginne.
Es dauert mindestens 6 Stunden, um die Dateiliste zu erstellen, und anschließend werden Daten mit einer Geschwindigkeit von 100-200 MB / min übertragen.
Aber der Server wurde über Nacht belastet und meine Verbindung geschlossen.
Versuch 5: Es sind nur noch 300 GB übrig, um sich zu bewegen, warum dies so schmerzhaft ist
/home/data> rsync --ignore-existing --remove-source-files -rvW repo ../data2
Wieder unterbrochen. Das -Wschien das "Versenden inkrementeller Dateilisten" fast zu beschleunigen, was meines Erachtens keinen Sinn ergeben sollte. Ungeachtet dessen ist die Übertragung schrecklich langsam und ich gebe diese auf.
Versuch 6: tar
/home/data> nohup tar cf - . |(cd ../data2; tar xvfk -)
Grundsätzlich wird versucht, alles neu zu kopieren, aber vorhandene Dateien werden ignoriert. Es muss 1,7 TB der vorhandenen Dateien durchwühlen, liest jedoch mindestens mit 1,2 GB / min.
Bisher ist dies der einzige Befehl, der sofortige Befriedigung gibt.
Update: wieder irgendwie unterbrochen, auch mit nohup ..
Versuch 7: Harakiri
Debattiere immer noch darüber
Versuch 8: Zusammenführen mit Skript mv
Das Zielverzeichnis hatte ungefähr 120.000 leere Verzeichnisse, also bin ich gelaufen
/home/data2/repo> find . -type d -empty -exec rmdir {} \;
Ruby-Skript:
SRC = "/home/data/repo"
DEST = "/home/data2/repo"
`ls #{SRC} --color=never > lst1.tmp`
`ls #{DEST} --color=never > lst2.tmp`
`diff lst1.tmp lst2.tmp | grep '<' > /home/data/missing.tmp`
t = `cat /home/data/missing.tmp | wc -l`.to_i
puts "Todo: #{t}"
# Manually `mv` each missing directory
File.open('missing.tmp').each do |line|
dir = line.strip.gsub('< ', '')
puts `mv #{SRC}/#{dir} #{DEST}/`
end
GETAN.
mvnochmal? Theoretisch mvwird eine Quelldatei nur gelöscht, wenn die Zieldatei vollständig kopiert wurde, sodass sie ordnungsgemäß funktionieren sollte . Haben Sie auch physischen Zugriff auf das Gerät oder erfolgt dies über eine sshVerbindung?
mvist nicht verzeihend, wenn Sie immer wieder getrennt werden, können Sie Daten verlieren und wissen es nicht einmal. Wie Sie sagten, Sie tun dies über ssh, empfehle ich mit screenund trennen. Aktivieren Sie die Protokollierung und verfolgen Sie diese. Wenn Sie ausführlich sprechen, dauert es nur länger. Versuchen Sie auchiotop
screen. Ich habe mich über Verbose gewundert, aber ich denke, es ist zu spät, um tarjetzt neu zu starten . Und iotopwar in den letzten Tagen mein Lieblingsdienstprogramm :)