Après avoir obtenu la réponse de Stephen Kitt et discuté de cette commande en tant que solution potentielle:
sudo mv -i ~/my_data_on_60GB_partition/* /media/admin/my_data/
J'ai décidé de m'arrêter jusqu'à ce que je comprenne ce qui se passait, cette réponse décrit ce que j'ai découvert et que j'ai fini par faire.
J'utilise Gnu mv
qui copie les fichiers sur la cible, puis seulement si l'opération de copie réussit, elle supprime l'original.
Cependant, je voulais vérifier si mv
cette séquence est exécutée un fichier à la fois. Si cela était vrai, le contenu du dossier original aurait été proprement découpé en deux parties, une partie déplacée vers la destination, l'autre restant à la source. Et peut-être y aurait-il un fichier qui aurait été interrompu pendant la copie et qui serait commun entre les deux répertoires - et il serait probablement mal formé.
Pour découvrir les fichiers communs entre les deux répertoires, j'ai exécuté:
~% sudo diff -r --report-identical-files my_data_on_60GB_partition/. /media/admin/mydata/. | grep identical | wc -l
14237
Ce résultat suggère qu'il y a 14 237 instances des mêmes fichiers dans les répertoires source et cible, ce que j'ai confirmé en vérifiant les fichiers manuellement - oui, il y avait beaucoup de fichiers identiques dans les deux répertoires. Cela suggère que c'est seulement après la mv
copie de grandes quantités de fichiers qu'il supprime les fichiers source. Une recherche rapide info
sur mv
commande a montré
Il mv
utilise tout d'abord le même code que celui utilisé cp -a
pour copier les répertoires et les fichiers demandés, puis supprime les originaux (en supposant que la copie soit réussie). Si la copie échoue, la partie copiée sur la partition de destination est supprimée.
Je n'ai pas exécuté la commande mais je soupçonne que si j'ai essayé de courir
sudo mv -i ~/my_data_on_60GB_partition/* /media/admin/my_data/
L' -i
invite avant de remplacer aurait probablement déclenché plus de 14 000 fois.
Alors, pour savoir combien de fichiers se trouvent dans le répertoire nouvellement créé:
~% sudo find my_data_on_60GB_partition/ -type f -a -print | wc -l
14238
Ainsi, s'il y avait un total de 14238 fichiers ordinaires dans le nouveau répertoire et que 14237 avaient des originaux identiques dans la source, cela signifie qu'il n'y avait qu'un seul fichier dans le nouveau répertoire qui ne contenait pas de fichier identique correspondant dans la source. Pour savoir en quoi consistait ce fichier, j’ai renvoyé rsync dans le sens source:
~% sudo rsync -av --dry-run my_data_on_60GB_partition/ /media/admin/my_data
sending incremental file list
./
Education_learning_reference/
Education_learning_reference/Business_Education/
Education_learning_reference/Business_Education/Business_education_media_files/
Education_learning_reference/Business_Education/Business_education_media_files/Jeff Hoffman - videos/
Education_learning_reference/Business_Education/Business_education_media_files/Jeff Hoffman - videos/Jeff and David F interview/
Education_learning_reference/Business_Education/Business_education_media_files/Jeff Hoffman - videos/Jeff and David F interview/018 business plans-identifying main KPIs.flv
sent 494,548 bytes received 1,881 bytes 330,952.67 bytes/sec
total size is 1,900,548,824 speedup is 3,828.44 (DRY RUN)
Une vérification rapide a confirmé qu'il s'agissait du fichier mal formé, où il existait à la fois sur la source et la destination, fichier de destination = 64 Mo, original = 100 Mo. Ce fichier et sa hiérarchie de répertoires appartenaient toujours à root et les autorisations d'origine n'avaient pas encore été restaurées.
Donc en résumé:
- tous les fichiers qui
mv
n'ont jamais été atteints sont toujours dans leur emplacement d'origine (évidemment)
- tous les fichiers qui
mv
ont été copiés complètement avaient toujours leurs copies originales dans le répertoire source
- le fichier qui n'a été que partiellement copié avait toujours l'original dans le répertoire source
En d'autres termes, tous les fichiers d'origine étaient encore intacts et la solution dans ce cas était simplement de supprimer le nouveau répertoire!
Control-Z
(pour faire une pause) plutôt queControl-C
. Dans ce cas, vous pourrez alors voir quel fichier a été transféré à ce moment-là et ainsi savoir quel fichier n'a été que partiellement copié. Vous pouvez alors décider calmement de la manière de procéder. (Utilisezkill -stop
pour les processus pas dans le tty).