esclude i file socket durante diff -r


0

diffha un'opzione --recursive( -r) per fare un confronto tra due directory (i file al loro interno). C'è un modo per far diffignorare tutti i file socket e solo i file socket?

Sto usando diff --brief -r --no-dereference /var/ /media/mateusz/Database/tmp/duplicity_unpack/var/per verificare parte del mio backup e sono invaso da voci come Only in /var/lib/samba/private/msg.sock: 10001. Questi file sono file socket che Duplicity non è riuscito a eseguire il backup e non indica un backup non riuscito.

Sono consapevole del fatto che potrei scrivere la mia elaborazione dell'output ma ha il potenziale per i bug, richiede più tempo e richiede di mantenere l'elenco dei file socket nel filesystem.

Si noti che le cartelle vuote non devono essere ignorate nel confronto.

Risposte:


1

Non penso che questo sia possibile con diffse stesso senza modifiche al codice. Dovrai utilizzare findper elencare i file richiesti, a cui puoi passare diffsenza ricorsione:

find /var/ -type f -exec diff {} /media/mateusz/Database/tmp/duplicity_unpack{} \;

Questo trova solo i file normali, poiché non vedo alcun senso nel chiamare diffcon qualsiasi altro tipo, quindi nessun socket, FIFO, directory, file di dispositivo, ecc.


Ci proverò, ma temo che morirà su una grande quantità di file ...
Mateusz Konieczny,

Non dovresti avere problemi: diffha solo due file per ogni chiamata e findnon ha limiti noti sul numero di file, anche se immagino che ci debba essere un limite ultimo alla profondità e alla lunghezza dei percorsi. Puoi elencare tutti i file nel tuo filesystem di root con find /, quindi non find /var/dovrebbe presentare alcuna difficoltà.
AFH,

Questo ha un grave problema: è cieco svuotare le cartelle. Per qualche motivo, find considera i file socket come directory ( -type f -o -type driporta i socket).
Mateusz Konieczny,

@MateuszKonieczny - Non capisco il tuo commento a tutti: findnon non corrispondere prese sul -type d(almeno, non su Ubuntu), l'interrogante vuole escludere la prese, e diffnon gestisce le directory (tranne implicitamente -r). Per trovare le prese, utilizzare -type s.
AFH,

"find non corrisponde ai socket sul tipo d (almeno, non su Ubuntu)" come ho capito (vedi ad esempio superuser.com/review/suggested-edits/552975 ) porta a elencarli
Mateusz Konieczny
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.