Differenza su sottodirectory di grandi dimensioni non riesce

0

Sto confrontando due grandi directory su due dischi esterni FireWire 800 usando

diff -r /path/to/directory1 /path/to/directory2 

La dimensione della directory (e delle sue sottodirectory) su un disco FireWire è 118.2 GB per 30.000 elementi e 119.56 GB per 30.031 elementi.

Sono rimasto sorpreso dalle molte differenze riportate nell'output, come

Binary files /path/to/directory1/with/subdirectory/file_xyz and /path/to/directory2/with/subdirectory/file_xyz differ

e ha iniziato a confrontare alcuni di essi individualmente. Quando li paragono con

diff /path/to/directory1/with/subdirectory/with/subdirectory/file_xyz /path/to/directory2/with/subdirectory/with/subdirectory/file_xyz

o anche

diff  /path/to/directory1/with/subdirectory/ /path/to/directory2/with/subdirectory/ 

diff non riporta alcuna differenza tra questi file o directory.

Quale potrebbe essere una ragione per cui il "confronto di grandi dimensioni" riporta così tante differenze (o apparentemente fallisce), mentre il confronto tra blocchi più piccoli non lo fa?
Modifiche dal post originale:

  1. La versione di diff che sto usando è GNU diffutils 2.8.1.
  2. Solo una congettura sfrenata qui, ma potrebbe avere qualcosa a che fare con il fatto che queste directory sono su hard disk esterni che potrebbero verificarsi una sorta di timeout?
  3. Ho eseguito un altro confronto e sono stato nuovamente presentato con molte differenze tra quelle directory. Ho quindi impostato il Risparmio energia della preferenza di sistema per non impostare il display in modalità di sospensione per 1 ora, poiché avevo misurato con time diff -r /path/to/directory1 /path/to/directory2 che sono necessari tra 45 e 50 minuti per la fine del diff. I miei dischi rigidi e il Mac non vanno mai a dormire. Ho quindi smontato entrambi i dischi e li ho rimontati. Suona nuovamente il diff e voilà non trova differenze a parte un file. Ho confrontato manualmente quello che ho segnalato un file diverso e l'ho trovato identico.
    Questo sembra confermare ciò che ho trovato confrontando i blocchi più piccoli in precedenza. Sembra anche confermare l'esistenza di un timeout come sospettato in precedenza, ma mi chiedo ancora che se un drive FireWire diventerebbe non disponibile o qualsiasi altra cosa, diff non dovrebbe riportare una differenza, ma piuttosto dire "file non disponibile" o "Solo in / yada / yada / directory: file_xyz".
    È interessante notare che il diff prima della rimonta ha impiegato 28 minuti, dopo la rimonta ci sono voluti quasi 51 minuti.
    Alla luce di ciò : Cosa posso fare per evitare che succeda qualcosa del genere?
    Ovviamente si potrebbe dire di non impostare mai il display per andare a dormire o altro, ma difficilmente sembra risolvere il problema sottostante. Qualcos'altro deve succedere, non riesco proprio a capire cosa.

    Per inciso, in altre precedenti occasioni, dopo un po 'di inattività su quei dischi rigidi FireWire stavo cercando di scrivere su un file e ha ottenuto questo messaggio di errore codice -50 "(badate bene che non l'ho visto durante l'operazione di diff). Potrei sempre" risolvere "il problema smontando e rimontando le unità, ma credo che ci sia una differenza completamente diversa soluzione a questo:

    Lesoluzioni come quelle presentate qui difficilmente sembrano affrontare il problema di fondo.
posta Alex Ixeras 20.09.2017 - 12:32
fonte

1 risposta

0

Per una settimana ho provato un soluzione consigliata Ho trovato su iFixit, quando qualcuno ha riscontrato un codice di errore -50 su un HD esterno. Sembra risolvere il problema che ho avuto. Ho anche trovato codice di errore -50 prima quando ho provato a copiare i file, ma non l'ho collegato immediatamente al mio problema di diffs difettosi. Avevo il sospetto che qualche inattività sugli hard disk esterni fosse responsabile per l'errore e l'articolo sembra confermarlo. Per citare da lì la soluzione, dovresti incontrare problemi simili:

To work around this error you'll want to go into System Preferences->Energy Saver and for both Battery and Power Adapter tick the box next to "Put the hard disk(s) to sleep when possible" on your computer. Yes that means the OS will put all of your drives to sleep when it can but that's the only way I've found to fix the problem.

What seems to happen is that some external drives have firmware which detects inactivity and spins the drives down. If OSX is not configured with the energy saver setting mentioned above then OSX is not expecting the drives to go to sleep. When accessing the drive after it puts itself to sleep obviously something gets messed up and the error -50 is thrown among other problems.

By configuring the OS to put disks to sleep the OS will issue spin-up commands.


L'unica cosa che mi imbarazza o sorprende è perché diff riporta le differenze effettive nei file, quando in realtà non può accedere (?) al file in modo corretto.

    
risposta data 27.09.2017 - 08:02
fonte

Leggi altre domande sui tag