Dopo aver ottenuto la risposta di Stephen Kitt e aver discusso questo comando come una potenziale soluzione:
sudo mv -i ~/my_data_on_60GB_partition/* /media/admin/my_data/
Ho deciso di smettere di gestirlo fino a quando non ho avuto la testa su ciò che stava accadendo, questa risposta descrive ciò che ho scoperto e ho finito per fare.
Sto usando Gnu mv
che copia i file sulla destinazione, quindi solo se l'operazione di copia ha esito positivo, elimina l'originale.
Tuttavia, volevo confermare se mv
esegue questa sequenza un file alla volta, se ciò fosse vero, il contenuto della cartella originale sarebbe stato suddiviso in due parti, una parte spostata a destinazione, l'altra ancora lasciata alla fonte. E forse ci sarebbe stato un file che era stato interrotto durante la copia che sarebbe comune tra le due directory - e sarebbe probabilmente malformato.
Per scoprire i file comuni tra le due directory, ho eseguito:
~% sudo diff -r --report-identical-files my_data_on_60GB_partition/. /media/admin/mydata/. | grep identical | wc -l
14237
Questo risultato ha suggerito che c'erano 14.237 istanze degli stessi file in entrambe le directory di origine e di destinazione, ho confermato controllando i file manualmente - sì, c'erano molti degli stessi file in entrambe le directory. Ciò suggerisce che solo dopo mv
copie grandi quantità di file esegue l'eliminazione dei file di origine. Una rapida occhiata info
al mv
comando mostrò
Per mv
prima cosa usa parte dello stesso codice utilizzato cp -a
per copiare le directory e i file richiesti, quindi (supponendo che la copia sia riuscita) rimuove gli originali. Se la copia non riesce, la parte che è stata copiata nella partizione di destinazione viene rimossa.
Non ho eseguito il comando ma sospetto che se avessi provato a eseguire
sudo mv -i ~/my_data_on_60GB_partition/* /media/admin/my_data/
Il -i
prompt prima della sovrascrittura probabilmente si sarebbe attivato più di 14.000 volte.
Quindi, per scoprire quanti file totali nella directory appena creata:
~% sudo find my_data_on_60GB_partition/ -type f -a -print | wc -l
14238
Quindi, se c'erano un totale di 14238 file regolari nella nuova directory e 14237 avevano originali identici nella sorgente, ciò significa che c'era un solo file nella nuova directory che non aveva un file identico corrispondente nella sorgente. Per scoprire quale fosse quel file, ho eseguito rsync indietro nella direzione del sorgente:
~% 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)
Un rapido controllo ha confermato che si trattava del file non valido, in cui il file esisteva sia sull'origine che sulla destinazione, file di destinazione = 64 MB, originale = 100 MB. Questo file e la sua gerarchia di directory erano ancora di proprietà di root e non avevano ancora ripristinato le autorizzazioni originali.
Quindi in sintesi:
- tutti i file che
mv
non sono mai stati raggiunti sono ancora nella loro posizione originale (ovviamente)
- tutti i file che
mv
hanno copiato completamente avevano ancora le loro copie originali nella directory di origine
- il file che era stato copiato solo parzialmente aveva ancora l'originale nella directory di origine
In altre parole, tutti i file originali erano ancora intatti e la soluzione in questo caso era semplicemente eliminare la nuova directory!
Control-Z
(per mettere in pausa) piuttosto cheControl-C
. In questo caso, sarai quindi in grado di vedere quale file è stato trasferito in quel momento e quindi sapere quale file è stato copiato solo parzialmente. Puoi quindi decidere con calma su come procedere. (Utilizzarekill -stop
per processi non inclusi in tty).