I a manqué d'espace sur /home/data
Et devez transférer /home/data/repo
Sur /home/data2
.
/home/data/repo
Contient des DIRS de 1M, chacun contenant 11 DIRS et 10 fichiers. Il totalise 2 To.
/home/data
Est sur EXT3 avec DIR_IDEX activé. /home/data2
Est sur ext4. Centos de course 6.4.
Je suppose que ces approches sont lentes en raison du fait que repo/
Comporte 1 million d'adultes directement sous elle.
mv
est rapide mais est interrompuJe pourrais être fait si cela avait fini:
/home/data> mv repo ../data2
Mais il a été interrompu après que 1,5 To a été transféré. Il écrivait à environ 1 Go/min.
rsync
rampe après 8 heures de liste de fichiers de construction/home/data> rsync --ignore-existing -rv repo ../data2
Il a fallu plusieurs heures pour construire la "liste de fichiers incrémentiels", puis il transfère à 100 Mo/min.
Je l'annule pour essayer une approche plus rapide.
mv
se plaintTestez-le sur un sous-répertoire:
/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
Je ne suis pas sûr de quoi il s'agit d'erreur, mais peut-être que cp
peut me renfrogné ..
cp
ne devient nulle part après 8 heures/home/data> cp -nr repo ../data2
Il lit le disque pendant 8 heures et je décide de l'annuler et de revenir à rsync.
rsync
rampe après 8 heures de liste de fichiers de construction/home/data> rsync --ignore-existing --remove-source-files -rv repo ../data2
J'ai utilisé --remove-source-files
Je pense que cela pourrait le rendre plus rapide si je commence à nettoyer maintenant.
Il faut au moins 6 heures pour construire la liste des fichiers, puis elle transfère à 100-200 Mo/min.
Mais le serveur était chargé du jour au lendemain et ma connexion fermée.
/home/data> rsync --ignore-existing --remove-source-files -rvW repo ../data2
Interrompu à nouveau. Le -W
A presque semblé faire "Envoi de liste de fichiers incrémentiels" plus rapidement, ce qui, à ma compréhension, ne devrait pas avoir de sens. Peu importe, le transfert est horriblement lent et je renonce à celui-ci.
tar
/home/data> Nohup tar cf - . |(cd ../data2; tar xvfk -)
Essentiellement tenter de tout recopier mais ignorer les fichiers existants. Il doit atterrir jusqu'au 1,7 To de fichiers existants, mais au moins il lit à 1,2 Go/min.
Jusqu'à présent, il s'agit de la seule commande qui donne une gratification instantanée.
Mise à jour: à nouveau interrompue, d'une manière ou d'une autre, même avec NOHUP ..
Débattre toujours celui-ci
mv
Le directeur de destination avait environ 120 000 Dirts vides, alors j'ai couru
/home/data2/repo> find . -type d -empty -exec rmdir {} \;
Écran Ruby:
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
DONE.
Avez-vous déjà entendu parler de fractionnement de grandes tâches dans des tâches plus petites?
/ Accueil/Data/Repos contient des DIRS de 1M, chacun contenant 11 DIRS et 10 fichiers. Il totalise 2 To.
rsync -a /source/1/ /destination/1/
rsync -a /source/2/ /destination/2/
rsync -a /source/3/ /destination/3/
rsync -a /source/4/ /destination/4/
rsync -a /source/5/ /destination/5/
rsync -a /source/6/ /destination/6/
rsync -a /source/7/ /destination/7/
rsync -a /source/8/ /destination/8/
rsync -a /source/9/ /destination/9/
rsync -a /source/10/ /destination/10/
rsync -a /source/11/ /destination/11/
(...)
Temps de pause café.
C'est ce qui se passe:
Même si rsync est lent (pourquoi est-ce lent? Peut-être -ez -ez -ez aidera) ça sonne comme si vous avez beaucoup progressé, vous pourriez donc continuer à essayer:
Si vous avez utilisé --ReMove-Source-Files, vous pouvez ensuite suivre en supprimant les répertoires vides. --ReMove-Source-Files supprimera tous les fichiers, mais laissera les répertoires là-bas.
Assurez-vous simplement que vous Ne pas Utilisez --ReMove-Source-Files avec -Delete pour effectuer plusieurs passes.
Aussi pour une vitesse accrue, vous pouvez utiliser --Enface
Si vous obtenez des coups de bottes parce que vous essayez de le faire à distance sur un serveur, allez-y et exécutez cela à l'intérieur d'une session d'écran. De cette façon, vous pouvez le laisser courir.